我使用过 puppet 等工具来管理单个系统,通常成功率很高。puppet 的不足之处在于它不擅长管理单个服务器之外的依赖关系。
例如,在 MySQL 服务器上我配置 puppet 来执行以下操作:
- 在机器上配置身份验证以访问我的 LDAP 服务器
- 配置 apt 以使用我的本地存储库镜像
- 安装 MySQL 包
- 写入my.cnf
- 启动 MySQL
- 在数据库中创建用户
在这组步骤中,解决了许多依赖关系 - 例如,除非我已经安装了软件包,否则我无法启动数据库服务,而除非正确配置了 apt repo,否则我无法执行此操作。
此 MySQL 服务器是主->主复制设置中的一个框。在理想情况下,puppet(或其他类似工具)将允许我表示服务器 B 需要等待服务器 A 可用,然后尝试与其建立复制关系。
这里有很多文字 - 基本上我想问的是:是否有像 puppet 这样的工具可以管理像这样的机器间依赖关系?
答案1
答案2
我不是 Puppet 用户,但我相信其他人会提供更合适的答案,但这听起来像可以相对轻松地实现在启动服务之前进行检查的包装脚本。
答案3
Puppet 可以很好地完成这一点。让每台服务器导出一个资源,以配置其他适当的服务器,以便在它们启动并运行后执行需要做的事情。我没有 MySQL 的示例,但我们配置了一个很多(目前大约有 80 个) DRBD 资源以及我们所有的 Nagios 配置。
答案4
控制层可能正是您想要的。您可以将其与 puppet 结合使用,因此学习难度不会太大。