1.规划节点
IP | 主机名 | 节点 |
192.168.100.10 | controller | OpenStack控制节点 |
192.168.100.20 | compute | OpenStack计算节点 |
2.基础准备
使用OpenStack平台的两台节点,将OpenStack控制节点的资源加入计算资源,使192.168.100.10这个节点既是控制节点也是计算节点,然后使用这两台主机进行实验。节点规划表中的IP地址为作者的IP地址,在进行实操案例的时候,按照自己的环境规划网络与IP地址。
3.OpenStack手动迁移虚拟机
修改openrc.sh
把compute节点的IP和主机名改为controller节点的IP和主机名
运行iaas-install-nova-compute.sh
在控制节点运行iaas-install-nova-compute.sh
执行过程中需要确认登录controller节点和输入controller节点root用户密码。
注:这个.sh仅仅是一个环境认证产量,如果准备在哪个节点使用,就在哪个节点修改,所以该实验仅在controller节点进行了修改
3.1确认控制节点资源
登录http://192.168.100.10/adshboard界面,使用用户名密码登录,在左侧导航栏单击管理员--资源管理--虚拟机管理器查看
3.2创建虚拟机
# 登录
controller # source /etc/keystone/admin-openrc.sh
# 通过命令创建云主机
controller # nova boot --flavor m1.test --image centos7.5 --security-group test --nic net-name=int-net test
可以使用dashboard界面或者命令创建虚拟机,此处使用dashboard界面创建,创建了一个名为test的云主机,可以通过命令查看。
controller # nova show test
......
| OS-EXT-AZ:availability_zone | nova |
| OS-EXT-SRV-ATTR:host | compute |
| OS-EXT-SRV-ATTR:hostname | test |
| OS-EXT-SRV-ATTR:hypervisor_hostname | compute | ......
可以看到虚拟机所在的物理节点为compute节点。
3.3查看虚拟机
随着云计算平台的使用,可能会出现compute节点的资源不够用了,需要将创建在compute节点的虚拟机迁移至controller节点。又或者是compute节点机器太老了,需要跟新,这个时候也需要将创建在compute节点的虚拟机进行迁移。
执行手动迁移虚拟机的过程有两步,需要将虚拟机实例目录进行转移,并修改数据库文件内容。具体如下。
首先找到虚拟机实例存放的位置,虚拟机存放在/var/lib/nova/instances/目录下,因为test虚拟机被创建在了compute节点,所以在compute节点上查看虚拟机实例。
compute # cd /var/lib/nova/instances/
compute # ll
总用量 4
drwxr-xr-x. 2 nova nova 54 6月 16 08:29 8c0a8f1d-7da1-447d-b96b-e48c0520c04d
drwxr-xr-x. 2 nova nova 54 5月 31 03:47 _base
-rw-r--r--. 1 nova nova 30 6月 25 11:20 compute_nodes
drwxr-xr-x. 2 nova nova 93 6月 7 17:44 locks
8c0a8f1d-7da1-447d-b96b-e48c0520c04d目录即为虚拟机实例的目录,该目录名称与虚拟机的ID一致,查看该目录下内容:
compute # cd 8c0a8f1d-7da1-447d-b96b-e48c0520c04d
compute # ll
-rw-------. 1 root root 55270 6月 16 11:06 console.log
-rw-r--r--. 1 root root 122355712 6月 16 11:06 disk
-rw-r--r--. 1 nova nova 79 6月 16 08:29 disk.info
该目录下存放着虚拟机的磁盘文件及日志等。
3.4迁移虚拟机目录
在进行虚拟机迁移之前,先将,test虚拟机关机,然后将虚拟机目录整个移动到controller节点的/var/lib/nova/instances/目录下:
compute # scp -r /var/lib/nova/instances/8c0a8f1d-7da1-447d-b96b-e48c0520c04d/ root@192.168.100.10:/var/lib/nova/instances/
compute # rm -rf /var/lib/nova/instances/8c0a8f1d-7da1-447d-b96b-e48c0520c04d/
到controller节点的/var/lib/nova/instances/目录下查看
controller # cd /var/lib/nova/instances/
controller # ll
总用量 0
drwxr-xr-x. 2 root root 54 6月 25 11:37 8c0a8f1d-7da1-447d-b96b-e48c0520c04d
可以看到虚拟机目录已经在controller节点了,但是该目录的用户和用户组是root,需要修改成nova
controller # chown nova:nova 8c0a8f1d-7da1-447d-b96b-e48c0520c04d
controller # ll
总用量 4
drwxr-xr-x. 2 nova nova 54 6月 25 11:37 8c0a8f1d-7da1-447d-b96b-e48c0520c04d
-rw-r--r--. 1 nova nova 33 6月 25 11:41 compute_nodes
drwxr-xr-x. 2 nova nova 40 6月 25 11:41 locks
至此前期的迁移工作准备完毕。
3.5修改数据库文件
在完成test虚拟机目录的迁移后,此时去启动虚拟机会报错,因为在数据库中记录了该虚拟机的宿主机名字,需要进入数据库,修改这一字段才能完成虚拟机的迁移
进入数据库:
controller # mysql -uroot -p000000 > use nova;
> update instances set host='controller',node='controller' where uuid='8c0a8f1d-7da1-447d-b96b-e48c0520c04d';
修改完成后,重启nova-compute服务
controller # systemctl restart openstack-nova-compute
重启服务后启动虚拟机test并查看虚拟机的详细信息
controller # nova start 8c0a8f1d-7da1-447d-b96b-e48c0520c04d
controller # nova list
controller # nova show
test ......
| OS-EXT-AZ:availability_zone | nova |
| OS-EXT-SRV-ATTR:host | controller |
| OS-EXT-SRV-ATTR:hostname | test |
| OS-EXT-SRV-ATTR:hypervisor_hostname | controller | ......
可以查看到test虚拟机成功启动,在查看test虚拟机的详细信息后,可以发现宿主机由原来的compute变成了controller。虚拟机手动迁移操作成功。