跨多个服务器管理配置文件
Posted
技术标签:
【中文标题】跨多个服务器管理配置文件【英文标题】:Managing configuration files across multiple servers 【发布时间】:2013-04-23 13:50:07 【问题描述】:在多台服务器 (~20) 上运行 Rails 应用程序,我希望能够从一个位置管理配置文件(主要是 *.yml,还有 SSL pem/certs 文件和其他基于文本的文件),以便任何更改到文件,或一个新文件,添加到所有服务器。
我也想通过 git 拥有这个内容源控制器。
更新不频繁,我希望保持应用程序不变,以便从文件中读取数据,就像现在一样。
有什么可用的解决方案,Zookeeper 是否合适?
【问题讨论】:
【参考方案1】:我没有使用过 Zookeeper,但我相信您应该能够使用诸如 Puppet 或 Chef 之类的工具来执行您需要的操作。
【讨论】:
谢谢,我已经在使用 Chef 进行各种安装,但是,我不知道 Chef 用于配置文件管理,您对 Chef 的这种用法有什么具体的建议吗? 抱歉,我没有文件并让 Chef/Puppet 将它们写入所有服务器上的某个位置? 你和大厨搞清楚了吗?【参考方案2】:我们正在使用 ZooKeeper 进行实时设置。 一种想法是使用注册表。
假设您有一个名为 Arst 的组件。
您可以进行一些配置 - 让我们说这些文件夹下的 redis,每个文件夹代表一个不同的实例:
/dbs/redis/0 (host, port, db, password as children)
/dbs/redis/1 (host, port, db, password as children)
/dbs/redis/prod (host, port, db, password as children)
如果你的组件 Arst 需要使用实例 0,你可以有一个这样的注册表:
/arst/redis/0
如果您想添加 1,只需添加节点,应用程序中的子手表将为您更新内容而无需重新启动。 但这并不是很简单,而且管理设置对于像 qa 这样的团队来说可能会很痛苦。
所以我也将开发一个控制台来帮助解决这个问题。我们将开源一些部分。
【讨论】:
谢谢,除非我错过了什么,这是动物园管理员的用法。你如何将它连接到 Rails 应用程序? 我说你可以把你的配置放到zookeeper中。我想我可能有点误解了这个要求——如果我现在理解正确的话,你确实在寻找一个配置管理数据库 (CMDB)。以上是关于跨多个服务器管理配置文件的主要内容,如果未能解决你的问题,请参考以下文章