机房搬迁总结

2018/10/31 python

由于公司原有机房合同到期,因此需要搬迁。新机房和旧机房是在一栋楼,所以搬迁也就是从2楼搬到3楼。

今天,搬迁工作终于接近尾声。从9月5号开始做准备,至今已经接近2个月。搬迁中虽然遇到过一些小问题,但好在都能在客户使用前得以解决。

在此也要感谢网络组,dba同学的鼎力支持。

此文主要记录搬迁中遇到的问题及解决办法。

信息统计

共计69台机器,包括宿主机和物理机,其中90%机器系统均为ESXI 5.x,虚拟机居多,实际虚机有450台。由于CMDB里有统计不全或统计错误的问题,期间编写了获取ESXI 下虚机信息的脚本,参见 get_esxi_host_and_vm_info

统计的信息内容如下:

  • 确认哪些机器需要搬迁,
  • 统计机器的SN号和2楼所在机柜
  • 宿主机下所有虚拟机的IP地址,所属服务,开机自启设置(基于现有cmdb及脚本)
  • 物理机网口、宿主机网口(vmnic0-11)所属vlan
  • 统计有心跳线的设备及对端设备IP
  • 心跳线所在网口及对端设备心跳线网口(heartbeat健康检查采用心跳线直连,避免广播风暴影响)
  • 确认各个机器所属的环境(一共有6套环境)
  • 确认机柜数量&机柜电压&电流上限
  • 3楼单机柜位置可容纳机器数量(10个)

迁移方案

重要设备提前迁移

涉及设备为核心代理,公共数据库等重要设备,需要提前迁移,规避宿主机起不来的风险

刚开始采用的方案是导出导入模板的方案,导入导出相当于复制了2遍,非常耗时,后来采用 Vcenter 克隆的方案

ESXI中的物理适配器(vmnic0-11)与物理网口对应关系

由于各个vminic所在的 vlan 不同,在 ESXI 中只能看到vmnic网卡及vlan的对应关系,但是搬迁时是需要拔掉网线的,因此需要确认各个物理适配器(vmnic0-11)与机器网口的对应关系。待搬迁到3楼时,根据网络组提供的交换机端口,找到对应的物理网口,连接网线。

默认情况下机器左侧第一个网口是vmnic0,第二个是vmnic1,依次类推即可。但是部分机器有后来加的网卡,这里又有三种情况:

外加网卡分布 ESXI 中适配器vmnic名称 vmnic 适配器数字顺序
一排2个网口 左侧的网口对应 vminic5,右侧的网口对应vminic4 从右往左递增
两排2个网口 第一排右侧的网口对应 vminic4,第二排左侧的网口对应 vminic7 自上而下,从右往左递增
两排4个网口 第一排右侧的网口对应 vminic4,第二排左侧的网口对应 vminic11 自上而下,从右往左递增

搬迁前所做动作

设备贴IP标签

1,之前设备存在没贴标签和标签上IP错误的情况,根据CMDB信息及脚本统计的设备SN号,确认设备IP,之后在设备前面贴标签,以便搬迁时快速找到对应设备

2,在设备背部网口旁贴标签,以便搬迁到3楼后快速找到网口,插入交换机网线。

以下为之前整理的设备背部网口标签说明

标签内容 说明 搬迁后动作
宿-管 宿主机管理网口 插入到vlan200所在交换机口
未插网线 依然不插网线
未贴标签的网口 之前插的有网线,搬迁至3楼后均插入到trunk口 待宿主机开机后,根据之前统计的vmnic0-7口与vlan的对应关系表,进入配置–>网络–>vmnic0-7–>属性–>编辑,修改vmnic的vlan id,和之前的一样

验证将普通口改为 trunk 口的可行性

搬迁前基本上所有宿主机的 vmnic 网口所属vlan均为access模式,即指定了 vlan id。由于每个 vmnic下的vlan id 均不同,网络组配置起来就比较麻烦,

将所有端口改为trunk 模式后,网络组可以使用 int range gi 批量配置,提高效率,降低出错率。待开机后,运维人员只需参照之前统计好的网口及vlan id对应表,在 vmnic 的属性处,指定 vlan id 即可。

无 fstab文件的虚机迁移方案

部分虚机无 fstab 文件及 分区表,重启后无法进入到 grub。后来经测试迁移前挂起--迁移后打开电源可以不用重启虚机及服务,决定采用此方案。

采用此方案时,需要注意一下几点:

1)关机虚拟机的开机自启

若宿主机开启虚拟机随宿主机一起启动,即便迁移前挂起,虚拟机还是会重启。需要取消虚拟机的开机自启设置,挂起才会生效。

关闭方法:依次点击配置-->虚拟机启动/关机-->属性-->取消允许虚拟机与系统一起自动启动和停止前的勾 close_vm_auto_start.png close_vm_auto_start-2.png

2)有VIP的主备虚拟机挂起及打开顺序

VIP在哪台哪台就是主。

挂起:先从后主

打开:先主后从

系统配置检查

路由表检查:是否将路由写入到/etc/network/interfaces

磁盘挂载检查:nfs,mfs对应挂载项是否写入到/etc/fatab

