您好,登錄后才能下訂單哦!
這篇文章主要介紹“RocketMQ的安裝部署方式”,在日常操作中,相信很多人在RocketMQ的安裝部署方式問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”RocketMQ的安裝部署方式”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
操作系統:CentOS-6.9-x86_64-bin-DVD1.iso
依賴環境:gcc 4.4.7.rar、jdk-8u121-linux-x64.tar.gz
安裝軟件:rocketmq-all-4.2.0.tar.gz
默認RocketMQ部署都是集群部署,業務處理及存儲根據broker有關,RocketMQ也有所謂的主從節點master/slave,這里的Slave 不可寫,但可讀,類似于 Mysql主備方式。
建議在安裝系統時磁盤配置為RAID10 時,即使機器宕機不可恢復情況下,由與 RAID10磁盤非常可靠,消息也不會丟(異步刷盤丟失少量消息,同步刷盤一條不丟)。
這種方式風險較大,因為是單節點部署一旦Broker重啟或者宕機時,會導致整個服務不可用,**<u>不建議線上</u>**環境使用
一個集群無 Slave,全是 Master,可部署 2 個 Master 或者 3 個 Master 甚至是多個N個Master節點,相對于單個Master,其可用性和穩定性都有大幅度提高,對于單個Broker節點宕機或者重啟時,不會影響整個集群的正常使用。
宕機的Broker節點上面的消息不能立刻被消費,直至恢復服務至正常狀態才能被消費者消費,消息實時性會受到受到影響
每個 Master 配置一個 Slave,有多對Master-Slave, HA采用異步復制方式,主備有短暫消息延遲,毫秒級。相對于多主部署在其可用性上有所提高。即使磁盤損壞,消息丟失的非常少,且消息實時性不會受影響,因為Master 宕機后,消費者仍然可以從 Slave消費,此過程對應用透明。不需要人工干預。性能同多 Master 模式幾乎一樣。
Master 宕機,磁盤損壞情況,會丟失少量消息
每個 Master 配置一個 Slave,有多對Master-Slave, HA采用同步雙寫方式,主備都寫成功,向應用返回成功。數據與服務都無單點, Master宕機情況下,消息無延遲,服務可用性與數據可用性都非常高。
性能比異步復制模式略低,大約低 10%左右,發送單個消息的 RT會略高。目前主宕機后,備機不能自動切換為主機,后續會支持自動切換功能
注:以上 Broker 與 Slave 配對是通過指定相同的brokerName 參數來配對, Master的 BrokerId 必須是 0, Slave 的BrokerId 必須是大與 0 的數。另外一個 Maste下面可以掛載多個 Slave,同一 Master 下的多個 Slave通過指定不同的 BrokerId來區分
序號 | IP | 用戶名 | 密碼 | 角色 | 模式 |
---|---|---|---|---|---|
1 | 10.10.14.142 | root | 123456 | nameServer1,brokerServer1 | Master1 |
2 | 10.10.14.143 | root | 123456 | nameServer2,brokerServer2 | Master2 |
Hosts 添加信息
IP | NAME |
---|---|
10.10.14.142 | nameServer1 |
10.10.14.142 | brokerServer1 |
10.10.14.143 | nameServer2 |
10.10.14.143 | brokerServer2 |
分別在兩臺機器上修改文件vi /etc/hosts
上傳rocketmq-all-4.2.0.tar.gz文件至/usr/local
解壓至/usr/local文件夾下:tar -zxvf rocketmq-all-4.2.0.tar.gz -C /usr/local
建立軟連接利于操作
ln -s rocketmq-all-4.2.0 rocketmq
創建存儲路徑
# mkdir /usr/local/rocketmq/store # mkdir /usr/local/rocketmq/store/commitlog # mkdir /usr/local/rocketmq/store/consumequeue # mkdir /usr/local/rocketmq/store/index
查看rocketmq/config
有三個文件夾,這是默認存在的,分別表示2主2從異步刷盤、2主2從同步刷盤、2主沒有從節點。我們部署的就是2主。修改配置文件。
2m-noslave文件夾中修改broker-a.properties/broker-a.properties
#所屬集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此處不同的配置文件填寫的不一樣 brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分號分割 namesrvAddr= rocketmq-nameserver1:9876;rocketmq-nameserver2: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=ASYNC_MASTER #刷盤方式 #- ASYNC_FLUSH 異步刷盤 #- SYNC_FLUSH 同步刷盤 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false #發消息線程池數量 #sendMessageThreadPoolNums=128 #拉消息線程池數量 #pullMessageThreadPoolNums=128
mkdir -p /usr/local/rocketmq/logs cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml
一般我們開發環境都是虛擬機內存不大,需要修改其配置文件。
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"
修改java虛擬機的內存大小時堆內存必須大于等于1G,這是啟動服務的最低配置要求
cd /usr/local/rocketmq/bin nohup sh mqnamesrv &
啟動BrokerServer A 【10.10.14.142】
cd /usr/local/rocketmq/bin nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 & 查看進程 jps 查看日志文件 tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log
啟動BrokerServer B 【10.10.14.143】
cd /usr/local/rocketmq/bin nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 & 查看進程 jps 查看日志文件 tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log
cd /usr/local/rocketmq/bin sh mqshutdown broker sh mqshutdown namesrv 等待停止 rm -rf /usr/local/rocketmq/store mkdir /usr/local/rocketmq/store mkdir /usr/local/rocketmq/store/commitlog mkdir /usr/local/rocketmq/store/consumequeue mkdir /usr/local/rocketmq/store/index 按照上面步驟重啟NameServer與BrokerServertail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log
到此,關于“RocketMQ的安裝部署方式”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。