配置內外網IP訪問kafka集群

      網友投稿 3135 2022-05-30

      場景說明

      在kafka使用場景中,有時希望訪問kafka集群時內網和外網可以通過不同的IP訪問,而kafka集群只配置了內網IP的訪問接口。本文對雙網卡(一個網卡IP對應內網、一個網卡IP對應外網)和單網卡(對應內網IP)兩種場景提供訪問Kafka集群的方式。

      配置方式

      下面配置方式以FusionInsight HD中的使用方式說明。

      場景一:雙網卡

      配置原理

      Kafka Broker節點主機配置雙網卡,一個網卡對應內網IP段,供內網訪問使用,一個網卡對應外網IP段,供外網訪問使用。

      配置原理是:把Broker對應主機的內外網IP都加入到Kafka listener配置中,內外網使用對應的IP去訪問。

      配置前準備

      1.?????? 確定內外網IP的對應關系

      文中以FI雙平面舉例,三個節點,各個節點管理IP(外網)和業務IP(內網)對應關系如下圖:

      業務平面IP是192.168網段,目前此網段3個節點IP可訪問Kafka集群,管理平面IP是8.5網段,此網段3個節點IP不可以正常訪問kafka集群。下文假設需要把8.5網段當成外部可訪問的網段平面。

      2.?????? 安裝Kafka客戶端并查看配置

      1)Kafka客戶端的安裝方式見產品文檔中軟件安裝的配置客戶端部分。

      2)創建具有Kafkaadmin權限的用戶,具體見產品文檔中添加用戶和角色部分。

      3)登錄Kafka客戶端,查看Kafka各節點的信息

      切換到Kafka客戶端安裝目錄,例如“/opt/kafkaclient”。

      cd /opt/kafkaclient

      執行以下命令,配置環境變量。

      source bigdata_env

      執行以下命令,進行用戶認證。(普通模式跳過此步驟)

      kinit 組件業務用戶

      執行以下命令,切換到Kafka客戶端安裝目錄。

      cd Kafka/kafka/bin

      執行./kafka-broker-info.sh --zookeeper zk業務IP:24002/kafka,查詢結果為kafka節點的brokerid與kafka業務ip節點的對應關系。

      4)后臺查看目前集群中listener.security.protocol.map和listeners兩個參數的配置

      查看Kafka集群各個節點上的/opt/huawei/Bigdata/FusionInsight_Current/1_XX_Broker/etc/server.properties路徑,其中1_XX_Broker修改為集群中的具體路徑,查看并拷貝保存server.properties文件中的listener.security.protocol.map和listeners配置文件信息到本地。

      具體配置方式

      說明:listener.security.protocol.map是-名稱和安全協議之間的映射,-名稱與安全協議這個鍵值對以冒號分隔,映射條目之間以逗號分隔。listeners是kafka的-,配置格式是:-名稱://IP:Port,不同-配置間用逗號隔開。

      本文環境中broker-1節點這兩個參數設置如下:

      listener.security.protocol.map = PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL,TRACE:SASL_PLAINTEXT

      listeners = SASL_PLAINTEXT://192.168.131.10:21007,PLAINTEXT://192.168.131.10:21005,SSL://192.168.131.10:21008,SASL_SSL://192.168.131.10:21009,TRACE://192.168.131.10:21013

      具體配置方式如下:

      1)? 在原listener.security.protocol.map配置中添加新IP訪問的-名稱和訪問協議,例如,使用SASL_PLAINTEXT協議,則新增映射EXTERNAL_SASL_PLAINTEXT:SASL_PLAINTEXT,EXTERNAL_SASL_PLAINTEXT是自定義-名稱,SASL_PLAINTEXT是協議名,kafka中支持的協議類型有PLAINTEXT、SASL_PLAINTEXT、SASL_SSL、SSL四種。

      2)? 在各個節點的原listeners配置中添加新IP訪問地址EXTERNAL_SASL_PLAINTEXT://8.5.131.10:21112,EXTERNAL_SASL_PLAINTEXT必須與listener.security.protocol.map中新添加的-名一致,8.5.131.10為新增的訪問Kafka的IP,21112為此IP訪問的端口號。注意:各個節點上的listeners不一樣,區別是IP地址不同,各個節點上對應的是本機的IP,修改時,新增的IP地址需與原IP地址是對應的。端口號必須與原配置中的端口號不同,且端口未被使用。查看端口是否使用方式:lsof -i:21112,21112為查詢的端口號,如果沒有查到信息則此端口未被使用。

      3)? 修改各個節點的listener.security.protocol.map信息:

      執行kafka-configs.sh --entity-type brokers --entity-name 1 --alter --bootstrap-server 192.168.131.10:21007 --add-config listener.security.protocol.map=[PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL,TRACE:SASL_PLAINTEXT ,EXTERNAL_SASL_PLAINTEXT:SASL_PLAINTEXT] --command-config ../config/consumer.properties

      --entity-name對應參數1表示brokerid,是kafka-broker-info.sh中查詢出的Broker_ID;--bootstrap-server參數是原集群訪問的地址,--command-config參數是consumer.properties的絕對或者相對路徑,文件中的安全協議security.protocol參數必須與--bootstrap-server中的端口對應;listener.security.protocol.map的值是步驟1中修改后的協議,執行時必須添加“[]”,否則執行報錯。

      執行時按./kafka-broker-info.sh --zookeeper zk業務IP:24002/kafka查詢出的brokerid依次執行(本文中有三個kafka節點,因此上述命令執行三次,即命令中的

      --entity-name 分別設置為 1,2,3)。

      4)? 修改各個節點的listeners信息:

      執行kafka-configs.sh --entity-type brokers --entity-name 1 --alter --bootstrap-server 192.168.131.10:21005 --add-config listeners=[PLAINTEXT://192.168.131.10:21005,SASL_PLAINTEXT://192.168.131.10:21007,SSL://192.168.131.10:21008,SASL_SSL://192.168.131.10:21009,TRACE://192.168.131.10:21013, EXTERNAL_SASL_PLAINTEXT://8.5.131.10:21112]

      配置內外網IP訪問kafka集群

      --entity-name對應參數1表示brokerid;--bootstrap-server參數是原集群訪問的地址,--command-config參數是consumer.properties的絕對或者相對路徑,文件中的安全協議參數必須與--bootstrap-server中的端口對應;listeners中的IP必須與brokerid是一一對應,具體對應關系是kafka-broker-info.sh中brokerid與listeners中原配置IP以及新增IP一一對應。執行時按brokerid依次執行。

      例如,本文中對應關系如下:

      BrokerID

      原kafka訪問IP

      新增Kafka訪問IP

      1

      192.168.131.10

      8.5.131.10

      2

      192.168.131.11

      8.5.131.11

      3

      192.168.131.12

      8.5.131.12

      修改時,--entity-name 1對應的listeners中的IP是原IP 192.168.131.10和新增IP 8.5.131.10。

      5)? 配置完成后原IP可繼續訪問,新添加的IP按新配置的端口和協議訪問,例如,EXTERNAL_SASL_PLAINTEXT對應的是SASL_PLAINTEXT協議,生產數據的命令是kafka-verifiable-producer.sh --max-messages 100 --topic mytest --broker-list 8.5.131.11:21112 --producer.config ../config/producer.properties

      說明:配置時,這兩個參數原本的配置不能刪除,只能在原來的配置上增加新的配置,否則使用kafka-configs.sh命令會報錯。添加新的配置后,zk上/brokers/ids/目錄下各節點的信息也會改變,可能造成kafka-broker-info.sh信息的展示與添加配置前不同。

      例如,listeners配置時新添加的協議在原來協議后面,則不會改變zk上/brokers/ids/目錄下各節點的host信息,kafka-broker-info.sh仍顯示原IP與brokerid的映射關系。listeners=[PLAINTEXT://192.168.131.10:21005,SASL_PLAINTEXT://192.168.131.10:21007,SSL://192.168.131.10:21008,SASL_SSL://192.168.131.10:21009,TRACE://192.168.131.10:21013 ,EXTERNAL_SASL_PLAINTEXT://8.5.131.10:21112]

      而listeners配置時新添加的協議在原來協議前面,則可能會改變zk上/brokers/ids/目錄下各節點的host信息,kafka-broker-info.sh顯示新IP與brokerid的映射關系。

      listeners=[ EXTERNAL_SASL_PLAINTEXT://8.5.131.10:21112,PLAINTEXT://192.168.131.10:21005,SASL_PLAINTEXT://192.168.131.10:21007,SSL://192.168.131.10:21008,SASL_SSL://192.168.131.10:21009,TRACE://192.168.131.10:21013]

      場景二:單網卡

      配置原理

      Kafka Broker節點主機只對應一個網卡,供內網訪問使用,防火墻映射出一個可供外網訪問的IP,Kafka每個節點內網IP和端口與映射外網相同IP的不同端口,外網訪問時,使用此映射的IP和端口。

      配置原理是:把Broker對應主機的內網IP和端口加入到Kafka listener配置中,Broker對應的外網IP和端口加入到kafka advertised.listener配置中,外網使用對應的IP和端口去訪問,實際訪問的還是內網的IP和端口。

      配置前準備

      1.?????? 網絡映射新的IP和端口

      此方案中不同節點映射為同一IP不同端口,映射關系如下:

      原IP

      原端口

      映射IP

      映射端口

      192.168.131.10

      21112

      8.5.131.10

      21027

      192.168.131.11

      21112

      8.5.131.10

      21028

      192.168.131.12

      21112

      8.5.131.10

      21029

      192.168網段是原集群中的業務IP,8.5網段是新映射的IP,外網可直接訪問此網段。訪問時,不同端口實際上訪問的是對應的內網IP。

      2.?????? 安裝Kafka客戶端并查看配置

      1)Kafka客戶端的安裝方式見產品文檔中軟件安裝的配置客戶端部分。

      2)創建具有Kafkaadmin權限的用戶,具體見產品文檔中添加用戶和角色部分。

      3)登錄Kafka客戶端,查看Kafka各節點的信息

      切換到Kafka客戶端安裝目錄,例如“/opt/kafkaclient”。

      cd /opt/kafkaclient

      執行以下命令,配置環境變量。

      source bigdata_env

      執行以下命令,進行用戶認證。(普通模式跳過此步驟)

      kinit 組件業務用戶

      執行以下命令,切換到Kafka客戶端安裝目錄。

      cd Kafka/kafka/bin

      執行./kafka-broker-info.sh --zookeeper zk業務IP:24002/kafka,查詢結果為kafka節點的brokerid與kafka業務ip節點的對應關系。

      4)后臺查看目前集群中listener.security.protocol.map和listeners兩個參數的配置

      查看Kafka集群各個節點上的/opt/huawei/Bigdata/FusionInsight_Current/1_XX_Broker/etc/server.properties路徑,其中1_XX_Broker修改為集群中的具體路徑,查看并拷貝保存server.properties文件中的listener.security.protocol.map和listeners配置文件信息到本地。

      具體配置方式

      說明:listener.security.protocol.map是-名稱和安全協議之間的映射,-名稱與安全協議這個鍵值對以冒號分隔,映射條目之間以逗號分隔。listeners是kafka的-,配置格式是:-名稱://IP:Port,不同-配置間用逗號隔開。advertised.listeners是kafka對外開放的-,配置格式是:-名稱://IP:Port,不同-配置間用逗號隔開。

      本文環境中broker-1節點這兩個參數設置如下:

      listener.security.protocol.map = PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL,TRACE:SASL_PLAINTEXT

      listeners = SASL_PLAINTEXT://192.168.131.10:21007,PLAINTEXT://192.168.131.10:21005,SSL://192.168.131.10:21008,SASL_SSL://192.168.131.10:21009,TRACE://192.168.131.10:21013

      具體配置方式如下:

      1) 在原listener.security.protocol.map配置中添加新IP訪問的-名稱和訪問協議,例如,使用SASL_PLAINTEXT協議,則新增映射EXTERNAL_SASL_PLAINTEXT:SASL_PLAINTEXT,EXTERNAL_SASL_PLAINTEXT是自定義-名稱,SASL_PLAINTEXT是協議名,kafka中支持的協議類型有PLAINTEXT、SASL_PLAINTEXT、SASL_SSL、SSL四種。

      2) 在各個節點的原listeners配置中添加新IP訪問地址EXTERNAL_SASL_PLAINTEXT://8.5.131.10:21112,EXTERNAL_SASL_PLAINTEXT必須與listener.security.protocol.map中新添加的-名一致,8.5.131.10為新映射的外網訪問Kafka的IP,21112為此IP訪問的端口號。注意:各個節點上的listeners不一樣,區別是IP地址不同,各個節點上對應的是本機的IP,新映射的IP地址是一樣的。修改時,新增的IP地址對應的端口號必須與原配置中的端口號不同,且端口未被使用。查看端口是否使用方式:lsof -i:21112,21112為查詢的端口號,如果沒有查到信息則此端口未被使用。

      3) 修改各個節點的listener.security.protocol.map信息:

      執行kafka-configs.sh --entity-type brokers --entity-name 1 --alter --bootstrap-server 192.168.131.10:21007 --add-config listener.security.protocol.map=[PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL,TRACE:SASL_PLAINTEXT ,EXTERNAL_SASL_PLAINTEXT:SASL_PLAINTEXT] --command-config ../config/consumer.properties

      --entity-name對應參數1表示brokerid,是kafka-broker-info.sh中查詢出的Broker_ID;--bootstrap-server參數是原集群訪問的地址,--command-config參數是consumer.properties的絕對或者相對路徑,文件中的安全協議security.protocol參數必須與--bootstrap-server中的端口對應;listener.security.protocol.map的值是步驟1中修改后的協議,執行時必須添加“[]”,否則執行報錯。

      執行時按./kafka-broker-info.sh --zookeeper zk業務IP:24002/kafka查詢出的brokerid依次執行(本文中有三個kafka節點,因此上述命令執行三次,即命令中的

      --entity-name 分別設置為 1,2,3)。

      4) 修改各個節點的listeners信息:

      執行kafka-configs.sh --entity-type brokers --entity-name 1 --alter --bootstrap-server 192.168.131.10:21005 --add-config listeners=[PLAINTEXT://192.168.131.10:21005,SASL_PLAINTEXT://192.168.131.10:21007,SSL://192.168.131.10:21008,SASL_SSL://192.168.131.10:21009,TRACE://192.168.131.10:21013, EXTERNAL_SASL_PLAINTEXT:// 192.168.131.10:21112]

      --entity-name對應參數1表示brokerid;--bootstrap-server參數是原集群訪問的地址,--command-config參數是consumer.properties的絕對或者相對路徑,文件中的安全協議參數必須與--bootstrap-server中的端口對應;listeners中的IP必須與brokerid是一一對應。執行時按brokerid依次執行。注意此時EXTERNAL_SASL_PLAINTEXT對應的是內網IP和內網配置的端口。

      5) 修改各個節點的advertised.listeners信息:

      執行kafka-configs.sh --entity-type brokers --entity-name 1 --alter --bootstrap-server 192.168.131.10:21005 --add-config advertised.listeners=[PLAINTEXT://192.168.131.10:21005,SASL_PLAINTEXT://192.168.131.10:21007,SSL://192.168.131.10:21008,SASL_SSL://192.168.131.10:21009,TRACE://192.168.131.10:21013, EXTERNAL_SASL_PLAINTEXT://8.5.131.10:21027]

      --entity-name對應參數1表示brokerid;--bootstrap-server參數是原集群訪問的地址,--command-config參數是consumer.properties的絕對或者相對路徑,文件中的安全協議參數必須與--bootstrap-server中的端口對應;advertised.listeners中的原IP必須與brokerid是一一對應,新增IP的端口必須與此節點對應的映射端口一一對應。執行時按brokerid依次執行。注意此時EXTERNAL_SASL_PLAINTEXT對應的是映射的外網IP和外網訪問的端口。

      6) 配置完成后原IP可繼續訪問,新添加的IP按新配置的端口和協議訪問,例如,EXTERNAL_SASL_PLAINTEXT對應的是SASL_PLAINTEXT協議,生產數據的命令是kafka-verifiable-producer.sh --max-messages 100 --topic mytest --broker-list 8.5.131.10:21027 --producer.config ../config/producer.properties

      說明:配置時,這兩個參數原本的配置不能刪除,只能在原來的配置上增加新的配置,否則使用kafka-configs.sh命令會報錯。

      回退方式

      1.?????? 如果刪除此次配置,針對各個節點在kafka客戶端執行如下兩條命令:

      kafka-configs.sh --entity-type brokers --entity-name 1 --alter --bootstrap-server 192.168.131.10:21005 --delete-config listener.security.protocol.map --command-config ../config/consumer.properties

      kafka-configs.sh --entity-type brokers --entity-name 1 --alter --bootstrap-server 192.168.131.10:21005 -- delete-config listeners --command-config ../config/consumer.properties

      kafka-configs.sh --entity-type brokers --entity-name 1 --alter --bootstrap-server 192.168.131.10:21005 -- delete-config advertised.listeners --command-config ../config/consumer.properties

      執行時按./kafka-broker-info.sh --zookeeper zk業務IP:24002/kafka查詢出的brokerid依次執行刪除。刪除時各個節點配置都需要刪除,各個節點命令僅--entity-name參數不一致。此刪除方式僅刪除listener.security.protocol.map和listeners相關的配置,對其他配置無影響,刪除后這兩個參數恢復為默認配置。刪除后需重啟Kafka集群。

      分布式 Kafka

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:對AWVS掃描規則的分析
      下一篇:小花帶你一周入門html+css(六)CSS進階之兼容性與濾鏡丨【WEB前端大作戰】
      相關文章
      亚洲AV无码一区二区二三区入口| 高清在线亚洲精品国产二区| 亚洲免费在线观看| 国产精品亚洲专区无码WEB| 亚洲免费福利在线视频| 亚洲三级视频在线| 亚洲国产福利精品一区二区| 亚洲精彩视频在线观看| 亚洲天堂一区二区三区四区| 亚洲国产中文在线二区三区免| 亚洲av无码国产精品夜色午夜| 亚洲av永久无码精品漫画 | 亚洲午夜理论片在线观看| 国产精品久久亚洲不卡动漫| 激情亚洲一区国产精品| 亚洲五月丁香综合视频| 在线精品亚洲一区二区| 亚洲国产欧美一区二区三区| 国产精品亚洲精品日韩动图| 亚洲国产精品碰碰| 亚洲永久无码3D动漫一区| 亚洲精品无码不卡在线播放HE| 亚洲AV无码专区在线播放中文| 亚洲情a成黄在线观看动漫尤物| 蜜芽亚洲av无码精品色午夜| 亚洲美女自拍视频| 激情综合亚洲色婷婷五月| 亚洲精品国产首次亮相| 在线观看亚洲视频| 久久99亚洲综合精品首页| 亚洲乱码精品久久久久..| 亚洲爱情岛论坛永久| 亚洲美女精品视频| 亚洲一卡2卡3卡4卡5卡6卡| 亚洲AV无码国产剧情| 亚洲午夜福利精品久久| 亚洲国产精品国自产拍AV| 精品亚洲aⅴ在线观看| 国产精品亚洲四区在线观看| 亚洲av永久无码精品网址| 亚洲日韩在线观看免费视频|