RocketMq的單機安裝(一)


參考文獻: https://blog.csdn.net/licusliu/article/details/85248192

1.1 名詞解釋

術語和縮寫

解釋

nameServer

專門為RocketMQ設計的輕量級名稱服務

Producer

消息生產者,負責生產消息,一般由業務系統負責生產消息

Consumer

消息消費者,負責消費消息,一般是后台系統負責異步消息

Broker

消息中轉角色,負責存儲消息,轉發消息

Master

Broker中的主節點

Slave

Broker中的副節點

異步復制

消息寫入master節點,再由master節點異步復制到slave節點

同步雙寫

消息同時寫入master節點和slave節點

異步刷盤

Broker的一種持久化策略,消息寫入pagecache后,直接返回。由異步線程直接將pagecache寫入硬盤

同步刷盤

Broker的一種持久化策略,消息寫入pagecache后,由同步線程直接將pagecache寫入硬盤

TPS

每秒發送消息個數

 

1.2 安裝部署

1.2.1 硬件環境

Cpu4核、內存8g

軟件環境

Linux環境

Jdk1.8或以上版本64位

Gradle 3.3或以上

 

1.2.2 單機部署

1、查看JAVA環境

(1)輸入命令 Java -version

(2)顯示jdk版本,如果jdk版本不低於1.8則繼續下一步,如果低於1.8則需要安裝jdk1.8或以上版本

 

2、下載rocketmq

可通過命令或者在官網下載:

wget http://mirrors.hust.edu.cn/apache/rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zip下載

官網:http://rocketmq.apache.org/dowloading/releases

rocketmq下載截圖

 

3、 解壓rocketmq

輸入命令 unzip rocketmq-all-4.6.0-bin-release.zip -d ./rocketmq

可將rocketmq解壓到當前目錄的rocketmq文件夾內

 

4、創建存儲路徑

  mkdir -p ../rocketmq/store/{store,commitlog,consumequeue,index}

 

5、配置RocketMq環境變量

RockeMq一般部署於非root用戶下,vi /home/${user}/.bash_profile 或 vi /etc/profile,添加如下內容:

  export NAMESRV_ADDR=0.0.0.0(內網ip):9876

 

6、設置broker配置

(1)輸入命令創建配置

  vi rocketmq/conf/default-broker.properties   或 vi ../conf/broker.conf

(2)輸入內容

  #ip為服務器內網地址,port可自由設置一般為9876   namesrvAddr=ip(內網ip):port;   messageIndexSafe=true   #是否允許Broker 自動創建。Topic,建議線下開啟,線上關閉   autoCreateTopicEnable=true   waitTimeMillsInSendQueue=5000   #發送消息線程池數量   sendMessageThreadPoolNums=64   useReentrantLockWhenPutMessage=true   defaultReadQueueNums = 16   defaultWriteQueueNums = 16   #ip設置外網ip,不需要連接外網的話,可以在參數前面加#注釋掉   brokerIP1=ip(外網ip)   #默認值為DefaultCluster,可以修改為broker所屬的哪個集群   brokerClusterName=DefaultCluster     #原始值為本機主機名,Broker名稱   brokerName=broker-a   #BrokerId,必須是大等於 0 的整數,0 表示Master,>0 表示 Slave,一個 Master 可以掛多個 Slave,Master 與 Slave通過 BrokerName 來配對,原始值為0   brokerId=0   deleteWhen=04   fileReservedTime=48   brokerRole=ASYNC_MASTER   flushDiskType=ASYNC_FLUSH   #port可自由設置,一般設置10911   listenPort=port   storePathRootDir=/usr/local/rocketmq/store   storePathCommitLog= /usr/local/rocketmq/store/commitlog   storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue   storePathIndex=/usr/local/rocketmq/store/index

(3)最后按esc鍵,輸入:wq保存配置

