RocketMQ 2主2從 集群搭建
安裝環境
jdk1.7
alibaba-rocketmq-3.2.6.tar.gz
VM虛擬機redhat6.5-x64:192.168.1.201 192.168.1.202 192.168.1.203 192.168.1.204
Xshell4
部署方案
IP |
主機名 |
用途 |
Broker角色 |
192.168.1.201 |
broker-a |
NameServer,Broker |
Master |
192.168.1.202 |
broker-b |
NameServer, Broker |
Master |
192.168.1.203 |
broker-a-s |
NameServer, Broker |
Slave |
192.168.1.204 |
broker-b-s |
NameServer, Broker |
Slave |
安裝步驟:【兩臺機器同樣操作 以201為例】
步驟一:解壓安裝文件alibaba-rocketmq-3.2.6.tar.gz
[root@201 rocketmq]# tar -zxvf alibaba-rocketmq-3.2.6.tar.gz -C /usr/local [root@201 rocketmq]# mv alibaba-rocketmq rocketmq
步驟二:修改配置
配置一:創建存儲路徑 用於存儲隊列 索引 提交日誌等信息
[root@201 rocketmq]# mkdir -p /usr/local/rocketmq/store [root@201 rocketmq]# mkdir -p /usr/local/rocketmq/store/commitlog [root@201 rocketmq]# mkdir -p /usr/local/rocketmq/store/consumequeue [root@201 rocketmq]# mkdir -p /usr/local/rocketmq/store/index
配置二:Hosts添加信息
192.168.1.201 rocketmq-nameserver1 192.168.1.202 rocketmq-nameserver2192.168.1.203 rocketmq-nameserver3 192.168.1.204 rocketmq-nameserver4 192.168.1.201 rocketmq-master1 192.168.1.202 rocketmq-master2 192.168.1.203 rocketmq-slave1 192.168.1.204 rocketmq-slave2
重啟網卡:service network restart
相互ping一下,在201機器上ping 192.168.1.202 ping rocketmq-nameserver2 ping rocketmq-master2 。 202 203 204機器上也一樣。
配置三:RocketMQ配置文件:
同步雙寫,配置目錄:2m-2s-async
異步刷盤,配置目錄:2m-2s-sync
#201 vim /usr/local/rocketmq/conf/2m-2s-sync/broker-a.properties #202 vim /usr/local/rocketmq/conf/2m-2s-sync/broker-b.properties #203 vim /usr/local/rocketmq/conf/2m-2s-sync/broker-a-s.properties #204 vim /usr/local/rocketmq/conf/2m-2s-sync/broker-b-s.properties
#所屬集群名字 brokerClusterName=rocketmq-cluster #broker名字 broker-a.properties填broker-a broker-b.properties填broker-b 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=/usr/local/rocketmq/store #commitLog 存儲路徑 storePathCommitLog=/usr/local/rocketmq/store/commitlog #消費隊列存儲路徑存儲路徑 storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue #消息索引存儲路徑 storePathIndex=/usr/local/rocketmq/store/index #checkpoint 文件存儲路徑 storeCheckpoint=/usr/local/rocketmq/store/checkpoint #abort 文件存儲路徑 abortFile=/usr/local/rocketmq/store/abort #限制的消息大小 maxMessageSize=65536 #flushCommitLogLeastPages=4 #flushConsumeQueueLeastPages=2 #flushCommitLogThoroughInterval=10000 #flushConsumeQueueThoroughInterval=60000 #Broker 的角色 #- ASYNC_MASTER 異步復制Master #- SYNC_MASTER 同步雙寫Master #- SLAVE brokerRole=SYNC_MASTER #刷盤方式 #- ASYNC_FLUSH 異步刷盤 #- SYNC_FLUSH 同步刷盤 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false #發消息線程池數量 #sendMessageThreadPoolNums=128 #拉消息線程池數量 #pullMessageThreadPoolNums=128
註意:
brokerName:
201 broker-a
202 broker-b
203 broker-a-s
204 broker-b-s
brokerId
201 202 是master 配置brokerId=0
203 204 是slave 配置brokerId=1
brokerRole
201 202是master 配置 brokerRole=SYNC_MASTER
203 204是slave配置 brokerRole=SLAVE
配置四:修改日誌配置文件
[root@201 conf]# mkdir -p /usr/local/rocketmq/logs [root@201 conf]# cd /usr/local/rocketmq/conf && sed -i ‘s#${user.home}#/usr/local/rocketmq#g‘ *.xml
配置五:修改啟動腳本參數 Xms和Xmx至少是1G 否則啟動不起來 Xmn一般是前者的一半
vim /usr/local/rocketmq/bin/runbroker.sh JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m -XX:MaxPermSize=320m" vim /usr/local/rocketmq/bin/runserver.sh JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m -XX:MaxPermSize=320m"
步驟三:啟動:先啟動兩臺機器的NameServer,再啟動兩臺機器的Borker,關機的時候順序相反,先關閉兩臺機器的Broker,再關閉兩臺機器的Nameserver。在啟動 BrokerServer 之前先關閉防火墻.
啟動一:NameServer 201 202 203 204 cd /usr/local/rocketmq/bin nohup sh mqnamesrv & #查看進程 jps #查看日誌 tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log #啟動二:BrokerServer A 192.168.1.201 cd /usr/local/rocketmq/bin nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 & netstat -ntlp jps tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log #啟動三:BrokerServer B 192.168.1.202 cd /usr/local/rocketmq/bin nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 & netstat -ntlp jps tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log #啟動四:BrokerServer B 192.168.1.203 cd /usr/local/rocketmq/bin nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a-s.properties >/dev/null 2>&1 & netstat -ntlp jps tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log #啟動五:BrokerServer B 192.168.1.204 cd /usr/local/rocketmq/bin nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b-s.properties >/dev/null 2>&1 & netstat -ntlp jps tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log
RocketMQ 2主2從 集群搭建