• Ambari 不能配置 Kafka 监听host的问题


    问题:Ambari下Kafka多IP监听配置

    环境:Ambari 1.7.0 , Hadoop 2.2 Kafka 0.8.1.2.2.0.0

    现象:

    Ambari 中是不能配置Kafka的host.name配置项的,Ambari配置时,使用Ambar中为节点指定的hostname值,比如node1.google (Kafka自身的默认值是localhost)

    一般在内网配置Ambari,用的hostname都是内网的IP,如 192.168.1.1 node1.google 192.168.1.2 node2.google 。这样导致Kafka启动时只监听192.168.1.x的IP。

    虽然Ambari中可以有Custom kafka-broker,可以自定义选项,但是对host.name配置项是不起作用的,因为Ambari配置Kafka的host.name时根本不读这些用户输入的配置。

    代码:

    参见 git下目录(ambari-server/src/main/resources/common-services/KAFKA/0.8.1.2.2/package/scripts)中的kafka.py 和 params.py 两个文件

    可以看到首先是 params.py 读配置,然后kafka.py 根据配置写到Kafka的配置文件中去。

    关键代码:

    params.py

    conf_dir = "/etc/kafka/conf"
    kafka_user = config['configurations']['kafka-env']['kafka_user']
    kafka_log_dir = config['configurations']['kafka-env']['kafka_log_dir']
    kafka_pid_dir = status_params.kafka_pid_dir
    kafka_pid_file = kafka_pid_dir+"/kafka.pid"
    hostname = config['hostname']
    

     kafka.py

    kafka_server_config = mutable_config_dict(params.config['configurations']['kafka-broker'])
        kafka_server_config['broker.id'] = brokerid
        kafka_server_config['host.name'] = params.hostname
        kafka_server_config['kafka.metrics.reporters'] = params.kafka_metrics_reporters
    

    解决:

    根据kafka的文档,要是不配置host.name则默认监听0.0.0.0,所以我们只要在 kafka.py 中加入 del kafka_server_config['host.name'] 这句即可,注意要在Ambari-server主机上改,然后把该文件同步到Kafka的节点

    上述环境下kafka.py所在目录是:/var/lib/ambari-agent/cache/stacks/HDP/2.2/services/KAFKA/package/scripts

    配置好后,在Ambari上重启Kafka即可

    Happy end。。。。

  • 相关阅读:
    applicaitonContext属性未注入, 请在applicationContext.xml中定义SpringContextHolder.
    HTML
    c# Path路径类
    C# 继承
    C# 结构体
    c# 类
    c#方法
    wpf开源控件MahApps.Metro
    c#数组类型
    c#类型转换
  • 原文地址:https://www.cnblogs.com/i2u9/p/ambari-kafka-multiip.html
Copyright © 2020-2023  润新知