有一台阿里雲伺服器a,用作測試伺服器,一台華為伺服器b,用作生產伺服器。均搭建相同配置和版本apache kafka。現在需遠端生產和消費kafka。在伺服器b均無錯誤,在伺服器a死活不通。
iptable input和output均開啟kafka埠。
telnet通。
log沒有任何報錯,就是沒接收到。
tcpdump檢測兩台機器傳送的tcp包是一樣的。
首先,可以肯定網上的說法是沒錯的。kafka監聽的位址(listeners)和廣播的位址(advertised.listeners)是會有預設值的。但是為什麼伺服器a行不通,伺服器b行得通呢?這點目前應該沒有文章提到過。就是網絡卡數量。
華為伺服器只有一塊網絡卡,網絡卡位址是常用區域網位址
192.168.***.***
所以傳送給該伺服器的tcp報文會通過路由閘道器**到該網絡卡。無論是外網內網最終都只會指向乙個位址。針對此類情況,網上絕大多數文章所說指定監聽和廣播位址的做法是沒有必要的。
而阿里雲不同了,阿里雲伺服器有兩塊網絡卡,內網網絡卡編號eth0,外網網絡卡編號eth1,如果不指定kafka配置的位址,預設監聽內網網絡卡eth0,而遠端訪問一定是訪問eth1,則kafka是絕對監聽不到的。所以這類情況需要把配置位址改掉。普遍情況是在兩塊網絡卡,遠端呼叫的機器和哪一塊網絡卡處於同乙個環境就要把位址換成哪一塊網絡卡的位址。
Kafka實現訊息生產和消費
首先建立乙個主題 root 192 kafka 2.12 2.2.1 bin kafka topics.sh zookeeper localhost 2181 create topic heima partitions 2 replication factor 1 zookeeper 指定了kafk...
Kafka生產者和消費者
一 生產者 1 分割槽的原因 方便在集群中擴充套件 每個分割槽都可以通過調整副本數,改變分割槽副本所佔的kafka節點。每個topic又有多個分割槽,這樣就可以靈活的改變集群的大小和所佔的機器數 可以提高併發 同乙個topic的資料,可以分散到不同的分割槽,而不同的分割槽資料可以被不同的consum...
Kafka的生產者和消費者
org.slf4j slf4j log4j12 1.7.25 org.slf4j slf4j api 1.7.25 org.apache.kafka kafka clients 0.10.2.1 至少需要2個jar public class sendmessageproducer long end ...