AWS 有OpsWorks,这是他们自己对 Chef 的看法。
我们有几个原因[1] 为什么我们要使用“正常”的厨师服务器/客户端设置。
但是 OpsWorks 有一个我在 chef-server/-client 设置中找不到的功能:基于负载的实例。
它们允许堆栈通过基于多个负载指标中的任何一个在流量高时启动额外实例并在流量低时停止实例来处理可变负载。
对于普通的 Opscode Chef 服务器/客户端设置,我找不到太多这样的功能。只有几篇博文解释了如何使用 AWS api 和 Chef-server API 来监控 AWS 实例并在特定条件下触发节点引导。自建脚本。
如果有的话,这通常是如何用 Chef 解决的?这完全是 Chef 的任务,还是应该使用第三种工具来管理这种扩展?如果是这样,是否有任何与厨师服务器设置相关的内容?
[1]:原因是:
- 它将我们与 AWS 联系在一起:这当然是亚马逊想要的,但我们宁愿选择更中立的设置。
- 它不允许在 AWS 之外运行某些节点,例如另一个 vm-provider 上的后备服务器,或者我们现有的网关服务器等等。
- 我们已经有一套定制的配方,需要稍微重写才能在 OpsWorks 环境中工作,例如使用搜索、数据包等。
Chef(大部分)不是供应工具。您将使用您选择的云提供商(AWS ASG、OpenStack Heat 等)的自动扩展功能。扩展需要对组中每台服务器的负载有一个整体的了解,而 Chef 一次只在一个节点上运行。有一个名为 chef-provisioning 的工具可以管理从 Chef DSL 创建服务器(和其他东西),但是您必须编写一些东西来为其加载数据(可能通过 CloudWatch API)并提出您自己的扩展规则(阈值、预测分析等)。将 Chef Client/Server 与 Autoscaling 组一起使用时,您通常会使用 Packer 为自己构建一个自定义 AMI,其中包含您的 Chef 配置和验证器密钥,以便他们在出现时向 Chef 服务器注册。