私有云平台实战-OpenStack

文章目录

#1.1OpenStack核心组件和功能

#2.1OpenStack案例环境

2.1.1创建实例

2.1.2绑定浮动IP地址

2.1.3添加安全组规则

2.1.4创建密钥对

2.1.5创建及使用卷挂载

2.1.6快照管理


1.1OpenStack核心组件和功能

Keystone(身份认证与授权服务)

复制代码
 #### 作为 OpenStack 的 "安全网关",所有组件的访问都需要通过 Keystone 的认证。
复制代码
 #### 核心功能包括:用户管理(创建、删除、权限设置)、角色定义(如管理员、普通用户)、项目划分(资源隔离的逻辑单位,类似 "租户")、令牌管理(生成临时访问令牌,验证请求合法性)。
复制代码
 #### 支持多种认证方式,如密码、密钥对、LDAP 集成等,确保资源访问的安全性。

Glance(镜像服务)

复制代码
 #### 相当于虚拟机的 "模板仓库",存储的镜像包含操作系统、预装软件等,可直接用于创建 Nova 虚拟机实例。
复制代码
 #### 支持多种镜像格式(如 QCOW2、RAW、VMDK 等),并能与 Swift(对象存储)等集成实现镜像的持久化存储和分布式管理。
复制代码
 #### 提供镜像版本控制、元数据管理(如镜像大小、操作系统类型)等功能。

Nova(计算服务)

复制代码
 #### OpenStack 的 "计算引擎",负责虚拟机实例的全生命周期管理:从基于 Glance 镜像创建实例,到根据资源负载调度实例到合适的物理节点,再到实例的启停、迁移、删除等。
复制代码
 #### 本身不直接提供虚拟化能力,而是通过调用底层虚拟化技术(如 KVM、Xen、Docker 等)实现虚拟机管理。
复制代码
 #### 依赖 Neutron 提供网络、Cinder 提供存储,与 Keystone 交互进行权限验证。

Neutron(网络服务)

复制代码
 #### 提供 "虚拟网络基础设施",让虚拟机实例像物理机一样拥有独立的网络配置。
复制代码
 #### 核心功能包括:虚拟交换机(vSwitch)、虚拟路由器(vRouter)、IP 地址分配(DHCP)、安全组(防火墙规则)、负载均衡、VPN 等。
复制代码
 #### 支持多种网络模式(如 VLAN、VXLAN),可实现不同项目 / 租户间的网络隔离,满足多租户场景需求。

Cinder(块存储服务)

复制代码
 #### 为虚拟机提供 "持久化块存储",类似物理机的硬盘,即使虚拟机删除,存储卷的数据也能保留。
复制代码
 #### 支持卷的创建、挂载、卸载、快照(备份)、扩容等操作,可与 Nova 集成,直接为虚拟机分配存储卷。
复制代码
 #### 底层可对接多种存储后端(如本地硬盘、SAN 存储、Ceph 等),提供高可用和性能优化。

Horizon(Web 管理界面)

复制代码
 #### OpenStack 的 "可视化控制台",通过 Web 界面将上述所有组件的功能整合,方便用户(无需命令行)进行资源管理,如创建虚拟机、配置网络、上传镜像等。
复制代码
 #### 支持多租户视图隔离,不同用户只能看到自己有权限的资源,操作逻辑与组件 API 一一对应。

其他常用组件

Swift(对象存储服务):用于存储非结构化数据(如图片、文档、日志等),采用分布式架构,适合海量数据的持久化存储,可独立于虚拟机存在,常作为 Glance 的后端存储或单独提供对象存储服务。

Trove(数据库服务):提供托管的数据库服务,支持 MySQL、PostgreSQL 等主流数据库,自动完成数据库的部署、备份、扩容等运维工作,简化用户的数据库管理。

Heat(编排服务):通过 "模板" 定义云计算资源(如虚拟机、网络、存储的组合),实现资源的自动化部署和生命周期管理,适合复杂应用的一键部署(如多节点集群)。

Ceilometer(计量服务):监控 OpenStack 资源的使用情况(如虚拟机运行时间、网络流量、存储占用),为计费、资源优化提供数据支持。

组件间的协同关系

OpenStack 的组件通过统一的 API 和消息队列(如 RabbitMQ)协同工作,例如:

用户通过 Horizon 发起创建虚拟机的请求,请求先经 Keystone 认证;

