我们如何使用 Chef 连接基于集群的软件?
how can we wire up cluster based softwares using chef?
作为平台设置编排的一部分,我们使用我们的 python 包在云中的机器集群上安装各种软件包。
我们有以下场景:
- 在众多软件中,我们的软件之一是 Ambari(帮助管理 hadoop 平台)。
- 它的工作原理如下 - 'n' 向 1 个 ambari-server 报告的集群机器数量。
- 为了每台集群机器做报告,我们必须在每台集群机器上安装 ambari-agent 并用它应该报告的 ambari 服务器修改它的属性文件并启动 ambari-agent。
我们能做什么--
在单独的厨师食谱的帮助下,我们成功地在我们的集群机器中分别安装了 ambari 服务器和 ambari 代理。
我们无法做到的——
我们如何修改每台机器的 ambari-agent 属性文件,使其指向我们的 ambari 服务器 IP。一般来说,将基于集群的软件作为 Chef 编排的一部分的优雅方式是什么?
注意:。 ambari-server 是动态创建的,因此它的 IP 是在 运行 时间内获得的。
可能吗?有没有解决上述问题的方法?
谢谢
如果您有 Chef 服务器,则可以搜索运行 ambari-server 配方的节点。然后你使用那台机器的IP。或者,您可以为 ambari 服务器使用 DNS 名称,然后在可用时更新 DNS 条目以指向新服务器。
其他选项包括将 confd 与 etcd 结合使用,或使用 consul。每个都允许您使用服务器的 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。我们一直在努力用 Consul 替换它的某些部分。
真正让我印象深刻的是看到通过集群发送的信息以多快的速度上升到可见度。由于 Consuls 健康检查,我可以在云服务的控制面板之前看到机器配置和联机方式。
它不仅仅充当 key/value 商店。它还可以处理服务发现并执行您当前可能正在通过 Sensu 等工具跟踪的任何类型的定期健康检查。
我强烈建议您检查一下。
希望这对您有所帮助。祝部署顺利!
这是 Chef-server and search 的场景。
您必须更改安装 ambari 代理的配方才能动态获取 ambari 服务器的 IP。
首先你 运行 配置你的 ambari 服务器的食谱。当 Chef 成功 运行 时,它会将有关该节点的一些信息填充到 Chef-server,包括应用于该特定节点的配方和角色。您可以转到 chef-server 并检查节点属性,特别是 "recipes" 属性。
现在更改您的 ambari 代理程序。我不知道代理的配置文件到底是什么样子,但我们只对其中设置主服务器 IP 的一行感兴趣。
创建配置文件的模板并将其添加到食谱中。将硬编码的主 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
作为平台设置编排的一部分,我们使用我们的 python 包在云中的机器集群上安装各种软件包。
我们有以下场景:
- 在众多软件中,我们的软件之一是 Ambari(帮助管理 hadoop 平台)。
- 它的工作原理如下 - 'n' 向 1 个 ambari-server 报告的集群机器数量。
- 为了每台集群机器做报告,我们必须在每台集群机器上安装 ambari-agent 并用它应该报告的 ambari 服务器修改它的属性文件并启动 ambari-agent。
我们能做什么-- 在单独的厨师食谱的帮助下,我们成功地在我们的集群机器中分别安装了 ambari 服务器和 ambari 代理。
我们无法做到的—— 我们如何修改每台机器的 ambari-agent 属性文件,使其指向我们的 ambari 服务器 IP。一般来说,将基于集群的软件作为 Chef 编排的一部分的优雅方式是什么?
注意:。 ambari-server 是动态创建的,因此它的 IP 是在 运行 时间内获得的。
可能吗?有没有解决上述问题的方法?
谢谢
如果您有 Chef 服务器,则可以搜索运行 ambari-server 配方的节点。然后你使用那台机器的IP。或者,您可以为 ambari 服务器使用 DNS 名称,然后在可用时更新 DNS 条目以指向新服务器。
其他选项包括将 confd 与 etcd 结合使用,或使用 consul。每个都允许您使用服务器的 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。我们一直在努力用 Consul 替换它的某些部分。
真正让我印象深刻的是看到通过集群发送的信息以多快的速度上升到可见度。由于 Consuls 健康检查,我可以在云服务的控制面板之前看到机器配置和联机方式。
它不仅仅充当 key/value 商店。它还可以处理服务发现并执行您当前可能正在通过 Sensu 等工具跟踪的任何类型的定期健康检查。
我强烈建议您检查一下。
希望这对您有所帮助。祝部署顺利!
这是 Chef-server and search 的场景。
您必须更改安装 ambari 代理的配方才能动态获取 ambari 服务器的 IP。
首先你 运行 配置你的 ambari 服务器的食谱。当 Chef 成功 运行 时,它会将有关该节点的一些信息填充到 Chef-server,包括应用于该特定节点的配方和角色。您可以转到 chef-server 并检查节点属性,特别是 "recipes" 属性。
现在更改您的 ambari 代理程序。我不知道代理的配置文件到底是什么样子,但我们只对其中设置主服务器 IP 的一行感兴趣。
创建配置文件的模板并将其添加到食谱中。将硬编码的主 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