群暉DS218+部署kafka

程式設計師欣宸發表於2022-12-13

歡迎訪問我的GitHub

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硬碟,一直在穩定服務:
    在這裡插入圖片描述
  3. 下圖是網購的記憶體條,現在一共2+8=10G記憶體,記憶體充足才是敢折騰的底氣:
    在這裡插入圖片描述

前文連結

之前折騰群暉的記錄:

  1. 《群暉DS218+做maven私服(nexus3)》
  2. 《群暉DS218+部署mysql》

所以這次部署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的映象,第七步時您可以按自己需要來選擇合適的版本:
    在這裡插入圖片描述
  2. kafka映象下載的操作如下圖中數字的順序,第七步時您可以按自己需要來選擇合適的版本:
    在這裡插入圖片描述
  3. 映象下載完成即可啟動容器;

啟動zookeeper容器

  1. 按照下圖操作,啟動zookeeper容器:
    在這裡插入圖片描述
  2. 如下圖,將容器名設為zookeeper,再點選高階設定:
    在這裡插入圖片描述
  3. 將容器的2181埠和宿主機的2181埠繫結:
    在這裡插入圖片描述
  4. 勾選嚮導完成後執行此容器,再點選應用就會啟動容器:
    在這裡插入圖片描述
  5. 可以在容器頁檢視啟動情況:
    在這裡插入圖片描述
    接下來啟動kafka;

啟動kafka容器

  1. 在映像頁面操作如下:
    在這裡插入圖片描述
  2. kafka的容器設定比zookeeper略複雜一些,如下圖,設定好名字後點選高階設定
    在這裡插入圖片描述
  3. 設定埠對映,這樣內網環境都可以訪問這個kafka了,用9092埠:
    在這裡插入圖片描述
  4. 設定連結,如下圖,這樣的設定相當於docker的link引數,其實就是在kafka容器的/etc/hosts中配置了一條記錄,hostname是zookeeper,IP地址是zookeeper容器的IP地址:
    在這裡插入圖片描述
  5. 接下來需要增加三個環境變數,如下圖:
    在這裡插入圖片描述
    KAFKA_ZOOKEEPER_CONNECT:zookeeper的訪問地址,這裡的zookeeper其實就是hostname,由於設定了link引數,因此直接用hostname就能訪問到;

KAFKA_LISTENERS:內網連線方式,注意這裡說的內網是指容器的網路;

KAFKA_ADVERTISED_LISTENERS:群暉伺服器所在的家庭網路,對kafka而言其實是外部網路(kafka容器的IP和群暉的IP是不同網段),所以家庭網路中其他機器要想連線kafka,對kafka而言就是外網機器要來訪問,因此要配置KAFKA_ADVERTISED_LISTENERS,這裡配置的就是群暉自己的IP;

  1. 設定完畢後,勾選嚮導完成後執行此容器,再點選應用就會啟動容器:
    在這裡插入圖片描述
  2. 收到彈窗提示(挺有道理的...):
    在這裡插入圖片描述
    現在kafka部署和啟動都成功了,接下來驗證這個服務在家庭內網是否可用;

驗證

  1. 最直接的驗證方式就是命令列操作,先設定群暉允許SSH登入,如下圖操作:
    在這裡插入圖片描述
  2. 如下圖,勾選啟用SSH功能,埠就用22:
    在這裡插入圖片描述
  3. 現在用SSH終端即可登入群暉了,我這裡是在MacBook Pro電腦上用iTerm軟體登入的,您可以選用任意SSH終端工具,賬號密碼就是能登入群暉的賬號密碼,如下圖,登入後,就可以使用日常的linux命令了:
    在這裡插入圖片描述
  4. 檢視當前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"
  1. 再次檢視topic,這回有資料了:
    在這裡插入圖片描述
  2. 有了topic,來試試訊息的建立和消費,執行以下命令,進入建立訊息的對話模式(注意要帶-it引數,才能繼續輸入資訊):
sudo docker exec -it kafka bash -c "cd /opt/kafka/bin/ && ./kafka-console-producer.sh --broker-list kafka:9092 --topic test001"
  1. 再開啟一個視窗,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"
  1. 回到傳送訊息的視窗,輸入一些字串,每次輸入回車就會將當前行的字串作為訊息內容傳送出去,此時在消費訊息的視窗可以立即看到訊息內容,如下圖:
    在這裡插入圖片描述
  2. 再來試試遠端連線是否成功,我在MacBook Pro上安裝了kafka客戶端工具Kafka Tool 2.0.7,成功連線到群暉上的kafka,能看到所有訊息和主題:
    在這裡插入圖片描述
  3. 另外zookeeper也可以用了,以下是在MacBook Pro上遠端連線zookeeper容器的操作:
    在這裡插入圖片描述
    至此,我的群暉上已經部署了nexus3、mysql、zookeeper、kafka,在家擼程式碼時資料庫、訊息這些服務隨時想用就用,算是為自己的開發環境創造了更多便利。

歡迎關注公眾號:程式設計師欣宸

微信搜尋「程式設計師欣宸」,我是欣宸,期待與您一同暢遊Java世界...

https://github.com/zq2599/blog_demos

相關文章