Nova 接收请求后,从 Glance 获取指定镜像,向 Neutron 申请网络配置,向 Cinder 申请存储卷;

Nova 将这些资源整合,在合适的物理节点上创建并启动虚拟机实例;

整个过程中,Ceilometer 记录资源使用,Heat 可按模板自动重复上述流程。

这种模块化设计使得 OpenStack 具有高度的灵活性和可扩展性,用户可根据需求选择核心组件或集成其他服务,构建定制化的云计算平台。

2.1OpenStack案例环境

IP 地址 系统版本 CPU 内存 磁盘 OpenStack 版本
192.168.9.236 CentOS7.3(64 位) 8核 16GB 30GB Train 版本

2.1.1创建实例

实例:相当于在云计算环境中运行的一台 "虚拟计算机",就像我们日常使用的物理计算机一样,实例有自己的操作系统、CPU、内存、存储和网络等资源 。用户可以在实例上安装应用程序、部署服务,执行各种计算任务,比如搭建 Web 服务器、数据库服务器等。

在添加实例过程中,配置项填写如下脚本

#!/bin/bash

passwd root<<EOF

aptech

aptech

EOF

passwd centos<<EOF

aptech

aptech

EOF

sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config

sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config

echo "UseDNS no" >> /etc/ssh/sshd_config

systemctl restart sshd

测试云主机和互联网的连通性

sql 复制代码
ping www.baidu.com

PING www.baidu.com (220.181.112.244): 56 data bytes

64 bytes from 220.181.112.244: seq=0 ttl=126 time=14.693 ms

64 bytes from 220.181.112.244: seq=1 ttl=126 time=12.755 ms

64 bytes from 220.181.112.244: seq=2 ttl=126 time=9.271 ms

2.1.2绑定浮动IP地址

浮动IP地址:浮动 IP 地址是从外部网络(通常是与物理网络相连通的网络,能访问互联网等外部资源)中分配出来的公网 IP 地址,它可以被动态地关联到虚拟机实例的固定(内部)IP 地址上 。通过浮动 IP,外部网络中的设备(如其他服务器、用户的计算机等)能够访问到处于内部虚拟网络中的虚拟机实例。

2.1.3添加安全组规则

安全组:本质上是一组由用户自定义的网络访问规则的集合,类似于防火墙规则。每个虚拟机实例都可以关联一个或多个安全组。这些规则定义了哪些 IP 地址、端口和协议的网络流量被允许进入或离开虚拟机实例,从而保护虚拟机上运行的应用程序和数据免受未经授权的访问和攻击。

sql 复制代码
[root@openstack ~]# ping 172.16.1.163

PING 172.16.1.163 (172.16.1.163) 56(84) bytes of data.

64 bytes from 172.16.1.163: icmp_seq=1 ttl=63 time=2.85 ms

64 bytes from 172.16.1.163: icmp_seq=2 ttl=63 time=1.73 ms

64 bytes from 172.16.1.163: icmp_seq=3 ttl=63 time=1.32 ms

64 bytes from 172.16.1.163: icmp_seq=4 ttl=63 time=0.721 ms

