OpenStack云平台管理

OpenStack云平台管理

文章目录

资源列表

操作系统 配置 主机名 IP 磁盘 版本
CentOS 7.9 10C12G openstack 192.168.93.109 100G Train版本

基础环境

  • 关闭防火墙
bash 复制代码
systemctl stop firewalld
systemctl disable firewalld
  • 关闭内核安全机制
bash 复制代码
setenforce 0
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
  • 修改主机名
shell 复制代码
hostnamectl set-hostname openstack

一、部署Openstack

  • 可参考上节文档进行安装,安装完成后使用管理员账号登录openstack的Web控制台

二、创建网络和路由

  • 通过packstack部署openstack环境成功后,默认已经配置了网络、路由、实例类型以及镜像等功能,并且可以直接使用,以方便直接体验openstack。本章主要带领读者学习openstack各功能的实现方法。所以首先删除默认创建的网络,再重新创建新的网络

2.1、删除默认的网络

  • openstack安装完成后默认会有两个网络,分别是外部网络public(172.24.4.0/24)、内部网络private(10.0.0.0/24).外部网络不能直接删除,会提示报错西悉尼,原因是存在默认的路由器(demo项目)且已经连接到该网络。在删除之前应该首先删除连接该网络的路由器接口,或者直接删除存在的路由器。管理员用户登录openstack控制台后,**无法在"项目"选项卡中配置demo项目下的路由器。**需要进入"管理员"选项卡

  • 控制台依次单击**"管理员"------"网络"------"路由"**选项卡,选中虚拟路由器route1前面的复选框,并单击右上角的"删除路由"按钮

  • 删除路由器后,依次单击**"管理员"------"网络"------"网络"选项阿卡,选中默认存在的public和private网络**,并单击右上角的**"删除网络"**按钮,删除默认存在的网络

  • 至此,完成了网络和路由器的删除操作

2.2、创建网络和路由

  • 创建云主机之前,首先要创建用于连接云主机的内部网络,以及用于实现云主机访问外部网络和路由器和外部网络。创建步骤为线创建外部网络和内部网络以对应的子网,再创建路由器连接外部网络和内部网络。创建外部网只能在"管理员"------"网络"选项卡中操作,创建内部网络可以在"管理员"------"网络"------"网络" 或 "项目"------"网络"------"网络"选项卡中操作
2.2.1、创建外部网络
  • 依次单击**"管理员"------"网络"------"网络"选项卡,完成后单击右上角"+创建网络"按钮,弹出创建网络界面,在"名称"字段填写pubilc**,"项目"选择admin,"供应商网络类型"字段选择Flat,物理网络填写**"extnet"**,并**勾选"外部网络"**复选框。完成后单击"下一步"按钮

  • 外部网络设置行完成后,在创建子网页面,依次填写**"子网名称"、"网络地址"和"网关IP"输入框。其中 "网络地址处"为云主机所在的内部网络的IP地址段,可以由管理员自定定义。完成后单击 "下一步"**按钮

