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

2024-04-25 23:19:48 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我们有以下场景:

  1. 在许多软件中,我们的一个软件是Ambari(帮助管理hadoop平台)。在
  2. 它的工作原理如下-'n'个集群机器报告给1个ambari服务器。在
  3. 对于要进行报告的每台群集计算机,我们必须在每台群集计算机上安装ambari代理,并使用支持它报告和启动ambari代理的ambari服务器修改其属性文件。在

我们能做什么-- 我们成功地将ambari服务器和ambari代理分别安装在我们的集群机器上,并借助于单独的厨师食谱。在

我们不能做的事-- 如何修改每台机器的ambari代理属性文件,使其指向我们的ambari服务器IP。一般来说,作为chef编排的一部分,将基于集群的软件连接起来的优雅方式是什么?在

注:。ambari服务器是动态创建的,因此它的IP是在运行时获得的。在

有可能吗?有没有其他办法可以解决上述问题?在

谢谢


Tags: 文件ip服务器hadoop机器代理属性软件
3条回答

这是Chef-server和{a2}的场景。在

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

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

现在改变你的安巴里特工配方。我不知道代理的配置文件是什么样子,但我们只对一行感兴趣,其中设置了主服务器的IP。在

创建配置文件的模板并将其添加到食谱中。将harcoded主IP值替换为<%= @master_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

如果有chef服务器,可以搜索运行ambari服务器配方的节点。那你就用那台机器的IP。或者,您可以为ambari服务器使用DNS名称,然后更新DNS条目以在新服务器可用时指向它。在

其他选项包括使用confd with etcd,或使用consur。每一个都允许您使用服务器的ip更新配置post chef。在

这听起来是Consul的完美用例。在

Flexible key/value store for dynamic configuration, feature flagging, coordination, leader election and more. Long poll for near-instant notification of configuration changes.

我们已经开始用它来解决一个听起来很像你的问题。历史上,任何一种配置都是由一个大的Python代码库处理的,其中包含了大量的Chef。我们一直在努力用执政官来代替它的一部分。在

我很快就看到了气泡群的信息。多亏了consurs healthchecks,我可以在云服务的控制面板之前看到机器的供应和上线。在

它所做的不仅仅是作为一个密钥/值存储。它还可以处理服务发现和执行任何类型的定期运行状况检查,您可能正在通过Sensu之类的东西进行跟踪。在

我强烈建议你去看看。在

希望这有点帮助。祝部署顺利!在

相关问题 更多 >