日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RocketMQ多Master多Slave模式部署

發布時間:2023/12/13 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RocketMQ多Master多Slave模式部署 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

每個 Master 配置一個 Slave,有多對Master-Slave,HA采用同步雙寫方式,主備都寫成功,向應用返回成功。

優點:數據與服務都無單點,Master宕機情況下,消息無延遲,服務可用性與數據可用性都非常高。
缺點:性能比異步復制模式略低,大約低10%左右,發送單個消息的RT會略高。目前主宕機后,備機不能自動切換為主機,后續會支持自動切換功能。

### 先啟動 NameServer
### 在機器 A,啟動第一個 Master
### 在機器 B,啟動第二個 Master
### 在機器 C,啟動第一個 Slave
### 在機器 D,啟動第二個 Slave
以上 Broker 與 Slave 配對是通過指定相同的brokerName 參數來配對,Master的 BrokerId 必須是 0,Slave 的BrokerId 必須是大與 0 的數。
另外一個 Master 下面可以掛載多個 Slave,同一 Master 下的多個 Slave通過指定不同的 BrokerId來區分。

1. 服務器環境如下圖所示,四臺機器,IP位7為主節點,149是7的從節點。105是主節點,160是105的從節點

序號 IP 用戶名 角色 模式 1 192.168.1.7 root nameServer1,brokerServer1 Master1 2 192.168.1.105 root nameServer2,brokerServer2 Master2 3 192.168.1.149 root nameServer3,brokerServer3 Master1-slave1 4 192.168.1.160 root nameServer4,brokerServer4 Master2-slave1

?

2. Hosts添加信息

IP NAME 192.168.1.7 rocketmq-nameserver1 192.168.1.7 rocketmq-master1 192.168.1.105 rocketmq-nameserver2 192.168.1.105 rocketmq-master2 192.168.1.149 rocketmq-nameserver3 192.168.1.149 rocketmq-master1-slave1 192.168.1.160 rocketmq-nameserver4 192.168.1.160 rocketmq-master2-slave1

?

3.編輯hosts文件【4臺機器】

# vim /etc/hosts

?

4.上傳解壓【4臺機器】

# 上傳alibaba-rocketmq-3.2.6.tar.gz文件至/home/xm6f/dev # cd /home/xm6f/dev # tar -zxvf alibaba-rocketmq-3.2.6.tar.gz # mv alibaba-rocketmq rocketmq

?

5.創建存儲路徑【4臺機器】

# mkdir /home/xm6f/dev/rocketmq/store # mkdir /home/xm6f/dev/rocketmq/store/commitlog # mkdir /home/xm6f/dev/rocketmq/store/consumequeue # mkdir /home/xm6f/dev/rocketmq/store/index


6.RocketMQ配置文件【4臺機器】--該文件有點類似于Redis里面的redis.con

# sudo vim /home/xm6f/dev/rocketmq/conf/2m-2s-async/broker-a.properties ##192.168.1.7配置文件 # sudo vim /home/xm6f/dev/rocketmq/conf/2m-2s-async/broker-a-s.properties ##192.168.1.149配置文件 # sudo vim /home/xm6f/dev/rocketmq/conf/2m-2s-async/broker-b.properties ##192.168.1.105配置文件 # sudo vim /home/xm6f/dev/rocketmq/conf/2m-2s-async/broker-b-s.properties ##192.168.1.160配置文件

?

broker-a.properties文件

