在我见过的所有 Chef 示例中,自动缩放的工作都非常简单——您先配置 DB 主机,然后再配置 Web 服务器。您可以根据需要创建任意数量的网络服务器——它们都将使用相同的数据库主机(无需更改)。
但是,如果我的配方/节点配置说明书需要在其他一些后端节点上进行配置更改怎么办?我怎么能用厨师做到这一点?例如,我有现有的 BGP 路由反射器(鸟),我提供新的鸟边缘节点,并且作为依赖项,我必须生成新的 iBGP 对等配置并重新读取 BGP 路由反射器节点上的配置文件。
最佳做法是什么?我应该使用 chef-push-jobs 将更改推送到 BGP 路由反射器节点吗?
Chef 内部并没有真正的系统。概括地说,您所说的是“服务发现”,当一个服务想要找出网络上另一个服务的信息时。Chef 通过
search()
API 有一个简单的 SD 系统,但也有专用的 SD 系统,如 Consul、Eureka 和 mDNS/Autoconf。一旦您以可以访问的方式获得服务数据,下一个问题是如何处理通过网络传播的更新。Chef 本身通常使用守护程序模式服务,每 X 秒运行一次聚合。这意味着如果您将 X 设置为 60,那么在 119 秒后所有内容都会更新。如果你想要更快的东西,那么可以选择将通知从一个节点推送到另一个节点,或者使用中央编排系统来推送原始更改,然后处理级联更新。Chef Push Jobs 理论上可以在这里使用,但我不会真正推荐它。Consul + Consul Templates 之类的东西可能是您想要快速配置和 SD 更新的东西,或者只是让 Chef 的间隔运行来处理不太频繁变化的事情。