bash 复制代码
# 以本机的br-ex网卡进行填写
[root@openstack ~]# ifconfig br-ex
br-ex: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.24.4.1  netmask 255.255.255.0  broadcast 172.24.4.255
        inet6 fe80::44fb:fcff:febf:d45  prefixlen 64  scopeid 0x20<link>
        ether 46:fb:fc:bf:0d:45  txqueuelen 1000  (Ethernet)
        RX packets 5  bytes 140 (140.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14  bytes 908 (908.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 注意:"网关IP"字段为空表示默认使用网络中第一个IP地址,如X.X.X.1,也可以自行指定其他IP地址。如果不需要云主机通过该网络访问其他网络,可以勾选**"禁用网关"**复选框

  • 在**"子网详情"选项卡中,取消勾选 "激活DHCP"复选框,其他字段可以保持默认设置,因为外部网络和云主机网络属于不同的网段,也不需要给云主机分配IP地址、DNS等参数。直接单击 "创建"**按钮

  • 页面将返回到public网络的子网列表页面,显示当前创建成功的子网信息

2.2.2、创建内部网络
  • 外部网络创建成功后,下面开始创建内部网络。内部网络用于连接云主机实例,建立配置DHCP,用于向云主机分配网络参数

  • 依次单击**"项目"------"网络"------"网络"选项卡,页面中间将显示之前创建成功的外部网络"public"。单击右上角 "+创建网络"按钮,开始创建内部网络。在弹出的创建网络页面,填写"网络名称"为 private**,确保选中**"创建子网"**复选框,完成后单击"下一步"按钮

  • 在接下来的**"子网"选项卡也买你,根据管理员规划,依次填写 "子网名称"、"网络地址"以及"网关IP"输入框**。"网关IP输入框留空默认使用网路中第一个IP地址"。如果不需要该网络中的云主机访问外部网络,可以勾选"禁用网关"复选框。完成后单击**"下一步"**按钮

  • 在**"子网详细"选项卡页面,确保勾选 "激活DHCP"复选框,并填写 "分配地址池"和"DNS服务器"**输入框。配置该网络可以向云主机分配IP地址和DNS地址。完成后单击"**创建"**按钮

  • 完成后将返回网络列表页,显示当前已经创建成功的网络

2.3、创建路由

  • 网络创建完成后,还需要创建路由器实现内部网络和外部网络之间的转发

  • 依次单击**"项目"------"网络"------"路由"选项卡,并单击页面右上角 "+新建路由"按钮,在弹出的 "新建路由"页面,填写 "路由名称"输入框,并选择外部网络为之前创建的 "public"。完成后,单击 "新建路由"按钮,新创建的路由器 默认开启SNAT功能**

  • 完成后将返回路由列表页面。显示当前创建成功的路由器

  • 成功创建路由并选择外部网络之后,将自动创建连接外部网络的接口,还需要创建连接内部网络的接口。单击路由器名称**"route"超链接**,进入路由详细信息页面。单击**"接口"选项卡,并单击页面右上角 "+增加接口"按钮。在弹出的 "增加接口"页面中, "子网"下拉菜单选择之前创建成功的内部网络 "private:192.168.93.0/24(private_subnet)" "IP地址"留空默默人为private网路中配置的网关地址**。完成后,单击"提交"按钮

  • 页面将返回到路由器接口列表页面,显示当前的路由器接口。如果接口处于显示为"Down"可刷新页面,正常状态为"运行中"

三、创建实例

3.1、配置实例

  • packstack一键部署openstack完成后,默认存在实例类型和镜像配置。实例类型的作用是对云主机进行资源限制。镜像用于生成云主机操作系统。当存在网络、路由、实例类型以及镜像之后,就可以创建云主机了。不过在创建之前,要线检查下**"项目"------"计算"------"镜像"**选项卡下的cirros这个镜像的大小,正常大小为几十兆。如果为几百K,参考上一章文档进行替换

  • 依次单击**"项目"------"计算"------"实例"选项卡,页面右边单击 "创建实例"按钮,在弹出的创建实例页面,填写 "实例名称" test**。完成后单击**"下一步"**按钮

  • 在**"源"选项卡页面, "选择源"下拉菜单中选择 "image",创建新卷位置选择 "不"(如果需要持久化,选择"是")。在"可用配额"下面的镜像列表中,单击名称为 "cirros01"**镜像右边的箭头,确保其位于已分配下面。完成后单击"下一步"按钮

  • 在**"实例类型"选项卡页面中间区域,单击资源占用最少的 "m1.tiny"实例类型右边的箭头,确保其位于已分配下面。完成后单击 "下一步"**按钮

  • 在**"网络"选项卡页面中间,单击之前创建的内部网络"private"**右边的箭头,确保其位于已分配下面

  • **"安全组"**选项默认勾选

  • 当完成**"详情" "源" "实例列表" "网络"四个必须选项卡之后,其他可选配置选项卡可保持默认,直接单击 "创建实例"**按钮

  • 页面将返回到实例列表也买你,并基于之前的配置创建实例,创建的实时信息可查看"认为有"一栏中的动态显示内容。创建成功后云主机将获得一个IP地址

  • 在实例**"test"**右边"创建快照"傍边的下拉菜单中选择"控制台",进入云主机控制台,根据终端提示信息键入用户名和密码登录云主机控制台,并查看当前云主机的IP地址

  • 用户名:cirros 密码:gocubsgo

  • 此时云主机是不能访问外网的

宿主机的br-ex网卡用于连接opensatck虚拟网络,但是虚拟网络访问互联网必须经过宿主机的真实网卡ens33,宿主机在br-ex和ens33之间转发流量可以通过三种方式

  • 将ens33网卡加入br-ex网桥,取消ens33配置的IP地址,配置br-ex为宿主机外部网络的IP地址,这种方式需要修改外部网络public的网段地址

  • 开启宿主机的路由转发,通过路由转发数据,同时配置宿主机的回包路由

  • 配置宿主机的NAT功能,通过路由加地址转换转发数据,不需要回包路由,不需要修改现有网段

3.2、配置NAT转换

  • 下面基于第三种方式 进行介绍。添加一条nat规则 。为了避免重启规则小时,可以将其写道iptables配置文件。注意:-o ens33参数需要根据实际的宿主机网卡名称来配置。命令如下。--comment "000 nat"表示添加注释文字
bash 复制代码
[root@openstack ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
[root@openstack ~]# iptables -t nat -A POSTROUTING -s 172.24.4.0/24 -o ens33 -m comment --comment "000 nat" -j MASQUERADE
[root@openstack ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
  • 再次测试云主机和互联网的连通性

四、绑定浮动IP地址

  • 经过前面的配置,云主机已经可以访问外部网络,但是外部网络还不能访问云主机。无论是宿主机还是外部网络设备,都没有云主机网络的路由条目。根据之前的介绍,创建的虚拟路由器连接外部网络后默认启用SNAT(源地址转换)。若要访问NAT设备身后的网络,需要通过配置NAT映射或目录地址转换实现,即需要配置浮动IP地址

  • 依次单击**"项目"------"网络"------"浮动IP"选项卡,在页面右边单击 "分配IP给项目"按钮,将弹出分配浮动IP页面,在页面中选择 "资源池" "public"**,并单击"分配IP"按钮

  • 页面将返回到浮动IP列表页面,显示成功分配的浮动IP地址列表

  • 上图显示已经成功分配了IP地址172.24.4.154。下面将该浮动IP地址分配给云主机。单击浮动IP地址右边的"关联"按钮,并在弹出的"管理浮动IP的关联"页面中,选择"待连接的端口"下拉菜单,并选择"test"云主机。完成后单击"关联"按钮

  • 根据浮动IP列表页面中的显示信息可得知,已经成功的将浮动IP地址和云主机绑定

  • 切换到"项目"------"计算"------"实例"选项卡,可以看到云主机"test"绑定了浮动IP地址172.24.4.154

  • 绑定浮动IP地址后,理论上可以从外部网络访问云主机,但是还需要配置安全组规则

五、添加安全组规则

  • 安全组的作用是保护云主机的安全 ,openstack有一个默认安全组default、从数据包方向分为入口和出口,访问云主机的入口流量必须要经过安全组规则放行流量

  • 依次单击**"项目"------"网络"------"安全组"选项阿卡,页面中间默认的安全组规则default,单击其右边的 "管理规则"**按钮

  • 在default安全组规则列表页面,默认存在四条规则

  • 单击页面右上角**"+添加规则"按钮,在弹出的 "添加规则"页面,选择"规则"为 "ALL ICMP","方向"选择 "入口",其他保持默认,完成后单击 "添加"**按钮

  • 页面将返回到default安全组规则列表也买你,最后部分显示添加成功的安全组规则

  • 配置完浮动IP地址和安全组规则后,尝试从外部网络(宿主机以外的网络,此处以宿主机代替)访问云主机。访问的目标云主机所绑定的浮动IP地址。测试的命令结果如下所示

bash 复制代码
[root@openstack ~]# ping 172.24.4.154
PING 172.24.4.154 (172.24.4.154) 56(84) bytes of data.
64 bytes from 172.24.4.154: icmp_seq=1 ttl=63 time=6.19 ms
64 bytes from 172.24.4.154: icmp_seq=2 ttl=63 time=0.969 ms
64 bytes from 172.24.4.154: icmp_seq=3 ttl=63 time=0.387 ms
^C
--- 172.24.4.154 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.387/2.517/6.195/2.611 ms
  • 为了可以让管理员从外部网络通过SSH协议管理云主机,同理与添加ICMP规则相同。通过添加规则,放行外部网络访问云主机的入口SSH协议流量 。添加SSH规则页面入下图所示。

  • 管理员在宿主机尝试通过SSH命令远程登录云主机,测试命令及结果如下

bash 复制代码
[root@openstack ~]# ssh cirros@172.24.4.154
The authenticity of host '172.24.4.154 (172.24.4.154)' can't be established.
ECDSA key fingerprint is SHA256:Rx6vufr8QLw0DMtUdRYqnnEA64T8Dq7Wjtpnd7EphUM.
ECDSA key fingerprint is MD5:a1:ad:e5:18:20:18:dd:48:ef:2a:11:3e:ba:81:67:b7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.24.4.154' (ECDSA) to the list of known hosts.
cirros@172.24.4.154's password:     # 密码gocubsgo
# 登录成功执行命令
$ ifconfig 
eth0      Link encap:Ethernet  HWaddr FA:16:3E:44:DB:9F  
          inet addr:192.168.93.172  Bcast:192.168.93.255  Mask:255.255.255.0
          inet6 addr: fe80::f816:3eff:fe44:db9f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1442  Metric:1
          RX packets:125 errors:0 dropped:0 overruns:0 frame:0
          TX packets:183 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:14943 (14.5 KiB)  TX bytes:16879 (16.4 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)

六、创建密钥对

  • 密钥对是openstack提供的一个安全认证功能,用户可以在创建云主机的时候选择添加密钥对,管理员在访问云主机的时候可以免密码登录。免密码登录并不意味着安全性的降低,因为密钥对的攻破难度比密码要大很多

  • 依次打开**"项目"------"计算"------"密钥对"选项卡,在密钥对列表单击 "+创建密钥对"**按钮

  • 在**"创建密钥对"页面,输入密钥对名称 "my-auth",密钥类型选择 "SSH密钥"完成后单击 "创建密钥对"**按钮

  • 密钥对创建完成后,浏览器会自动下载my-auth.pem文件。my-auth.pem将是该云主机的私钥文件。通过云主机绑定该密钥对,并复制该私钥文件到管理端,从而实现远程免密码连接云主机。下面通过宿主机使用密钥登录云主机

  • 在宿主机上创建cirros用户并设置权限

shell 复制代码
[root@openstack ~]# useradd cirros
[root@openstack ~]# mkdir /home/cirros/.ssh
  • 将my-auth.pem文件上传到宿主机/home/cirros/.ssh目录下,重命名为id_rsa文件
shell 复制代码
[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
  • 要使用密钥对,需要重新创建一台云主机 。如果资源不够可删除之前创建的测试云主机。然后选择刚刚创建的密钥对 ,完成后随便绑定一个个浮动IP地址到云主机。尝试在宿主机使用密钥对登录云主机

  • 执行一下命令使用密钥对登录

bash 复制代码
# 浮动IP地址
[root@openstack ~]# su - cirros 
[cirros@openstack ~]$ ssh 172.24.4.241
The authenticity of host '172.24.4.241 (172.24.4.241)' can't be established.
ECDSA key fingerprint is SHA256:qEKn0GKP9sqQqKlZQ5rp0c0wZvjFNGLfo7f6TqbFlXQ.
ECDSA key fingerprint is MD5:bc:9d:36:0d:44:cd:00:f0:6b:73:72:4a:36:81:9f:90.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.24.4.241' (ECDSA) to the list of known hosts.
$ ifconfig 
eth0      Link encap:Ethernet  HWaddr FA:16:3E:AB:EE:95  
          inet addr:192.168.93.120  Bcast:192.168.93.255  Mask:255.255.255.0
          inet6 addr: fe80::f816:3eff:feab:ee95/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1442  Metric:1
          RX packets:95 errors:0 dropped:0 overruns:0 frame:0
          TX packets:142 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:12905 (12.6 KiB)  TX bytes:13714 (13.3 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)

# 在上述命令中,通过ssh工具远程连接云主机没有输入任何密码信息,但是不具备私钥文件的客户端无法正常通过SSH协议远程连接云主机

七、创建及使用挂在卷

  • openstack通过Cinder提供块存储服务 。管理员可根据需要对云主机添加卷。卷是一个块设备,由云主机挂载使用。本次的案例环境是一个单击环境。如果启用卷设备,那么Cinder将会占用所有的可用空间

  • 首先创建一个卷,依次打开"项目"------"卷"------"卷"选项卡,页面右边单击**"+创建卷"**按钮

  • 在弹出的**"创建卷"页面中,填写卷名称为 "test-lv",大小为 "2",其他保持默认。完成后单击 "创建卷"**按钮

  • 页面将返回卷列表页面,显示当前创建成功的卷信息

  • 卷创建好之后,还需要和实例管理才可以使用。单击上图中的**"编辑卷"旁边的下拉菜单,选择 "管理连接"。在弹出的 "管理已连接卷"页面,选择"连接到实例"为之前创建的云主机"test"。完成后单击 "连接卷"**按钮

  • 在随后的卷列表页面,显示当前卷已经连接到云主机test上的/dev/vdb设备

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

bash 复制代码
$ sudo 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: 92674365-8FD5-41C2-B173-9F3F1E3BA5A1

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
  • 在云主机控制台中。对/dev/vdb进行分区、格式化,并挂载到/mnt目录
shell 复制代码
# 一路回车,步骤省略
$ sudo fdisk /dev/vdb
$ sudo mkfs /dev/vdb1
mke2fs 1.44.5 (15-Dec-2018)
Creating filesystem with 524032 4k blocks and 131072 inodes
Filesystem UUID: 851b4a73-8fd8-4f11-b2f5-9e3ae7e00804
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912

Allocating group tables: done                            
Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done 
$ sudo mount /dev/vdb1 /mnt/
$ df -hT
Filesystem           Type            Size      Used Available Use% Mounted on
/dev                 devtmpfs      231.7M         0    231.7M   0% /dev
/dev/vda1            ext3          985.9M     31.4M    922.9M   3% /
tmpfs                tmpfs         238.8M         0    238.8M   0% /dev/shm
tmpfs                tmpfs         238.8M     80.0K    238.7M   0% /run
/dev/vdb1            ext2            2.0G      3.0M      1.9G   0% /mnt
  • 在/mnt目录写入一个test.txt文件
bash 复制代码
$ sudo vi /mnt/test.txt
2G
$ sudo cat /mnt/test.txt 
2G
  • 注意:创建卷的时候指定的容量大小并不会立即占用磁盘空间,当卷中有数据时才会真正占用

  • 当云主机的卷空间不足时,需要对卷进行扩容,扩容之前首先对卷进行分离 ,在卷列表页面中单击卷的**"管理连接",在弹出的 "管理已连接卷"页面,单击卷对应的 "分离卷"**按钮

  • 在确认分类卷页面继续单击**"分离卷"**按钮

  • 当前卷断开后,在对应的下拉菜单中选择**"扩展卷"。在弹出的扩展卷页面中,填写卷的新大小为 "3".完成后单击 "扩展卷"**按钮

  • 返回到卷列表页面,页面中卷大小信息已经更新为3G

  • 继续在卷对应的下拉菜单中选择**"管理连接",重新连接到云主机实例 "test"**

  • 登录test云主机控制台,尝试访问之前创建的test.txt文件,test.txt文件已经不存在。同时,新出现了vdc分区,其大小为3G,执行以下命令和结果如下所示

bash 复制代码
$ ls /mnt/test.txt
ls: /mnt/test.txt: Input/output error
$ sudo 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: 92674365-8FD5-41C2-B173-9F3F1E3BA5A1

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/vdc: 3 GiB, 3221225472 bytes, 6291456 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: dos
Disk identifier: 0x1dc7a442

Device     Boot Start     End Sectors Size Id Type
/dev/vdc1        2048 4194303 4192256   2G 83 Linux
  • 扩展后多出的1G的空间默认没有被分区。即只扩展了磁盘大小,并没有改变分区大小。卸载/dev/vdb1分区,挂载/dev/vdc1分区。完成后查看test.txt内容正常。为了使用新扩展的1G空间,需要重启云主机
bash 复制代码
$ sudo umount -l /mnt
$ sudo mount /dev/vdc1 /mnt
$ sudo cat /mnt/test.txt 
2G
$ sudo reboot
  • 云主机启动后,卷将被重新识别为/dev/vdb,需要重新挂载使用。新增加的/dev/vdb2分区还需要格式化才能挂载使用
bash 复制代码
$ sudo mkdir /data
$ sudo fdisk /dev/vdb
$ sudo mkfs /dev/vdb2
$ sudo mount /dev/vdb2 /data/
$ sudo mount /dev/vdb1 /mnt/
$ df -hT
Filesystem           Type            Size      Used Available Use% Mounted on
/dev                 devtmpfs      231.7M         0    231.7M   0% /dev
/dev/vda1            ext3          985.9M     31.4M    922.9M   3% /
tmpfs                tmpfs         238.8M         0    238.8M   0% /dev/shm
tmpfs                tmpfs         238.8M     76.0K    238.7M   0% 
/run
###################################################################
/dev/vdb2            ext2         1007.9M      1.3M    955.4M   0% /data
/dev/vdb1            ext2            2.0G      3.0M      1.9G   0% /mnt
###################################################################

八、快照管理

  • 快照可以分为基于实例的快照和基于卷的快照两种类型。实例快照保存在Glance中,而卷快照保存在本地存储

8.1、基于实例的快照

  • 需要注意所需实例要不带或者先卸载卷,若带卷会导致实验失败

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

bash 复制代码
$ echo test > test.txt
$ cat test.txt 
test
$ ifconfig 
eth0      Link encap:Ethernet  HWaddr FA:16:3E:AB:EE:95  
          inet addr:192.168.93.172  Bcast:192.168.93.255  Mask:255.255.255.0
          inet6 addr: fe80::f816:3eff:feab:ee95/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1442  Metric:1
          RX packets:381 errors:0 dropped:0 overruns:0 frame:0
          TX packets:383 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:37682 (36.7 KiB)  TX bytes:37290 (36.4 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)
  • 然后创建一个实例快照,通过该实例快照启动一个全新的云主机。首先在**"实例列表"**页面,单击实例test01(使用任意没有挂载卷的云主机即可)对应的"创建快照"按钮

  • 在弹出的"创建快照"页面,输入快照名称"test-snap",并单击"创建快照"按钮

  • 也买你将自动进入**"镜像"**页面,并在列表的最后生成一个新的镜像,其状态可能一直处于排队状态,可刷新页面解决

  • 实例快照创建完成之后,通过该快照重新生成云主机。单击镜像后面的**"启动"按钮,在弹出的"创建实例"页面,实例名称添加 "test01"。在"源"选项卡页面中, "选择源"下拉列表选择"实例快照",并在下面选择名称 "test-snap"**的快照,其他配置参数前面的步骤。完成后单击"创建实例"按钮

  • 登录test01云主机控制台
bash 复制代码
[root@openstack ~]# ssh cirros@172.24.4.66
cirros@172.24.4.66's password: 		# 密码:gocubsgo
$ cat test.txt
test
# 上述命令输出结果显示,通过实例快照创建的云主机 test01和云主机test数据一致

8.2、基于卷的快照

  • 删除之前创建的**"test01"云主机,重新创建云主机 "test01",在云主机创建过程中在 "源"选项卡页面选择 "创建新卷",大小1GB。创建完成后在"项目"------"卷"------"卷"**页面中出现一个新的卷,实例test01将存储在Cinder块里

  • 其他配置参考上面的步骤

  • 登录test01云主机控制台,创建一个test.txt文件,写入test01内容如下

bash 复制代码
[root@openstack ~]# ssh cirros@172.24.4.3
cirros@172.24.4.3's password: 	# 密码:gocubsgo
$ echo "test01" > test.txt
$ cat test.txt 
test01
  • 进入**"项目"------"卷"------"卷"页面,对上面的卷做一个快照,在编辑卷右侧下拉框选择 "创建快照",名称叫做 "test01-lv-snap",创建过程中会提示"这个卷已经被连接到某个实例了"。正确的做是先将卷分离出来,再创建卷快照。因为test01云主机是实现环境并且没有应用对卷实时写入文件,所以忽略该提示。直接单击 "创建卷快照(强制)"**按钮

  • 在卷快照列表页面可以看到创建成功的快照信息

  • 通过该卷快照,在创建卷右侧下拉框选择**"创建实例",实例名称 "test02",在 "源"页面选择"卷快照"**,完成后登录test02云主机控制台执行如下命令

bash 复制代码
[root@openstack ~]# ssh cirros@172.24.4.100
cirros@172.24.4.100's password: 	# 密码:gocubsgo
$ cat test.txt
test01
$ ifconfig 
eth0      Link encap:Ethernet  HWaddr FA:16:3E:EE:18:7E  
          inet addr:192.168.93.126  Bcast:192.168.93.255  Mask:255.255.255.0
          inet6 addr: fe80::f816:3eff:feee:187e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1442  Metric:1
          RX packets:128 errors:0 dropped:0 overruns:0 frame:0
          TX packets:158 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:15933 (15.5 KiB)  TX bytes:15881 (15.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)
  • 上述命令显示,通过卷快照生成的云主机除了IP地址外,和之前的云主机内容一致。同时,在卷列表页面将会多出一个test02使用的卷

  • 无论是实例快照还是卷快照,都可以用来生成全新的云主机,在生产环境中通常通过快照对云主机进行备份或迁移

九、创建镜像

  • 本次使用的是官方下载的CentOS镜像(CentOS-7-x86_64-GenericCloud-1802.qcow2)。依次打开**"管理员"------"计算"------"镜像"选项卡页面,单击 "创建镜像"按钮,填写镜像名称,在 "文件"位置通过浏览器选择下载的镜像文件,镜像格式选择"QCOW2-QEMU模拟器",完成后单击 "创建镜像"**按钮

  • 创建过程会出现进度条,创建成功页面如图

  • 镜像导入成功后,可以通过该镜像生成基于CentOS 7操作系统的云主机,需要注意,要同时给该镜像选择或创建适合的实例类型。可以通过密钥对的方式免密码登录基于该镜像的语和主机,默认存在centos用户。

相关推荐
运维&陈同学2 小时前
【zookeeper03】消息队列与微服务之zookeeper集群部署
linux·微服务·zookeeper·云原生·消息队列·云计算·java-zookeeper
Code_Artist4 小时前
使用Portainer来管理并编排Docker容器
docker·云原生·容器
梅见十柒9 小时前
wsl2中kali linux下的docker使用教程(教程总结)
linux·经验分享·docker·云原生
运维&陈同学11 小时前
【zookeeper01】消息队列与微服务之zookeeper工作原理
运维·分布式·微服务·zookeeper·云原生·架构·消息队列
O&REO11 小时前
单机部署kubernetes环境下Overleaf-基于MicroK8s的Overleaf应用部署指南
云原生·容器·kubernetes
运维小文12 小时前
K8S资源限制之LimitRange
云原生·容器·kubernetes·k8s资源限制
wuxingge21 小时前
k8s1.30.0高可用集群部署
云原生·容器·kubernetes
志凌海纳SmartX1 天前
趋势洞察|AI 能否带动裸金属 K8s 强势崛起?
云原生·容器·kubernetes
锅总1 天前
nacos与k8s service健康检查详解
云原生·容器·kubernetes
BUG弄潮儿1 天前
k8s 集群安装
云原生·容器·kubernetes