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用户。

相关推荐
阿里云云原生1 天前
SLS Copilot 实践:基于 SLS 灵活构建 LLM 应用的数据基础设施
云原生
Vio7251 天前
Eureka注册中心
云原生·eureka
Yeats_Liao1 天前
遗留系统微服务改造(二):数据迁移实战攻略与一致性保证
微服务·云原生·架构
野蛮人6号1 天前
黑马微服务P3快速入门入门案例无法跑通解决方案,本文解决了数据库连接和java版本不匹配的问题
微服务·云原生·架构
没有口袋啦1 天前
K8s集群多节点部署(Ubuntu22.04)
docker·云原生·容器·kubernetes
荣光波比1 天前
K8S(三)—— 基于kubeadm 1.20版本部署Kubernetes集群与Harbor私有仓库实战
云原生·容器·kubernetes
荣光波比1 天前
K8S(二)—— K8S 1.28 集群部署指南(kubeadm 方式)
云原生·容器·kubernetes
问道飞鱼1 天前
【Kubernets进阶】Kubernetes VPA (Vertical Pod Autoscaler) 详解与配置指南
云原生·容器·kubernetes·vpa
Light601 天前
领码方案|微服务与SOA的世纪对话(7):运营降本增效——智能架构时代的成本与服务管理
微服务·云原生·ai ops·成本边界·slo/sli·容量预测·成本治理
Vio7251 天前
微服务基础:远程调用的基本使用详解
微服务·云原生·架构