我们如何使用厨师连接基于群集的软件?

时间:2015-07-06 08:54:33

标签: python automation chef orchestration

作为平台设置编排的一部分,我们使用python包在云中的机器集群上安装各种软件包。

我们有以下情况:

  1. 在许多软件中,我们的软件之一是Ambari(帮助管理hadoop平台)。
  2. 它的工作原理如下 - ' n'报告给1个ambari-server的集群机器数量。
  3. 对于要进行报告的每台集群机器,我们必须在每台集群机器上安装ambari-agent,并使用支持报告和启动ambari-agent的ambari服务器修改其属性文件。
  4. 我们能做什么 - 在单独的厨师烹饪书的帮助下,我们成功地在我们的集群机器中安装了ambari服务器和ambari代理。

    我们无法做到的事情 - 我们如何修改每台机器的ambari-agent属性文件,使其指向我们的ambari服务器IP。总的来说,作为Chef orchestration的一部分,将基于群集的软件连接起来的优雅方式是什么?

    NB :. ambari-server是在飞行中创建的,因此它的IP是在运行时获得的。

    有可能吗?有没有上述问题的替代方案?

    由于

3 个答案:

答案 0 :(得分:2)

如果您有厨师服务器,则可以搜索运行ambari-server配方的节点。然后你使用该机器的IP。或者,您可以使用ambari-server的DNS名称,然后更新DNS条目以指向新服务器。

其他选项包括使用confd与etcd或使用consul。每个都允许您使用服务器的IP更新配置post-chef。

答案 1 :(得分:2)

这听起来像Consul的完美用例。

  

灵活的键/值存储,用于动态配置,功能标记,   协调,领导选举等。近乎即时的长期民意调查   配置更改通知。

我们已经开始使用它来解决与您的声音非常相似的问题。从历史上看,任何类型的配置都是由一个庞大的Python代码库处理的,其中包含大量的Chef。我们一直在努力用Consul替换它的某些部分。

真正令我印象深刻的是看到通过群集发送的信息如何迅速增加到可见性。由于Consuls的健康检查,我可以在云服务的控制面板之前看到机器配置并上线。

除了充当键/值存储之外,还有很多其他功能。它还可以处理服务发现并执行您当前可能通过Sensu等跟踪的任何类型的常规健康检查。

我强烈建议您查看。

希望这有点乐于助人。祝部署顺利!

答案 2 :(得分:1)

这是Chef-serversearch的方案。

您必须更改安装ambari代理的配方以动态获取ambari服务器的IP。

首先运行配置ambari服务器的配方。当Chef成功运行时,它会将有关节点的一些信息填充到Chef-server,包括应用于该特定节点的配方和角色。您可以转到chef-server并检查节点属性,尤其是“recipes”属性。

现在更改你的ambari代理配方。我不知道代理的配置文件到底是什么样的,但我们只对一行感兴趣,其中设置了主服务器的IP。

创建配置文件的模板并将其添加到cookbook。用<%= @master_ip %>

替换带编码的主IP值

更改ambari代理配方,使其正确设置此值:

# search for the server node. I expect server node was configured with
# ambari::server recipe. If not, change it to the appropriate value and
# don't fortget to escape colons.
ambari_server_node = search( :node, 'recipes:ambari\:\:server' )

# now create the configuration file on ambari agent node from 
# the previously created template and pass the value for the @master_ip
# variable
template '/right/path/on/target/node/config.file' do
  [...]
  variables( :master_ip => ambari_server_node['ipaddress'] )
end