#所屬集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此處不同的配置文件填寫的不一樣 brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分號分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876 #在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數 defaultTopicQueueNums=4 #是否允許 Broker 自動創建Topic,建議線下開啟,線上關閉 autoCreateTopicEnable=true #是否允許 Broker 自動創建訂閱組,建議線下開啟,線上關閉 autoCreateSubscriptionGroup=true #Broker 對外服務的監聽端口 listenPort=10911 #刪除文件時間點,默認凌晨 4點 deleteWhen=04 #文件保留時間,默認 48 小時 fileReservedTime=120 #commitLog每個文件的大小默認1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每個文件默認存30W條,根據業務情況調整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #檢測物理文件磁盤空間 diskMaxUsedSpaceRatio=88 #存儲路徑 storePathRootDir=/home/xm6f/dev/rocketmq/store #commitLog 存儲路徑 storePathCommitLog=/home/xm6f/dev/rocketmq/store/commitlog #消費隊列存儲路徑存儲路徑 storePathConsumeQueue=/home/xm6f/dev/rocketmq/store/consumequeue #消息索引存儲路徑 storePathIndex=/home/xm6f/dev/rocketmq/store/index #checkpoint 文件存儲路徑 storeCheckpoint=/home/xm6f/dev/rocketmq/store/checkpoint #abort 文件存儲路徑 abortFile=/home/xm6f/dev/rocketmq/store/abort #限制的消息大小 maxMessageSize=65536 #flushCommitLogLeastPages=4 #flushConsumeQueueLeastPages=2 #flushCommitLogThoroughInterval=10000 #flushConsumeQueueThoroughInterval=60000 #Broker 的角色 #- ASYNC_MASTER 異步復制Master #- SYNC_MASTER 同步雙寫Master #- SLAVE brokerRole=ASYNC_MASTER #刷盤方式 #- ASYNC_FLUSH 異步刷盤 #- SYNC_FLUSH 同步刷盤 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false #發消息線程池數量 #sendMessageThreadPoolNums=128 #拉消息線程池數量 #pullMessageThreadPoolNums=128 #強制指定本機IP,需要根據每臺機器進行修改。官方介紹可為空,系統默認自動識別,但多網卡時IP地址可能讀取錯誤 brokerIP1=192.168.1.7

?

broker-a-s.properties文件

#所屬集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此處不同的配置文件填寫的不一樣 brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=1 #nameServer地址,分號分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876 #在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數 defaultTopicQueueNums=4 #是否允許 Broker 自動創建Topic,建議線下開啟,線上關閉 autoCreateTopicEnable=true #是否允許 Broker 自動創建訂閱組,建議線下開啟,線上關閉 autoCreateSubscriptionGroup=true #Broker 對外服務的監聽端口 listenPort=10911 #刪除文件時間點,默認凌晨 4點 deleteWhen=04 #文件保留時間,默認 48 小時 fileReservedTime=120 #commitLog每個文件的大小默認1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每個文件默認存30W條,根據業務情況調整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #檢測物理文件磁盤空間 diskMaxUsedSpaceRatio=88 #存儲路徑 storePathRootDir=/home/xm6f/dev/rocketmq/store #commitLog 存儲路徑 storePathCommitLog=/home/xm6f/dev/rocketmq/store/commitlog #消費隊列存儲路徑存儲路徑 storePathConsumeQueue=/home/xm6f/dev/rocketmq/store/consumequeue #消息索引存儲路徑 storePathIndex=/home/xm6f/dev/rocketmq/store/index #checkpoint 文件存儲路徑 storeCheckpoint=/home/xm6f/dev/rocketmq/store/checkpoint #abort 文件存儲路徑 abortFile=/home/xm6f/dev/rocketmq/store/abort #限制的消息大小 maxMessageSize=65536 #flushCommitLogLeastPages=4 #flushConsumeQueueLeastPages=2 #flushCommitLogThoroughInterval=10000 #flushConsumeQueueThoroughInterval=60000 #Broker 的角色 #- ASYNC_MASTER 異步復制Master #- SYNC_MASTER 同步雙寫Master #- SLAVE brokerRole=SLAVE #刷盤方式 #- ASYNC_FLUSH 異步刷盤 #- SYNC_FLUSH 同步刷盤 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false #發消息線程池數量 #sendMessageThreadPoolNums=128 #拉消息線程池數量 #pullMessageThreadPoolNums=128 #強制指定本機IP,需要根據每臺機器進行修改。官方介紹可為空,系統默認自動識別,但多網卡時IP地址可能讀取錯誤 brokerIP1=192.168.1.149

?

broker-b.properties文件

