簡體   English   中英

如何從公用計算機到專用網絡上的Kafka安裝產生消息?

[英]How to produce messages from public computers to a Kafka installation on a private network?

我的Kafka服務器運行所在的系統有兩個NIC,一個具有公共IP(135.220.23.45),另一個具有私有IP(192.168.1.14)。 專用NIC連接到總共由7台計算機組成的子網(所有地址均為192.168.1.xxx)。 Kafka已使用HDP作為服務安裝,並已通過zookeeper.connect = 192.168.1.14:2181和listeners = PLAINTEXT://192.168.1.14:6667配置。 我已經在使用以下命令托管kafka服務器的系統上啟動了一個使用者:[bin / kafka-console-consumer.sh --bootstrap-server 192.168.1.14:6667 --topic test --from-beginning]。

當我在專用子網上的任何機器上啟動生產者(使用[bin / kafka-console-producer.sh --broker-list 192.168.1.14:6667 --topic test])時,消費者通常會收到消息。

我想在公共系統上啟動生產者,並在kafka服務器上運行的消費者接收消息。 我相信可以通過偽裝IP並將所有外部請求轉發到135.220.23.45:15501(我已選擇15501來接收kafka消息)到192.168.1.14:6667來實現。 為此,我在firewalld上設置了此端口轉發規則:[port = 15501:proto = tcp:toport = 6670:toaddr = 192.168.1.14]。

但是,這似乎不起作用,因為當我使用[bin / kafka-console-producer.sh --broker-list 135.220.23.45:15501 --topic]在外部系統上啟動生產器時,無法接收消息消費者。

我已經為監聽器和advertised.listeners嘗試了不同的kafka配置設置,但是沒有一個起作用。 任何幫助將不勝感激。

您需要為內部和外部流量定義不同的端點,以使其正常工作。 按照目前的配置,當您連接到135.220.23.45:15501時,Kafka會回復“請在192.168.1.14:6667上與我交談,這是無法從外部訪問的,此后一切都會失敗。

通過KIP-103, Kafka可以擴展,以允許您定義多個端點來滿足這些情況。 完全公開,我還沒有嘗試過,但是以下幾方面的內容至少應該使您踏上正確的道路。

advertised.listeners=EXTERNAL://135.220.23.45:15501,INTERNAL://192.168.1.14:6667
inter.broker.listener.name=INTERNAL
listener.security.protocol.map=EXTERNAL:PLAINTEXT,INTERNAL:PLAINTEXT

更新:

我已經在不感興趣的三台ec2機器的群集上進行了測試。 我使用了以下配置:

# internal ip: 172.31.61.130
# external ip: 184.72.211.109

listeners=INTERNAL://:9092,EXTERNAL_PLAINTEXT://:9094
advertised.listeners=INTERNAL://172.31.61.130:9092,EXTERNAL_PLAINTEXT://184.72.211.109:9094
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL_PLAINTEXT:PLAINTEXT
inter.broker.listener.name=INTERNAL

這樣一來,我既可以從內部計算機也可以從家里的筆記本電腦發送消息:

# Create topic 
kafka-topics --create --topic testtopic --partitions 9 --replication-factor 3 --zookeeper 127.0.0.1:2181

# Produce messages from internal machine
[ec2-user@ip-172-31-61-130 ~]$ kafka-console-producer --broker-list 127.0.0.1:9092 --topic testtopic                                                                                                               
>internal1
>internal2
>internal3

# Produce messages from external machine
➜  bin ./kafka-console-producer --topic testtopic --broker-list 184.72.211.109:9094
external1
external2
external3

# Check topic
[ec2-user@ip-172-31-61-130 ~]$ kafka-console-consumer --bootstrap-server 172.31.52.144:9092 --topic testtopic --from-beginning
external3
internal2
external1
external2
internal3
internal1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM