大家好,我是create17,见字如面。
今天给大家分享:Ambari集成服务时,如何限制服务组件A与组件B不能部署在同一节点?
关键字:Ambari集成服务如何限制组件不在同一节点。
希望我接下来的分享给大家带来一些帮助和启发🤔
昨天小伙伴在 Ambari 学员群中提出问题:Ambari 集成 doris 时。将 FE 组件角色分为 FE(Follower)、FE(Observer),前者为 Master、后者为 Slave。在写部署脚本时,如何限制 Follower 与 Observer 不会部署在同一节点?
这里其实可以抽象出:Ambari集成服务时,如何限制服务组件A与组件B不能部署在同一节点?
这里有两个思路,一个是页面弹窗提示;一个是报错提示。
下面详细说说报错提示的方式如何实现:
假设集成 doris 服务时的组件名称为:FOLLOWER 和 OBSERVER。我们可以通过 Ambari 内置的 python 库来获取 doris 服务 FOLLOWER 和 OBSERVER 组件所选择部署的节点列表:
# 获取当前组件所在的节点
hostname = config['agentLevelParams']['hostname']
# 获取follower组件要部署的节点
follower_hosts = default("/clusterHostInfo/follower_hosts", [])
# 获取observer组件要部署的节点
observer_hosts = default("/clusterHostInfo/observer_hosts", [])
然后我们就可以在 install() 方法中进行判断了:
def install(self, env):
import params
env.set_params(params)
if (params.hostname in params.follower_hosts) and (params.hostname in params.observer_hosts):
# 当前节点不能同时安装observer与follower组件
Logger.info("所有安装Follower节点: {0}".format(params.follower_hosts))
Logger.info("所有安装Observer节点: {0}".format(params.observer_hosts))
raise RuntimeError("Follower与Observer不能安装在同一节点, 请调整配置后重新安装")
此时,如果 observer 与 follower 组件规划部署在同一节点,则会报错提示,从而达到限制的目的。
已将这个知识点更新到了《Ambari自定义服务集成实战》的知识星球中,星球更多精华帖可查看: https://docs.qq.com/sheet/DWHplSXZPeFhPVW9n?tab=BB08J2
好了,本次分享就到这里了,如果小伙伴们有更好的解决方式,欢迎交流哦~