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。。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM