由于公司搬家,由于服务器所在网段变化,原来搭建的OpenStack服务集群,需要进行迁移,找了很多资料没有相关的可借鉴经验,这里将自己的操作过程记录下来,以便查看
也希望对后来者能够有所帮助
本次迁移主要用于平行迁移整个OpenStack集群,确保原云主机在新的子网内可直接使用,避免重新搭建整个平台造成时间浪费
软件环境
操作系统:Ubuntu 14.04
OpenStack:Mitaka
云主机网络:provider网络,没有vlan
以下操作命令均在Ubuntu下可用,其他发行版请自行Google相关操作命令
主要目标
- 不需要重新搭建整个OpenStack平台
- 将集群从42网段迁移到129网段
- 原有数十台云主机,可在新网段下直接启动,除云主机绑定子网IP变化外,其他不变
执行思路
1. 搬迁服务器
服务器搬家公司体力活,不多说
2. 修改集群服务器IP到新网段,如42.10对应129.10
# 打开配置文件
sudo vim /etc/network/interface
# 修改address、gateway、dns-servers为新的网段129下的配置
# 重新启动网络环境(14.04之后不再支持service network restart重启网络)
sudo ifdown em1
sudo ifup em1
完成所有服务器的ip配置后,验证服务器之间网络是否互相已通
ping ***.***129.10
3. 更新服务器hostname映射
原先安装OpenStack时使用的是hostname访问相关服务,这里需要修改hostname到ip的映射关系
# 打开配置文件
sudo vim /etc/hosts
# 修改ip和hostname之间的映射
***.***.129.10 stack-control
4. 重新启动nova、neutron控制节点和所有服务
涉及到rabbitmq、nova-compute、nova-shcedule、neutron、nuetron-linuxbridge-agent等等
最简单也最暴力的方式:重启服务器
有闲心的就一个个重启也行
sudo service nova-api restart
sudo service nova-scheduler restart
# 等等
5. 重新启动计算阶段nova-compute、neutron-linux-bridge服务
更新nova-compute服务的IP地址配置:
# 修改my_ip为新地址
sudo vim /etc/nova/nova.conf
# 修改novncproxy_base_url中地址为主控服务地址。确保通过horizon能够连接到虚拟机控制台
# 重新启动计算节点服务
sudo service nova-compute restart
sudo service neutron-linux-bridge restart
6. 登陆horizon,验证OpenStack平台是否已正常工作(注意,此时还不能启动云主机)
由于云主机IP还没有重新绑定,这里登陆后只做验证,不要启动云主机
确认所有的主机均处于激活状态,以确保OpenStack的control和compute节点已互相发现
7. 新建基于129网段的新的provider子网
由于原先的42网段IP已经绑定到了云主机,无法直接删除,需要将云主机重新绑定到129网段IP后再删除
这里先新建新的129网段配置,用于后面云主机绑定
8. 修改云主机port配置,以绑定到129子网IP,以替换原先的42子网IP
将原云主机的42网段IP绑定到129网段的对应IP
# 初始化管理员连接参数。我这里用自己保存的shell配置脚本,方便使用
. adminrc
# 查询出来所有的port配置
neutron port-list
例如:
其中id列在后面port-update需要使用,fixed_ips对应每一个port绑定的固定ip,我们实际需要修改的正是这里的fixed_ips
# 更新每个port的绑定ip
neutron port-update --fixed-ip subnet_id='新的129网段子网名称或ID',ip_address='129网段IP' 'port ID'
在horizon中可以查看到IP地址列已经更新为129网段
9. 启动云主机,并验证IP地址是否获取正常,以及是否能够访问
例如:这里已显示成功获取129网段IP地址
部分镜像发行版可能因为cloud-init配置的问题
网卡没有使用dhcp获取地址,而是使用了static配置,指定了ip地址。
存在网络不通的可能,此时需要手动修改ip或调整为dhcp模式获取ip。
彻底解决该问题,需要更新镜像
# 检查默认路由
route -n
# 由于启动云主机时,新旧两个子网都存在,此时cloud-init会创建两个子网互通的路由配置
# 如该默认路由导致网络通信问题,可在删除旧的子网后
# 重新启动云主机网络/或重启云主机,以重新初始化默认路由
sudo systemctl restart network
# 不同操作系统重启网络的操作可能不相同
可以ping一下,确认129网段IP可以正常通讯
10. 删除原42网段子网配置
42网段的子网以没有意义,可以直接删除
通过上述方式操作后,目前OpenStack集群工作正常,没有发现其他问题
如果有更好的方法,欢迎大家沟通学习
顺便吐槽一下,OpenStack的官方文档在有些场景下还是不够全面,除了这里的migration没有文档,还有升级mitaka到新发布的newton都也不知道怎么操作,唉!还是自己再摸索摸索吧