我打算将虚拟机从一个数据中心迁移到另一个数据中心。 虚拟机有一个公共IP地址,将在新的数据中心更改为另一个公共IP地址。
我打算更改虚拟机的DNS条目,因此它将反映新的IP,但是我希望在DNS传播更改时保持机器可访问性。
有没有一种方法可以configuration一些路由或iptables规则,以便任何数据包发往我的第一(旧)IP地址转发到我的第二(新)IP地址?
这样,用户宽度caching的第一个IP的DNS条目仍然能够访问虚拟机。
过了一段时间(1或2天),我可以安全地删除路由规则。
我对IP表不太了解,甚至不太了解路由。 除了一些学术论文,我甚至无法提供关于此的提示。
我认为这是解决问题的错误方法。
问题是,你想在DNS传播时维护服务,但是如果你有访问DNS,那么你可以简单地把DNS传播时间减less到几秒,无论你的可接受的中断是什么。
你的域的logging看起来是这样的:
<hostname> 14400 IN A <IP Address>
第二个值是DNS可以秒caching的时间长度(TTL)。 改变这个
<hostname> 10 IN A <IP Address>
现在每个人都会在10秒内收到新的更新。 当然,在这个变化的过程中,你的DNS将会增加负担。
所以序列是
“小”的价值是你的服务在SLA中可以承受的任何停机
在两个虚拟机之间创build一些隧道链接 – OpenVPN,GRE,无论你的船漂浮什么。
完成之后,将旧虚拟机的IP分配给新虚拟机的通道接口,并从当前分配给旧虚拟机的任何接口中删除该IP。
完成之后,您只需在旧VM上添加一条路由,即可将IP路由到隧道接口上的新VM。
警告:根据虚拟机的types(因此虚拟网卡),这可能是不可能的。 另外,如果沿着新虚拟机的path有任何出口过滤,则具有旧虚拟机源地址的数据包将被丢弃; 在这种情况下,当源地址是旧地址时,您将需要configuration新的VM以通过隧道接口(因此也就是旧VM)进行路由。
就实际命令而言,请阅读iproute2的联机帮助页。