sql 复制代码
[root@openstack ~]# ssh cirros@172.16.1.163
The authenticity of host '172.16.1.163 (172.16.1.163)' can't be established.
ECDSA key fingerprint is SHA256:PGyaua19g3sV9OULGawmGxJdLzSpIRpngRkhuqhup0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.163' (ECDSA) to the list of known hosts.
cirros@172.16.1.163's password: 
$ ifconfig
eth0      Link encap:Ethernet  HWaddr FA:16:3E:8B:C3:1C  
          inet addr:192.168.1.189  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::f816:3eff:fe8b:c31c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1442  Metric:1
          RX packets:138 errors:0 dropped:0 overruns:0 frame:0
          TX packets:218 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:15914 (15.5 KB)  TX bytes:19533 (19.0 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

2.1.4创建密钥对

密钥对:密钥对由一对密钥组成,即公钥(Public Key)和私钥(Private Key) 。公钥是公开的,可以被任何人获取;私钥则必须严格保密,只有密钥对的拥有者知道。在 OpenStack 环境中,公钥被存储在虚拟机实例上,用于验证登录请求;私钥则由用户保管,用于在登录虚拟机实例时进行身份验证。

通过宿主机使用密钥登录云主机

sql 复制代码
[root@openstack ~]# useradd cirros
[root@openstack ~]# mkdir /home/cirros/.ssh
[root@openstack ~]# mv /home/cirros/.ssh/my-auth.pem /home/cirros/.ssh/id_rsa
[root@openstack ~]# chmod 700 /home/cirros/.ssh
[root@openstack ~]# chown -R cirros.cirros /home/cirros/.ssh
[root@openstack ~]# chmod 600 /home/cirros/.ssh/id_rsa
sql 复制代码
plaintext
[root@openstack ~]# su - cirros
[cirros@openstack ~]$ ssh 172.16.1.163
The authenticity of host '172.16.1.163 (172.16.1.163)' can't be established.
ECDSA key fingerprint is SHA256:KDOK6Wn0VVmVnHEPVed2CimdMcdxzu10NVmUfg.
ECDSA key fingerprint is MD5:ab:53:30:4a:65:b6:cb:12:05:cd:db:30:f6:de:ca.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.163' (ECDSA) to the list of known hosts.
$ ifconfig
eth0      Link encap:Ethernet  HWaddr: FA:18:3E:71:0A:48  
          inet addr:192.168.1.155  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::f818:3eff:fe71:0a48/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1442  Metric:1
          RX packets:129 errors:0 dropped:0 overruns:0 frame:0
          TX packets:169 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:20062 (19.5 KB)  TX bytes:17586 (17.1 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

2.1.5 创建及使用卷挂载

项目--卷--卷选项卡

进入到test云主机控制台,执行fdisk命令查看磁盘情况

sql 复制代码
fdisk -l

Disk /dev/vda: 1 GiB, 1073741824 bytes, 2097152 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: gpt

Disk identifier: F05EDE64-4EFD-477A-B01E-B37CCD5D3EB4


Device       Start      End  Sectors  Size Type

/dev/vda1   18432  2097118  2078687 1015M Linux filesystem

/dev/vda15   2048    18431    16384    8M EFI System

Partition table entries are not in disk order.


Disk /dev/vdb: 2 GiB, 2147483648 bytes, 4194304 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes
plaintext
fdisk /dev/vdb   

sudo mkfs /dev/vdb1

sudo mount /dev/vdb1 /mnt

df -h


Filesystem      Size  Used Avail Use% Mounted on

/dev            231.7M     0  231.7M   0% /dev

/dev/vda1       980.0M  32.9M  905.8M   4% /

tmpfs           238.8M     0  238.8M   0% /dev/shm

tmpfs           238.8M  84.0K  238.7M   0% /run

/dev/vdb1       2.0G   3.0M  1.9G   0% /mnt

2.1.6 快照管理

基于实例的快照

首先在当前云主机创建一个 test.txt 文件,并且写入内容

sql 复制代码
echo test > test.txt

cat test.txt

test

ifconfig

eth0      Link encap:Ethernet  HWaddr FA:16:3E:71:0A:46  
          inet addr:192.168.1.155  Bcast:192.168.1.255  Mask:255.255.255.0  
          inet6 addr: fe80::f816:3eff:fe71:0a46/64 Scope:Link  
          UP BROADCAST RUNNING MULTICAST  MTU:1442  Metric:1  
          RX packets:572 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:519 errors:0 dropped:0 overruns:0 carrier:0  
          collisions:0 txqueuelen:1000  
          RX bytes:52427 (51.1 KiB)  TX bytes:66089 (64.5 KiB)  


lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0  
          inet6 addr: ::1/128 Scope:Host  
          UP LOOPBACK RUNNING  MTU:65536  Metric:1  
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0  
          collisions:0 txqueuelen:1000  
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)  

相关推荐
哈里谢顿5 天前
Nova parse_args 函数详解
openstack
哈里谢顿7 天前
OpenStack 中的 nova-conductor 与 ironic-conductor 及其分布式锁机制详解
openstack
哈里谢顿11 天前
OpenStack oslo-config 详解
openstack
感哥16 天前
OpenStack Cinder 创建卷
openstack
感哥17 天前
OpenStack Cinder 架构
openstack
感哥17 天前
OpenStack Nova Scheduler 计算节点选择机制
openstack
感哥19 天前
OpenStack Nova 创建虚拟机
openstack
感哥20 天前
OpenStack Glance(镜像)
openstack
感哥20 天前
OpenStack Keystone详解
openstack
安全菜鸟1 个月前
传统方式部署OpenStack具体教程
openstack