在 Linux 中快速与另一台服务器交换 IP 地址

在 Linux 中快速与另一台服务器交换 IP 地址

我有一种方法可以做到这一点,但不确定它是否是最好的。

我有两台服务器,我们将其称为旧服务器和新服务器。两台服务器都运行不同版本的 CentOS。(5.0 和 5.7)两台服务器也位于同一子网中的不同 IP 上,但其他方面运行相同的软件、防火墙规则和配置。我正在将此主机从 Xen 切换到 VMWare,构建新服务器更容易。

Server-old 获得大量流量,既通过静态 NAT 路由,也直接到其 IP(通过连接到 vpn 的其他服务器)

为了使事情顺利进行(因为不是每个人都使用 DNS 名称),我需要尽快交换 IP 地址,最好是在半夜流量较慢的时候。

我计划编辑两台服务器的 /etc/sysconfig/network-scripts/ifcfg-eth0 文件并输入它们的“新”地址,并打开两个 ssh 会话:

  • 服务器-旧类型ifdown eth0; sleep 10; ifup eth0
  • 服务器-新类型ifdown eth0;ifup eth0

然后在 Server-old 上按下回车键,然后尽可能快地在 Server-new 上按下回车键

我想这是我能切换的最快方式,而且不会引起任何 IP 地址冲突。或者有更好的方法来交换它们吗?

答案1

这是最快的方法如果中间没有任何东西。所以我最喜欢从真正的控制台执行此操作。当网络断线并且您无法通过 ssh 连接时,情况就很糟糕了。

答案2

确保两个服务器上的时间相同,设置一个 cron 作业在凌晨 2:00(或您选择的任何“半夜”时间)启动,并运行它:

service network restart

然后在第二天早上或者运行后删除该 cron 作业。

答案3

...比快速完成操作系统级 IP 管道更重要的是,您还必须更新 LAN 上所有设备上的 ARP 协议缓存。如果这两台服务器的大部分流量都来自一台外边缘路由器,那么您可以在重新管道 IP 地址后立即清除 arp 缓存。数据包(我假设是以太网 LAN)通过以太网地址(以线路上的物理网卡为目标)在您的 LAN 中流动,如果您只是重新管道 IP 地址,您的路由器和其他设备将在一段时间内继续将数据包发送到错误的网卡。(时间长短取决于它们的 ARP 缓存如何工作。)

此外,某些 IP 堆栈不允许您使用已在 LAN 上成功 RARP(反向 ARP)的 IP 地址。因此,cron 自动“网络重启”建议(在我看来)很可能会失败。当一个框执行“添加”时,它可能会看到另一个框响应 RARP。同时,另一个框的 cron 作业开始取出 IP... 火车失事。

从控制台手动完成所有操作(如果您有一个可远程访问的控制台服务器则更好),只需几分钟。

如果您要完全更换机箱,我还会尝试以太网插头混用...预先配置新机箱,将其连接到交换机(这样链路就打开了),而那个微型 LAN 上没有其他任何东西。然后从旧服务器拔下以太网插头,将新服务器移至真正的 LAN 结构,然后清除 ARP 缓存。

相关内容