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