路由到公用IP(用于VM WAN迁移)

我打算将虚拟机从一个数据中心迁移到另一个数据中心。 虚拟机有一个公共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将会增加负担。

所以序列是

  1. 确定当前的TTL值,并将其改为小
  2. 等到原来的TTL时间过去了,这样可以确保每个人都拥有减lessTTL的新纪录
  3. 更改logging的IP地址(每个人都将在新的TTL持续时间内获得此更新 – 几秒钟)
  4. 把TTL改回更合理的东西

“小”的价值是你的服务在SLA中可以承受的任何停机

在两个虚拟机之间创build一些隧道链接 – OpenVPN,GRE,无论你的船漂浮什么。

完成之后,将旧虚拟机的IP分配给新虚拟机的通道接口,并从当前分配给旧虚拟机的任何接口中删除该IP。

完成之后,您只需在旧VM上添加一条路由,即可将IP路由到隧道接口上的新VM。

警告:根据虚拟机的types(因此虚拟网卡),这可能是不可能的。 另外,如果沿着新虚拟机的path有任何出口过滤,则具有旧虚拟机源地址的数据包将被丢弃; 在这种情况下,当源地址是旧地址时,您将需要configuration新的VM以通过隧道接口(因此也就是旧VM)进行路由。

就实际命令而言,请阅读iproute2的联机帮助页。