我有两个 debian 服务器,第一个是运行的(主),后者是出于安全目的。
我想让第二台服务器像第一台的双胞胎一样,不断地同步它,以便在第一台出现任何故障时切换到它。
我正在考虑每天晚上同步它们,这样:
- 同步包,如https://stackoverflow.com/questions/187629/how-do-i-preserve-installed-applications-when-migrating-ubuntu-to-another-platfo
- rsync 所有 /var/www 的东西(不包括缓存目录)
- rsync 所有 /etc/ 目录
在 rsync 脚本中,我对 IP 进行了控制,仅当我在主服务器上时才会激活脚本。
我的问题是在所有这些过程中我应该关心什么:
- 也许某些 /etc/ 文件要从同步中排除?密码和影子?但我想让一些新用户从主服务器传播到从服务器
- 也许其他一些目录要同步?
任何帮助表示赞赏!
您基本上要问的是如何建立一个系统,让我可以拥有一个与我的生产环境相同的开发环境,用于安全审计、测试等?
上面的两条评论各提供了一半的答案:
对于服务器配置和软件/补丁
您可能想要Puppet / Chef / Radmind 之类的东西。
这些工具可用于确保您的服务器“相同”——运行相同的软件,具有相同的配置(或“足够相似的配置,差异无关紧要”——即仅在 IP 地址、SSL 证书上有所不同, ETC。)
这也是您可以管理的地方,例如
/etc/passwd
确保用户(用户名和数字 UID/GID)在机器之间同步并且所有内容都匹配。对于您的软件本身(
/var/www
在上面的示例中),您肯定需要在此处安装某种版本控制系统。
您可以直接在每台机器上查看内容,也可以使用上述工具打包和分发。
两种处理软件的方式都有优点和缺点需要考虑 - 您可以更好地根据自己的需要决定使用哪个选项。
典型的划线方式是“如果需要编译就打包分发,如果是脚本和数据可以直接签出”。
至少我生成并测试了我自己的脚本:它运行完美!
我希望它可以帮助别人!
不能同步的Critical等文件: rsync_etc.exclude.conf 文件:
只需同步包和数据。无需克隆每个文件。