#所屬集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此處不同的配置文件填寫的不一樣 brokerName=broker-b #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分號分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876 #在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數 defaultTopicQueueNums=4 #是否允許 Broker 自動創建Topic,建議線下開啟,線上關閉 autoCreateTopicEnable=true #是否允許 Broker 自動創建訂閱組,建議線下開啟,線上關閉 autoCreateSubscriptionGroup=true #Broker 對外服務的監聽端口 listenPort=10911 #刪除文件時間點,默認凌晨 4點 deleteWhen=04 #文件保留時間,默認 48 小時 fileReservedTime=120 #commitLog每個文件的大小默認1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每個文件默認存30W條,根據業務情況調整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #檢測物理文件磁盤空間 diskMaxUsedSpaceRatio=88 #存儲路徑 storePathRootDir=/home/xm6f/dev/rocketmq/store #commitLog 存儲路徑 storePathCommitLog=/home/xm6f/dev/rocketmq/store/commitlog #消費隊列存儲路徑存儲路徑 storePathConsumeQueue=/home/xm6f/dev/rocketmq/store/consumequeue #消息索引存儲路徑 storePathIndex=/home/xm6f/dev/rocketmq/store/index #checkpoint 文件存儲路徑 storeCheckpoint=/home/xm6f/dev/rocketmq/store/checkpoint #abort 文件存儲路徑 abortFile=/home/xm6f/dev/rocketmq/store/abort #限制的消息大小 maxMessageSize=65536 #flushCommitLogLeastPages=4 #flushConsumeQueueLeastPages=2 #flushCommitLogThoroughInterval=10000 #flushConsumeQueueThoroughInterval=60000 #Broker 的角色 #- ASYNC_MASTER 異步復制Master #- SYNC_MASTER 同步雙寫Master #- SLAVE brokerRole=ASYNC_MASTER #刷盤方式 #- ASYNC_FLUSH 異步刷盤 #- SYNC_FLUSH 同步刷盤 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false #發消息線程池數量 #sendMessageThreadPoolNums=128 #拉消息線程池數量 #pullMessageThreadPoolNums=128 #強制指定本機IP,需要根據每臺機器進行修改。官方介紹可為空,系統默認自動識別,但多網卡時IP地址可能讀取錯誤 brokerIP1=192.168.1.105

?

broker-b-s.properties文件

#所屬集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此處不同的配置文件填寫的不一樣 brokerName=broker-b #0 表示 Master,>0 表示 Slave brokerId=1 #nameServer地址,分號分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876 #在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數 defaultTopicQueueNums=4 #是否允許 Broker 自動創建Topic,建議線下開啟,線上關閉 autoCreateTopicEnable=true #是否允許 Broker 自動創建訂閱組,建議線下開啟,線上關閉 autoCreateSubscriptionGroup=true #Broker 對外服務的監聽端口 listenPort=10911 #刪除文件時間點,默認凌晨 4點 deleteWhen=04 #文件保留時間,默認 48 小時 fileReservedTime=120 #commitLog每個文件的大小默認1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每個文件默認存30W條,根據業務情況調整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #檢測物理文件磁盤空間 diskMaxUsedSpaceRatio=88 #存儲路徑 storePathRootDir=/home/xm6f/dev/rocketmq/store #commitLog 存儲路徑 storePathCommitLog=/home/xm6f/dev/rocketmq/store/commitlog #消費隊列存儲路徑存儲路徑 storePathConsumeQueue=/home/xm6f/dev/rocketmq/store/consumequeue #消息索引存儲路徑 storePathIndex=/home/xm6f/dev/rocketmq/store/index #checkpoint 文件存儲路徑 storeCheckpoint=/home/xm6f/dev/rocketmq/store/checkpoint #abort 文件存儲路徑 abortFile=/home/xm6f/dev/rocketmq/store/abort #限制的消息大小 maxMessageSize=65536 #flushCommitLogLeastPages=4 #flushConsumeQueueLeastPages=2 #flushCommitLogThoroughInterval=10000 #flushConsumeQueueThoroughInterval=60000 #Broker 的角色 #- ASYNC_MASTER 異步復制Master #- SYNC_MASTER 同步雙寫Master #- SLAVE brokerRole=SLAVE #刷盤方式 #- ASYNC_FLUSH 異步刷盤 #- SYNC_FLUSH 同步刷盤 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false #發消息線程池數量 #sendMessageThreadPoolNums=128 #拉消息線程池數量 #pullMessageThreadPoolNums=128 #強制指定本機IP,需要根據每臺機器進行修改。官方介紹可為空,系統默認自動識別,但多網卡時IP地址可能讀取錯誤 brokerIP1=192.168.1.160

?

7. 修改啟動腳本參數【4臺機器】

