配置管理:跨机器依赖关系

配置管理:跨机器依赖关系

我使用过 puppet 等工具来管理单个系统,通常成功率很高。puppet 的不足之处在于它不擅长管理单个服务器之外的依赖关系。

例如,在 MySQL 服务器上我配置 puppet 来执行以下操作:

  • 在机器上配置身份验证以访问我的 LDAP 服务器
  • 配置 apt 以使用我的本地存储库镜像
  • 安装 MySQL 包
  • 写入my.cnf
  • 启动 MySQL
  • 在数据库中创建用户

在这组步骤中,解决了许多依赖关系 - 例如,除非我已经安装了软件包,否则我无法启动数据库服务,而除非正确配置了 apt repo,否则我无法执行此操作。

此 MySQL 服务器是主->主复制设置中的一个框。在理想情况下,puppet(或其他类似工具)将允许我表示服务器 B 需要等待服务器 A 可用,然后尝试与其建立复制关系。

这里有很多文字 - 基本上我想问的是:是否有像 puppet 这样的工具可以管理像这样的机器间依赖关系?

答案1

如果你使用 Puppet,那么出口资源(因此存储的配置) 是完成这项工作的工具。这允许您在节点之间共享信息。如果需要,还包括实际的复制设置。

另外,虽然我自己不是订阅者,但有些人将他们的清单/运行视为非确定性的。这意味着一次运行不一定能声明节点的完整结果。节点可能需要两次或多次运行才能达到其所需状态。

由于在主服务器可用之前配置 MySQL 从服务器不会造成太大的损失,因此您可能希望采用这种方法。不过,在我看来,这种方法并不那么“聪明”。

答案2

我不是 Puppet 用户,但我相信其他人会提供更合适的答案,但这听起来像可以相对轻松地实现在启动服务之前进行检查的包装脚本。

答案3

Puppet 可以很好地完成这一点。让每台服务器导出一个资源,以配置其他适当的服务器,以便在它们启动并运行后执行需要做的事情。我没有 MySQL 的示例,但我们配置了一个很多(目前大约有 80 个) DRBD 资源以及我们所有的 Nagios 配置。

答案4

控制层可能正是您想要的。您可以将其与 puppet 结合使用,因此学习难度不会太大。

相关内容