1. 程式人生 > >群暉DS218+部署kafka

群暉DS218+部署kafka

### 歡迎訪問我的GitHub [https://github.com/zq2599/blog_demos](https://github.com/zq2599/blog_demos) 內容:所有原創文章分類彙總及配套原始碼,涉及Java、Docker、Kubernetes、DevOPS等; ### 起因是懶 我是個Java程式設計師,在家寫程式碼時常用到redis、mysql、kafka這些基礎服務,通常做法是開啟電腦,啟動redis、mysql、kafka,用完再關閉電腦,總覺得這些操作挺麻煩(您想罵我懶麼?您罵得對.....) ### 群暉解決煩惱 1. 家裡有臺群暉DS218+,從不關機,為全家提供穩定的圖片和視訊服務,之前已在上面部署了maven私服、MySQL,執行得很穩定,今天就把kafka也部署在上面吧,今後擼程式碼時,資料庫和訊息服務都是現成的,隨時想用就用,算得上懶人救星了。 2. 下圖是DS218+剛買來的樣子,兩塊NAS硬碟,一直在穩定服務: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103336146-1914022224.png) 3. 下圖是網購的記憶體條,現在一共2+8=10G記憶體,記憶體充足才是敢折騰的底氣: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103337448-1704828934.png) ### 前文連結 之前折騰群暉的記錄: 1. [《群暉DS218+做maven私服(nexus3)》](https://blog.csdn.net/boling_cavalry/article/details/105458466); 2. [《群暉DS218+部署mysql》](https://blog.csdn.net/boling_cavalry/article/details/105460567); 所以這次部署kafka是輕車熟路的一陣docker操作; ### 思路 其實操作很簡單:群暉帶有docker服務,用docker來部署mysql即可,所以,本文其實也就是群暉docker的基本操作記錄,以下幾處是要注意的地方: 1. 容器埠 2. 登入容器操作 3. docker的link操作 ### 環境資訊 1. 群暉系統:DSM 6.2.2-24922 Update 4 2. Zookeeper:3.4.13 3. Kafka:2.4.0(scala:2.12) ### 下載映象 1. 在瀏覽器登入群暉網頁,按照下圖中數字的順序操作,即可下載到zookeeper的映象,第七步時您可以按自己需要來選擇合適的版本: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103338095-1067688408.png) 2. kafka映象下載的操作如下圖中數字的順序,第七步時您可以按自己需要來選擇合適的版本: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103338627-1648871317.png) 3. 映象下載完成即可啟動容器; ### 啟動zookeeper容器 1. 按照下圖操作,啟動zookeeper容器: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103338979-797859297.png) 2. 如下圖,將容器名設為zookeeper,再點選高階設定: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103339259-1235161231.png) 3. 將容器的2181埠和宿主機的2181埠繫結: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103339683-1466937983.png) 4. 勾選嚮導完成後執行此容器,再點選應用就會啟動容器: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103339961-511492217.png) 5. 可以在容器頁檢視啟動情況: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103340273-446643584.png) 接下來啟動kafka; ### 啟動kafka容器 1. 在映像頁面操作如下: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103340635-1775251279.png) 2. kafka的容器設定比zookeeper略複雜一些,如下圖,設定好名字後點擊高階設定: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103340947-1793828966.png) 3. 設定埠對映,這樣內網環境都可以訪問這個kafka了,用9092埠: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103341197-50001659.png) 4. 設定連結,如下圖,這樣的設定相當於docker的link引數,其實就是在kafka容器的/etc/hosts中配置了一條記錄,hostname是zookeeper,IP地址是zookeeper容器的IP地址: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103341500-953095523.png) 5. 接下來需要增加三個環境變數,如下圖: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103341809-123791781.png) KAFKA_ZOOKEEPER_CONNECT:zookeeper的訪問地址,這裡的zookeeper其實就是hostname,由於設定了link引數,因此直接用hostname就能訪問到; KAFKA_LISTENERS:內網連線方式,注意這裡說的內網是指容器的網路; KAFKA_ADVERTISED_LISTENERS:群暉伺服器所在的家庭網路,對kafka而言其實是外部網路(kafka容器的IP和群暉的IP是不同網段),所以家庭網路中其他機器要想連線kafka,對kafka而言就是外網機器要來訪問,因此要配置KAFKA_ADVERTISED_LISTENERS,這裡配置的就是群暉自己的IP; 6. 設定完畢後,勾選嚮導完成後執行此容器,再點選應用就會啟動容器: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103342113-2011191282.png) 7. 收到彈窗提示(挺有道理的...): ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103342436-1436324215.png) 現在kafka部署和啟動都成功了,接下來驗證這個服務在家庭內網是否可用; ### 驗證 1. 最直接的驗證方式就是命令列操作,先設定群暉允許SSH登入,如下圖操作: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103342879-1701100290.png) 2. 如下圖,勾選啟用SSH功能,埠就用22: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103343307-698965757.png) 3. 現在用SSH終端即可登入群暉了,我這裡是在MacBook Pro電腦上用iTerm軟體登入的,您可以選用任意SSH終端工具,賬號密碼就是能登入群暉的賬號密碼,如下圖,登入後,就可以使用日常的linux命令了: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103343878-1957710101.png) 4. 檢視當前topic,命令是: ```shell sudo docker exec kafka bash -c "cd /opt/kafka/bin/ && ./kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --list" ``` ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103344291-1149158903.png) 如上圖所示,一個Topic都沒有; 5. 建立topic,命令是: ```shell 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" ``` 6. 再次檢視topic,這回有資料了: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103344891-348965431.png) 7. 有了topic,來試試訊息的建立和消費,執行以下命令,進入建立訊息的對話模式(注意要帶-it引數,才能繼續輸入資訊): ```shell sudo docker exec -it kafka bash -c "cd /opt/kafka/bin/ && ./kafka-console-producer.sh --broker-list kafka:9092 --topic test001" ``` 8. 再開啟一個視窗,ssh登入群暉,執行以下命令,用來消費test001這個主題,一旦這個主題有了訊息會立即在此打印出來: ```shell 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" ``` 9. 回到傳送訊息的視窗,輸入一些字串,每次輸入回車就會將當前行的字串作為訊息內容傳送出去,此時在消費訊息的視窗可以立即看到訊息內容,如下圖: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103345349-1595460574.png) 10. 再來試試遠端連線是否成功,我在MacBook Pro上安裝了kafka客戶端工具Kafka Tool 2.0.7,成功連線到群暉上的kafka,能看到所有訊息和主題: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103345805-441379566.png) 11. 另外zookeeper也可以用了,以下是在MacBook Pro上遠端連線zookeeper容器的操作: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202010/485422-20201031103346399-492208151.png) 至此,我的群暉上已經部署了nexus3、mysql、zookeeper、kafka,在家擼程式碼時資料庫、訊息這些服務隨時想用就用,算是為自己的開發環境創造了更多便利。 ### 歡迎關注公眾號:程式設計師欣宸 > 微信搜尋「程式設計師欣宸」,我是欣宸,期待與您一同暢遊Java世界... [https://github.com/zq2599/blog_demos](https://github.com/zq2599/blo