(4)實例:我自己本地的配置

  namesrvAddr =#.#.#.#:9876   brokerClusterName = DefaultCluster   brokerName = broker-a   listenPort=10911   brokerId = 0   deleteWhen = 04   fileReservedTime = 48   brokerRole = ASYNC_MASTER   flushDiskType = ASYNC_FLUSH   storePathRootDir=/opt/usr/rocketmq-4.6/store/store   storePathCommitLog= /opt/usr/rocketmq-4.6/store/commitlog   storePathConsumeQueue=/opt/usr/rocketmq-4.6/store/consumequeue   storePathIndex=/opt/usr/rocketmq-4.6/store/index

 

 

7、修改啟動腳本參數,根據自己linux的配置進行調整

  vi bin/runbroker.sh   JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m -XX:MaxPermSize=320m"   vi bin/runserver.sh   JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m -XX:MaxPermSize=320m"

 

注意:Xms和Xmx至少是1G  否則啟動不起來  Xmn一般是前者的一半,這邊設置的內存不能大於機器實際的內存,根據實際情況調整

8、啟動NameSrv

  nohup sh mqnamesrv >/opt/usr/rocketmq/rocketmq4.6.0/logs/mqnamesrv.log 2>&1 &

9、啟動broker

  nohup sh mqbroker -c ../conf/broker.conf >/opt/usr/rocketmq/rocketmq4.6.0/logs/broker.log 2>&1 &

 

10、停止broker

其中default-broker.properties為上面第5步設置的broker配置文件名

  sh mqshutdown broker

11、停止namesrv

  sh mqshutdown namesrv

備注:停止這兩個任務時不能用kill,如果用kill的話,重新啟動的話,broker是啟動不了的。

12、驗證

(1)在ROCKETMQ_HOME路徑下執行以下命令模擬Producer發消息:

  sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

(2)觀察結果:會發出很多條下面的命令,說明發送成功:

 

 

 

 

(3)在ROCKETMQ_HOME路徑下執行以下命令模擬Consumer發消息:

  sh tools.sh org.apache.rocketmq.example.quickstart.Consumer

(4)觀察結果:會收到和上面一樣多的命令,說明接收成功,可證明RocketMQ部署成功。

1.3 安裝過程中遇到的坑

問題一:Failed to obtain the host name

啟動brokerserver任務時,會報以下錯誤:這是由於啟動的時候找不到自己的主機名對應的ip地址而造成的。

解決上述問題只需修改/etc/hosts文件,在該文件中添加本機配置,就可以了

  vim /etc/hosts

 

添加: 內網ip:主機名

問題二:connect to null failed

 

首先先檢查下namesrvAdrr 是否為空,若為空,則rocketmq沒連接上namesrv的ip地址,查看方式:

 

  sh /bin/mqbroker -m

正常情況下,namesrvAddr=內網ip:9876,報上述錯誤時,namesrvAddr=后面是沒有值的,這種情況下,需檢查rocketmq的配置環境。

  vim /etc/profile      export NAMESRV_ADDR=0.0.0.0(內網ip):9876  是否已經配置

 

問題三:connect to <121.41.110.225:10911> failed

配置文件中的內網地址時,測試時能測通。

  sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

修改為外網地址時,會報上述錯誤

查看防火牆,如果防火牆開啟,則需關閉防火牆,重啟后測試是否能通。若仍不能測通,可能是本服務器的外網ip沒有對外開放,需要找運維開放或自己開放下。

 

查看防火牆的命令:

CentOS 6 vi /etc/sysconfig/iptables #編輯防火牆配置文件 systemctl status iptables systemctl restart iptables.service #最后重啟防火牆使配置生效 systemctl enable iptables.service #設置防火牆開機啟動 
CentOS
7 systemctl status firewalld #查看防火牆是否啟動 systemctl start firewalld #啟動防火牆 systemctl stop firewalld #關閉防火牆 cat /etc/firewalld/zones/public.xml #防火牆文件 firewall-cmd --list-all #防火牆端口list


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM