歡迎訪問我的GitHub
https://github.com/zq2599/blog_demos
內容:所有原創文章分類匯總及配套原始碼,涉及Java、Docker、Kubernetes、DevOPS等;
起因是懶
我是個Java程式員,在家寫代碼時常用到redis、mysql、kafka這些基礎服務,通常做法是打開電腦,啟動redis、mysql、kafka,用完再關閉電腦,總覺得這些操作挺麻煩(您想罵我懶么?您罵得對.....)
群暉解決煩惱
- 家里有臺群暉DS218+,從不關機,為全家提供穩定的圖片和視頻服務,之前已在上面部署了maven私服、MySQL,運行得很穩定,今天就把kafka也部署在上面吧,今后擼代碼時,資料庫和訊息服務都是現成的,隨時想用就用,算得上懶人救星了,
- 下圖是DS218+剛買來的樣子,兩塊NAS硬碟,一直在穩定服務:

- 下圖是網購的記憶體條,現在一共2+8=10G記憶體,記憶體充足才是敢折騰的底氣:

前文鏈接
之前折騰群暉的記錄:
- 《群暉DS218+做maven私服(nexus3)》;
- 《群暉DS218+部署mysql》;
所以這次部署kafka是輕車熟路的一陣docker操作;
思路
其實操作很簡單:群暉帶有docker服務,用docker來部署mysql即可,所以,本文其實也就是群暉docker的基本操作記錄,以下幾處是要注意的地方:
- 容器埠
- 登錄容器操作
- docker的link操作
環境資訊
- 群暉系統:DSM 6.2.2-24922 Update 4
- Zookeeper:3.4.13
- Kafka:2.4.0(scala:2.12)
下載鏡像
- 在瀏覽器登錄群暉網頁,按照下圖中數字的順序操作,即可下載到zookeeper的鏡像,第七步時您可以按自己需要來選擇合適的版本:

- kafka鏡像下載的操作如下圖中數字的順序,第七步時您可以按自己需要來選擇合適的版本:

- 鏡像下載完成即可啟動容器;
啟動zookeeper容器
- 按照下圖操作,啟動zookeeper容器:

- 如下圖,將容器名設為zookeeper,再點擊高級設定:

- 將容器的2181埠和宿主機的2181埠系結:

- 勾選向導完成后運行此容器,再點擊應用就會啟動容器:

- 可以在容器頁查看啟動情況:

接下來啟動kafka;
啟動kafka容器
- 在映像頁面操作如下:

- kafka的容器設定比zookeeper略復雜一些,如下圖,設定好名字后點擊高級設定:

- 設定埠映射,這樣內網環境都可以訪問這個kafka了,用9092埠:

- 設定鏈接,如下圖,這樣的設定相當于docker的link引數,其實就是在kafka容器的/etc/hosts中配置了一條記錄,hostname是zookeeper,IP地址是zookeeper容器的IP地址:

- 接下來需要增加三個環境變數,如下圖:

KAFKA_ZOOKEEPER_CONNECT:zookeeper的訪問地址,這里的zookeeper其實就是hostname,由于設定了link引數,因此直接用hostname就能訪問到;
KAFKA_LISTENERS:內網連接方式,注意這里說的內網是指容器的網路;
KAFKA_ADVERTISED_LISTENERS:群暉服務器所在的家庭網路,對kafka而言其實是外部網路(kafka容器的IP和群暉的IP是不同網段),所以家庭網路中其他機器要想連接kafka,對kafka而言就是外網機器要來訪問,因此要配置KAFKA_ADVERTISED_LISTENERS,這里配置的就是群暉自己的IP;
- 設定完畢后,勾選向導完成后運行此容器,再點擊應用就會啟動容器:

- 收到彈窗提示(挺有道理的...):

現在kafka部署和啟動都成功了,接下來驗證這個服務在家庭內網是否可用;
驗證
- 最直接的驗證方式就是命令列操作,先設定群暉允許SSH登錄,如下圖操作:

- 如下圖,勾選啟用SSH功能,埠就用22:

- 現在用SSH終端即可登錄群暉了,我這里是在MacBook Pro電腦上用iTerm軟體登錄的,您可以選用任意SSH終端工具,賬號密碼就是能登錄群暉的賬號密碼,如下圖,登錄后,就可以使用日常的linux命令了:

- 查看當前topic,命令是:
sudo docker exec kafka bash -c "cd /opt/kafka/bin/ && ./kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --list"

如上圖所示,一個Topic都沒有;
5. 創建topic,命令是:
sudo docker exec kafka bash -c "cd /opt/kafka/bin/ && ./kafka-topics.sh --create --bootstrap-server 127.0.0.1:9092 --replication-factor 1 --partitions 1 --topic test001"
- 再次查看topic,這回有資料了:

- 有了topic,來試試訊息的創建和消費,執行以下命令,進入創建訊息的對話模式(注意要帶-it引數,才能繼續輸入資訊):
sudo docker exec -it kafka bash -c "cd /opt/kafka/bin/ && ./kafka-console-producer.sh --broker-list kafka:9092 --topic test001"
- 再打開一個視窗,ssh登錄群暉,執行以下命令,用來消費test001這個主題,一旦這個主題有了訊息會立即在此列印出來:
sudo docker exec -it kafka bash -c "cd /opt/kafka/bin/ && ./kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test001 --consumer-property group.id=old-consumer-test --consumer-property consumer.id=old-consumer-cl --from-beginning"
- 回到發送訊息的視窗,輸入一些字串,每次輸入回車就會將當前行的字串作為訊息內容發送出去,此時在消費訊息的視窗可以立即看到訊息內容,如下圖:

- 再來試試遠程連接是否成功,我在MacBook Pro上安裝了kafka客戶端工具Kafka Tool 2.0.7,成功連接到群暉上的kafka,能看到所有訊息和主題:

- 另外zookeeper也可以用了,以下是在MacBook Pro上遠程連接zookeeper容器的操作:

至此,我的群暉上已經部署了nexus3、mysql、zookeeper、kafka,在家擼代碼時資料庫、訊息這些服務隨時想用就用,算是為自己的開發環境創造了更多便利,
歡迎關注公眾號:程式員欣宸
微信搜索「程式員欣宸」,我是欣宸,期待與您一同暢游Java世界...
https://github.com/zq2599/blog_demos
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/196884.html
標籤:其他