# vim /home/xm6f/dev/rocketmq/bin/runbroker.sh JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m - XX:PermSize=128m -XX:MaxPermSize=320m" # vim /home/xm6f/dev/rocketmq/bin/runserver.sh JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m - XX:PermSize=128m -XX:MaxPermSize=320m"

注意:啟動腳本設置不合理,可能報如下異常:
Error occurred during initialization of VM
Too small new size specified

8.防火墻
默認啟動用使用3個端口9876,10911,10912
分別代表名稱服務端口,broker端口,broker ha端口。
ha端口haListenPort表示Master監聽Slave請求的端口,默認為服務端口+1

添加到/etc/sysconfig/iptables的filter表INPUT鏈中

-A INPUT -m state --state NEW -m tcp -p tcp --dport 9876 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 10911 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 10912 -j ACCEPT

添加完成后重啟防火墻
service iptables restart

9.啟動NameServer【4臺機器】

# cd /home/xm6f/dev/rocketmq/bin # sudo nohup sh mqnamesrv &

?

10.啟動BrokerServer 【4臺機器】

注意配置文件需要根據實際配置/broker-X.properties

# cd /home/xm6f/dev/rocketmq/bin # 192.168.1.7 # sudo nohup sh mqbroker -c /home/xm6f/dev/rocketmq/conf/2m-2s-async/broker-a.properties >/dev/null 2>&1 & # 192.168.1.105 # sudo nohup sh mqbroker -c /home/xm6f/dev/rocketmq/conf/2m-2s-async/broker-b.properties >/dev/null 2>&1 & # 192.168.1.149 # sudo nohup sh mqbroker -c /home/xm6f/dev/rocketmq/conf/2m-2s-async/broker-a-s.properties >/dev/null 2>&1 & # 192.168.1.160 # sudo nohup sh mqbroker -c /home/xm6f/dev/rocketmq/conf/2m-2s-async/broker-b-s.properties >/dev/null 2>&1 &

說明:IP位7為主節點,149是7的從節點。105是主節點,160是105的從節點

輸入jps看到如上圖所示表示成功

停止服務broker:

# sh mqshutdown broker

?

11.在tomcat中部署rocketmq-console.war
修改rocketmq-console配置文件,找到/tomcat-8082/webapps/rocketmq-console/WEB-INF/classes/config.properties文件,添加如下:

rocketmq.namesrv.addr=192.168.1.7:9876;192.168.1.105:9876;192.168.1.149:9876;192.168.1.160:9876 throwDone=true

啟動tomcat,在瀏覽器輸入:http://192.168.1.105:8082/rocketmq-console/

多Master多Slave可以保證實時消費,比如說:我有一主一從,如果主機宕機,那么我從主機上獲得的數據如果在沒有從節點,那么這些消息將在主節點重啟之前將無法被消費,直到主節點啟動,如果這個主節點里面有從節點,從節點可以對外提供服務,并且從節點有從主節點同步過來的數據,那么還是可以將這些消息實時地消費掉。這點多Master方式無法做到。

當宕機的主節點起來之后,會和從節點進行數據的同步,不會重復消費剛剛消費過的數據。

12.數據清理

# cd /home/xm6f/devrocketmq/bin # sh mqshutdown broker # sh mqshutdown namesrv # --等待停止 # rm -rf /home/xm6f/devrocketmq/store # mkdir /home/xm6f/devrocketmq/store # mkdir /home/xm6f/devrocketmq/store/commitlog # mkdir /home/xm6f/devrocketmq/store/consumequeue # mkdir /home/xm6f/devrocketmq/store/index # --按照上面步驟重啟NameServer與BrokerServer


啟動時報錯:
注釋runserver.sh和runbroker.sh以下,并添加JAVA_HOME地址

#[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/home/xm6f/dev/jdk1.7.0_80 #[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/home/xm6f/dev/jdk1.7.0_80 #[ ! -e "$JAVA_HOME/bin/java" ] && error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)!"export JAVA_HOME="/home/xm6f/dev/jdk1.7.0_80" export JAVA="$JAVA_HOME/bin/java" .....

?

轉載于:https://www.cnblogs.com/linjiqin/p/7511062.html

總結

以上是生活随笔為你收集整理的RocketMQ多Master多Slave模式部署的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。