如何处理影响许多服务器的 IP 更改?

如何处理影响许多服务器的 IP 更改?

由于位置变更,我们必须将一些服务器移至新 IP 地址(从10.X.*.*10.Y.*.*)。我们借此机会清理 IP 分配,从杂乱无章的设置变为更加有序的设置,因此新旧 IP 之间没有太多对应关系。系统几乎全部:

  • 运行 Ubuntu(14.04,还有几个 12.04 和一个我们计划升级的 10.04)
  • 由 Puppet 和 Foreman 管理(主要是软件包安装和服务配置)
  • 使用 etckeeper 配置,以将功能相关的配置保存在 git 中
  • 通过 配置静态 IP /etc/network/interfaces

目前,我们有两个选择:

  • 提前在文件副本中进行所有更改,并在移动后服务器重新启动时使用脚本切换文件。
  • 提前在 git 分支中做出所有更改,然后在移动后服务器重新启动时执行git checkout new-branch(或根据方便,合并更改)。

本质上两种方法是一样的,只是使用的工具不同。当然,也有手动方法,但那样很容易出错。

要进行的更改涉及更新 IP interfaces、DNS 服务器 IP、nagios、munin 配置 IP 等等。

我还有什么其他选择?

答案1

最后,我们决定使用 git 方法,更改 IP 是我们最不担心的问题。:)

步骤:

  • 使用 Puppet 安装和设置 etckeeper,并为我们 Gitlab 实例上的每个服务器创建一个 repo。我们选择使用gitignore忽略除选择文件和目录之外的所有内容的 repo。
  • 让团队成员创建一个包含所需更改的分支(使用通用名称,如newip)。此练习还涉及将任何感兴趣的文件或目录添加到 git,将例外添加到gitignore
  • 检查新分支上的提交。
  • 在切换当天,cd /etc; git fetch origin newip:newip && git merge newip在每个系统上,在关闭之前。

我们遇到了一些合并冲突,这些冲突来自于为测试其他选项而进行的更改(并且没有撤消),但这些冲突很容易解决。

相关内容