阿里雲 centos7 系統下 外網kafka(用自帶的zookeeper) 搭建筆記
kafka 下載
http://kafka.apache.org/downloads
你可以選擇 用xshell 來安裝檔案上傳外掛
在xshell 中執行命令 yum install lrzsz -y 然後進入放你kakfa的目錄
我kafka的目錄為 /server
命令 cd ./server
rz 彈出檔案選擇框 選擇你下載的檔案 然後等待上傳完畢
也可以選擇 下載 winscp 這個桌面軟體
頁面如下 直接複製黏貼就好
檔案上傳後 執行命令
tar -zxvf +kafka檔名 解壓檔案
在這裡我的命令是 tar -zxvf kafka_2.11-2.1.0.tgz
mv tar -zxvf kafka_2.11-2.1.0.tgz kafka
這裡是為了 之後 找這個資料夾更容易些
然後更改配置檔案 進入config 資料夾
配置zookeeper.properties 加入如下屬性
maxClientCnxns=0
tickTime=2000
initLimit=10
syncLimit=5
然後配置server.properties 其他的屬性 不用動只需要 修改
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://47.92.73.124(你的外網ip):9092
首先 吧2181 埠和9092埠 加入阿里雲的安全組 這是必要的
開放你的防火牆(我這裡沒用iptables 直接用的firewall)
firewall-cmd --zone=public --add-port=2181/tcp --permanent
firewall-cmd --zone=public --add-port=9092/tcp --permanent
然後更新防火牆
firewall-cmd --reload
如果你是自己的測試伺服器 記憶體不大 記得修改 kafka-server-start.sh 指令碼,修改 KAFKA_HEAP_OPTS 處 -Xmx 和 -Xms 的值
這是 設定kafka佔用的記憶體
然後開始啟動kafka
在之前改了名字的kafka目錄下 執行命令(以下是用我自己路徑進行的)
首先必須要有Java的環境 沒有的話 自行百度在此不再贅述
執行命令 啟動zookeeper
bin/zookeeper-server-start.sh config/zookeeper.properties
成功輸出大量無error日誌
執行命令 啟動kafka
bin/kafka-server-start.sh config/server.propertie
成功輸出大量無error日誌
建立topic
bin/kafka-topics.sh --create --zookeeper 172.26.198.123:2181 --replication-factor 1 --partitions 1 --topic kafkatest
成功出現Created topic "test
partitions 這個屬性是 指定你建立的topic 具有多少分割槽
下面命令 檢視該zookeeper中有多少 topic
bin/kafka-topics.sh --list --zookeeper 172.26.198.123:2181
成功 輸出 剛才你建立的topic
建立生產者
bin/kafka-console-producer.sh --broker-list 172.26.198.123:9092 --topic kafkatest
執行 出現 > 後面可以輸入字元為正確
建立消費者
bin/kafka-console-consumer.sh --bootstrap-server 172.26.198.123:9092 --topic kafkatest--from-beginning
在生產者中輸入訊息 即可在消費者中看到 那麼本地就成功了
有個題外的話題 就Java呼叫的問題
關於Java端呼叫失敗問題
1.當一直連線錯誤的時候 有可能是安裝路徑下的server.properties 配置檔案中的 localhost沒有配置
需要配置以後 才能遠端連線其他伺服器的kafka
2.當使用消費者獲取資料的時候 一直報錯為空指標 這個問題可能是 kafka的版本和你jar包的版本不匹配 這個時候 降低你
kafka連線工具的版本即可我當前使用的是0.8.1.1版本
外網測試 自己在Java上測試 或者 在本地搭建一個 kafka環境 然後通過上面的zookeeper的ip來建立消費者 即可