【RocketMQ】 雙主雙從同步集羣配置,發送消息返回狀態碼:SLAVE_NOT_AVAILABLE

一、現象

搭建了 rocketmq 的雙主雙從集羣,在使用同步模式下,在向 master 發送消息時,返回的消息狀態碼爲 SLAVE_NOT_AVAILABLE 

 

二、解決方式

這個問題是由於沒有開放對應端口:

在配置文件中找到自己設置的 Master 開放端口:

rocketmq 默認端口:9876

配置的 ListenPort 端口:10911

vip 通道端口爲:ListenPort - 2 = 10909

HA 通道端口爲: ListenPort + 1 = 10912

需要檢查 Master 是否打開了這兩個端口

 

端口對應描述:

以配置的  ListenPort 爲 10911 爲例

端口號 作用 描述
9876 nameserver 對外暴露的端口,允許消費者和生產者連接  
10909 fastListen 端口

在消費者或生產者中配置 isVipChannel 爲 false 即可

10912 HA 高可用端口,用於主從同步,爲 Master 常見新的 socket 連接 若沒有開放,則無法連接到 Slave

 

三、解決過程和原因

跟蹤 log 日誌

tail -f /~/log/rocketmqlogs/broker.log

發現使用了10911端口,但這是自己設置的 ListenPort 端口

初步猜測是由於端口沒開放的原因,故關閉 Master 防火牆,再次發送消息,發現發送成功

由於是主從配置,猜測是某個被進程使用的端口沒有對外暴露,查看當前進程使用的端口:

netstat -ntpl

找到 java 進程,有兩個靠近我設置的 10911 端口的端口 10909、10912 被使用

經查詢可得:

vip 通道端口爲 ListenPort(10911-2) = 10909

HA 高可用端口爲 ListenPort(10911+1) = 10912

那麼,他們是否一定要對外暴露呢?

vip 通道端口一般沒什麼作用

而 HA 高可用端口用於主從集羣時,創建 Master 和 Slave 之間的 socket 連接。故需要對外暴露

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章