这两天对公司的的openstack环境进行测试,因为环境是别的同事搭建的,我这边只负责相关的测试,一台服务器独立安装
controller node,另外两台服务器都安装network node+compute node。大概环境如下:
外网IP网段是192.168.1.0/24,其中192.168.1.100~192.168.1.200为floatingip分配范围,内网IP网段是172.16.1.0/24。
compute0上有一个instance VM00,分配了外网IP192.168.1.102,内网IP为172.16.1.2。compute1上有一个instance
VM01,分配了外网IP192.168.1.103,内网IP为172.16.1.3。VM00和VM01在同一内网子网上。
内网、外网通过router进行互联,所以可以在controller上进行与VM00和VM01进行通信。
现在需要把compute0拿掉,需要将VM00迁移到compute1上,然后将compute0进行关闭。使用nova migrate和nova
resize-confirm命令将VM00迁移到compute1上后,将compute0 shutdown掉后,在controller上无法与VM00和VM01进
行通信了。
原因如下:
在进行虚拟机迁移前,两compute的内部相关的网络组成如下:
在compute0上有router和dhcp server的namespace,如果将VM00迁移到VM01上后,shutdown掉compute0,从下图来看,没有router的namespace,
所以到VM00和VM01的路由是不同的,迁移后的相关的网络组建构图如下:
为什么dhcp server还存在呢,这个可能和openstack的安装有关,可能在安装时dhcp server是HA模式的,那大家肯定会问,我为什么知道dhcp server是存在
的呢?我创建一个instance,并且使用dhcp模式,新的instance分配到了IP地址,并且使用ip netns查看到确实有dhcp的namespace生成了。
那如何才能关闭compute0后,使网络仍然有效呢?自然想到把router也迁移过去,解决方案差不多,使用HA router,知道在创建时使用--HA True选项,使用
HA router后,两compute的网络组成如下:
创建HA router后,在compute1上也创建了一个router的namespace,将VM00迁移后,再将compute0 shutdown后,两compute的网络构成图如下:
compute1的router会在compute0关闭几秒内接替进行工作,保证网络的连通,如果再在compute1上创建一个VM,dhcp server的name namespace也会
创建,说明新的dhcp server也能继续工作。