Apr 152020
因为我要做服务器的迁移,要求IP地址和以前完全一致,这个阿里云是支持的,可以自己定义网段,甚至可以指定这个网段的ip地址,看上去都狠不错,结果我就遇到了这个bug。
下面就是bug重现的步骤
- 创建vpc和交换机,这个没啥特别,正常创建
- 创建一个nat网关,按需
- 创建一个安全组
- 申请3个eip
- 把一个ip地址分配给nat网关
- 创建2个windows虚拟机,使用相同的安全组
好玩的时候开始了。
对其中的一个vm1,关机,内网ip进行修改,再开机。
另外一个vm2不修改。
改完ip地址,才去分配公网的eip。分别给他们分配一个EIP。
这时候就出现很好玩的东西,
VM1,不能ping,也肯定无法访问,
vm2,可以。
不能ping的vm,就是因为修改过内网ip地址。
临时解决的办法是
这个时候,如果我把vm2的ip内网ip地址修改,还是可以ping 通。
先映射完,再修改内网ip就没问题。
这个问题提交给阿里云,24小时内,给了一个完整的回复,问题的原因非常有意思
原因如下:
1. vm状态已经running,但实际在执行windows的sysprep,目前这个过程 ecs管控是感知不到的,而且windows的sysprep过程中不允许掉电和重启
2. 在sysprep未完成前,用户因为要修改私网ip,所以重启了vm,导致sysprep失败
3. 实例再也无法正常启动(guestOS已经损坏)
所以跟是否修改私网ip无关。具体怎么解决这个问题,我们拉了个群正在讨论中,比较麻烦,据说vmware 为了解决这个问题,重新实现了一个定制版的sysprep