配置文件备份

1) 基础

IP ip a,路由 route -n,deb包dpkg -al

/etc/network/interfaces,/etc/hosts,/etc/hostname,/etc/crontab,/etc/fstab

2) 应用配置

apache,openresty,nginx 及自研软件

合并宿主机网口

部分宿主机占用网口较多, 最多的一个从vmnic0 到 vmnic11,且vmnic2 -vmnic11所在的vlan 都是同一个。因交换机端口数有限,如搬迁到3楼后还占用12个口,会造成其他机器无口可用,因此需要合并网口。

经测试,可以在线修改,但还是建议晚上修改。修改时需更改虚拟机的网络标签,将vmnic3 - vmnic11 改为vmnic1 或 vmnic2即可。完成后宿主机就只占用了vmnic0 - vmnic3,共4个网口,相比之前减少了8个。

规划3楼机柜图

主要依据宿主机所属环境,遵循主备机器各放一个机柜的原则。规划完后即可统计出需要的网线长度。我们的机器是从5U处开始摆放的,一般上面五台用1.5米,下面5台2米即可。

打标签

提前给电源线,网线,设备前置后置面板的IP标签打好,搬迁时贴到对应设备上。此处的网口需提前向网络组申请,待网络组提供后即可打签。

以宿主机IP 192.168.100.10(网络适配器 vmnic0-3,双电源)为例,标签内容及数量如下:

标签内容 数量
电源线-192.168.100.10 2
192.168.100.10 2
192.168.100.10-vmnic0-Gi/3 2
192.168.100.10-vmnic1-Gi/4 2
192.168.100.10-vmnic2-Gi/5 2
192.168.100.10-vmnic3-Gi/6 2

说明:Gi/3,Gi/4,Gi/5,Gi/6为连接的交换机端口。

关闭磁盘自检(fsck)

# Method 1
cp /etc/fstab /etc/fstab.bak && sed -ir '/^\//s/.$/0/g' /etc/fstab
sed -ir '/^UUID/s/.$/0/g' /etc/fstab
diff /etc/fstab /etc/fstab.bak  
# Method 2
sed -i.bak '/.*\/.*/s/\(2\)\s*$/0/' /etc/fstab
# Method 3 & 4
sed -ri.bak '/.*\/.*/s/(2)\s*$/0/' /etc/fstab
sed -ri.bak 's#^(.*)/(.*)(2)(\s*)$#\1/\20\4#g' /etc/fstab
# 使用扩展正则(--regexp-extended)
# -i参数后使用".bak",替换前先备份原文件,备份文件名为原文件名.bak
# /.*\/.*/ 匹配有挂载点的行,防止修改其他注释行

搬迁中需做动作

  • 网线贴签
  • 再次确认是否关闭宿主机上虚拟机的开机自启
  • 联系dba备份数据库
  • 已经处于关机状态的虚拟机重命名,后面加一个off
  • 挂起顺序:先从后主 打开顺序:先主后从

搬迁过程中遇到的问题及解决办法

系统启动时卡在grub处

现象:

system_block_on_booting.png

解决办法:

vim /boot/grub/grub.cfg, 搜索timeout,将 terminal_output gfxterm 下的 -1或-2(下方标红处)改为 30

system_block_on_booting-2.png

heartbeat启动失败

现象:

heartbeat[4912]: 2018/10/10_23:21:47 ERROR: Current node [cm-proxy34-171-dexin] not in configuration!
heartbeat[4912]: 2018/10/10_23:21:47 info: By default, cluster nodes are named by `uname -n` and must be declared with a 'node' directive in the ha.cf file.
heartbeat[4912]: 2018/10/10_23:21:47 info: See also: http://linux-ha.org/wiki/Ha.cf#node_directive
heartbeat[4912]: 2018/10/10_23:21:47 WARN: Logging daemon is disabled --enabling logging daemon is recommended
heartbeat[4912]: 2018/10/10_23:21:47 ERROR: Configuration error, heartbeat not started.
heartbeat[4912]: 2018/10/10_23:21:47 debug: Exiting from pid 4912 [rc=6]

因主机名与ha.cf配置文件中的node名称不一致导致无法启动

解决办法:

使用hostname将主机名改为和 /etc/ha.d/ha.cf 中的一致即可。也可先将主机名改为与node名称一致,待启动heartbeat后,再使用 hostname 命令改回原来的主机名即可。

ESXI 重启后找不到存储器

NFS 有一台ESXI宿主机启动后,第二块存储器始终添加不上。

后连上显示器,按F2重置ESXI配置,重新启动系统,重新配置IP,重启网络,再用VpxClient连接后,存储器连接即恢复正常。猜测原因可能是ESXI分区表乱了,初始化配置后恢复。

这次搬迁算是全程参与了,期间也遇到了不少坑,熬了不少的夜,但是收获也是不少,希望机器搬迁到3楼后更稳定~

后记

前天晚上(2018/11/06) 最后一批机器已经搬到楼上了,中间又遇到了存储器添加不上的问题,所幸后来解决了(处理方法参见本文中的搬迁过程中遇到的问题及解决办法),搬迁之旅终于告一段落…

Search

    Table of Contents