1

我有一个如下所示的环境(Graphite):

  • N 个工作服务器
  • 1 个中继服务器,将工作转发到这些工作服务器
  • 1 个可以查询中继服务器的 Web 服务器。

我想使用 Chef 在 EC2 中设置和部署此环境,而不必单独创建每个工作服务器,获取它们的 IP 并将它们设置为中继说明书中的属性,创建该中继,获取 IP,将其设置为属性Web 服务器说明书等。

有没有一种使用 chef 的方法,我可以确保环境已正确部署、配置和运行,而无需手动设置 IP?特别是,我希望能够添加一个工作服务器并让中继更新其工作列表,或者将中继服务器换成另一个,并让 Web 服务器相应地更新其引用。

也许这不是 Chef 的目的,而是更多地用于每个服务器的配置和部署,如果是这种情况,那么有什么技术可以促进这一点?

4

2 回答 2

2

你需要的东西是:

  1. Knife-ec2 - 这用于启动/停止 Amazon EC2 实例。
  2. chef-server - 能够在您的食谱中使用搜索。它也应该可以从您的 EC2 实例访问。
  3. 搜索- 有了它,您将能够在厨师提供的节点中找到,正是您使用不同查询需要的节点。

我最近写了一篇文章How to Run Dynamic Cloud Tests with 800 Tomcats, Amazon EC2, Jenkins and LiveRebel。它涉及负载均衡器的安装,并且负载均衡器必须知道它所平衡的服务器的所有 IP 地址。您可以查看平衡节点的配方,它是如何寻找负载平衡器的:

search(:node, "roles:lr-loadbalancer").first

并查看loadbalancer recipe,它如何查找所有平衡节点并更新 apache 配置文件:

lr_nodes = search(:node, "role:lr-node")

template ::File.join( node[:apache2][:home], 'conf.d', 'httpd-proxy-balancer.conf' ) do
  mode 0644
  variables(:lr_nodes => lr_nodes)
  notifies :restart, 'service[apache2]'
end
于 2012-10-02T14:07:21.150 回答
1

也许你正在寻找这个?

http://www.infochimps.com/platform/ironfan

于 2012-10-24T17:27:17.067 回答