場景:
公司統一使用阿里雲服務器,原來的開發服務器也用的阿里雲服務器。爲了方便開發人員,不想讓開發人員在自己電腦上再運行kafka服務器和zookeeper服務器。希望所有開發人員都直接連接阿里雲上的kafka服務器,方便開發。
遇到的問題:
Kafka服務器默認是不支持綁定到公網IP的。哪怕你把配置文件 config/server.properties 中的配置項 advertised.listeners=PLAINTEXT://你的地址:9092
設置成公網IP都沒用。Kafka 服務器在啓動的時候會報錯,並且導致無法啓動。
解決方法:
本人實驗,直接設置IP是無效的。當然也可能是我沒想到好方法。我的思路是利用客戶端和阿里雲服務器對域名的不同解析來解決這個問題。
首先要有個公網的域名能夠綁定你的服務器的公網IP。
把 kafka 壓縮包下載,解壓並上傳到服務器上。利用cd命令進入kafka目錄。
找到 config/server.properties 文件,確保有一項配置是這樣的:
advertised.listeners=PLAINTEXT://your.host.cn:9092
其中 your.host.cn 就是你的公網域名。listeners=
這一項註釋掉。
修改 hosts,執行命令 vi /etc/hosts
加入下面這項:
172.12.13.104 your.host.cn
其中 172.12.13.104 是阿里雲服務器的內網IP,your.host.cn 是你的公網域名。
`
阿里雲服務器安裝 screen
yum install -y screen
用screen 是爲了方便查進程和殺死進程。
因爲Kafka依賴zookeeper,先運行zookeeper
screen -S zk_kafka
進入新屏幕後啓動 zookeeper
bin/zookeeper-server-start.sh config/zookeeper.properties
按 ctrl + A + D 退出zookeeper 的屏幕。
創建 kafka 服務器的屏幕:
screen -S kafka
在新屏幕運行命令:
bin/kafka-server-start.sh config/server.properties
按 ctrl + A + D 退出 kafka 的屏幕。
執行命令: ps -auxf
可以清晰的看到進程樹。
爲了驗證效果,我在自己的筆記本上測試了一下。筆記本是WIndows操作系統。kafka壓縮包在windows上解壓,在命令行通過 cd 命令進入 kafka 目錄。執行下面的命令:
bin\windows\kafka-topics.bat --list --bootstrap-server relationship.centling.cn:9092
如果沒報錯,能看到服務器上的topic,就算是成功了。