我们目前有一个动态提供的 IP 地址,并且正在切换到一个静态 IP 地址。因此,我需要更改我们 3 台 LAMP 服务器上的 IP 地址。这些服务器还为 DNS 运行 bind9,为电子邮件运行 postfix/dovecot。(MySQL 实际上是作为 Percona 数据库集群运行的,这可能无关紧要。)
我认为我有一个很好的策略,但想与以前可能成功完成此操作的其他人一起检查我的逻辑。
其概念是一次停止每台机器上的所有 Web、数据库和邮件服务,将流量推送到剩余的两台服务器之一,并运行以下脚本将旧 IP 地址替换为新 IP 地址,然后重新启动服务器并尝试将流量推回它,然后如果一切顺利,则继续使用集群中的下一个服务器。
我使用 grep -r 在系统中查找旧 IP 地址的实例,并且需要确保我没有遗漏任何需要考虑的重要内容。
find /etc/bind -type f -print0 | xargs -0 sed -i 's/old.ip.address/new.ip.address/g'
find /etc/postfix -type f -print0 | xargs -0 sed -i 's/old.ip.address/new.ip.address/g'
find /etc/apache2 -type f -print0 | xargs -0 sed -i 's/old.ip.address/new.ip.address/g'
find /etc/postfix -type f -print0 | xargs -0 sed -i 's/old-ip-address/new-ip-address/g'
find /etc/bind -type f -print0 | xargs -0 sed -i 's/rev.address.ip.old/rev.address.ip.new/g'
作为澄清点,grep -r 在 /etc/bind/zones 表、/etc/postfix 配置文件和 /etc/apache2 配置文件中找到了 IP 地址引用。用连字符分隔的 IP 地址也在后缀配置文件中找到。反向 IP 地址也在 /etc/bind/named.conf.local 文件中找到,也需要替换。
谁能看看我是否在这里遗漏了什么?我在生产环境中执行此操作……当然,这不是最理想的情况。