消息中間件RocketMQ的安裝與部署

消息中間件RocketMQ的安裝與部署

官方簡介:

RocketMQ是一款分佈式、隊列模型的消息中間件,具有以下特點:

  • 能夠保證嚴格的消息順序

  • 提供豐富的消息拉取模式

  • 高效的訂閱者水平擴展能力

  • 實時的消息訂閱機制

  • 億級消息堆積能力

1.安裝RocketMQ

1.1 安裝環境gitJavaMaven

   安裝git

yum install git

   安裝jdk環境

   下載jdk

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

   安裝並設置環境變量

rpm -ivh jdk-7u51-linux-x64.rpm
echo "exportJAVA_HOME=/usr/java/default" >> /etc/profile
source /etc/profile

   安裝maven

mkdir /usr/local/maven
tar zxvf apache-maven-3.2.1-bin.tar.gz -C/usr/local/maven/
echo 'exportM2_HOME=/usr/local/maven/apache-maven-3.2.1' >> /etc/profile
echo 'export M2=$M2_HOME/bin' >>/etc/profile
echo 'export MAVEN_OPTS="-Xms256m-Xmx512m"' >> /etc/profile
echo 'export PATH=$M2:$PATH' >>/etc/profile
source /etc/profile
mvn -v

1.2 安裝RocketMQ

wget https://github.com/alibaba/RocketMQ/archive/v3.0.8-beta1.tar.gz
tar zxvf v3.0.8-beta1.tar.gz
cd rocketmq
sh install.sh
cd devenv

2.RocketMQ部署

   Producer、Consumer、Broker都可以分佈式部署。Producer、Consumer通過Name Server來尋找Broker,Broker啓動後,會定時將要發佈的Topic註冊到NameServer


2.1 啓動nameserver

nohup mqnamesrv &

在生產環境部署nameserver,請參考以下軟硬件要求

https://github.com/alibaba/RocketMQ/wiki/system_requirements

2.2 啓動broker

nohup mqbroker -n "192.168.0.1:9876;192.168.0.2:9876" &

Broker指定Name Server地址的方式(優先級按照高低順序排序)

   啓動Broker時,命令行方式指定

mqbroker -n "192.168.0.1:9876;192.168.0.2:9876"

   通過環境變量指定

exportNAMESRV_ADDR=192.168.0.1:9876;192.168.0.2:9876

2.3 關閉nameserver或broker

sh ./mqshutdown
Useage: mqshutdown broker | namesrv

2.4 Producer/Consumer指定Name Server地址

   通過代碼中指定

producer.setNamesrvAddr("192.168.0.1:9876;192.168.0.2:9876");

   或

consumer.setNamesrvAddr("192.168.0.1:9876;192.168.0.2:9876");

   通過Java啓動參數中指定

-Drocketmq.namesrv.addr=192.168.0.1:9876;192.168.0.2:9876

   通過環境變量指定

exportNAMESRV_ADDR=192.168.0.1:9876;192.168.0.2:9876

在生產環境部署Broker,請參考以下軟硬件要求

https://github.com/alibaba/RocketMQ/wiki/system_requirements

2.5 Broker集羣部署

   推薦的幾種 Broker 集羣部署方式,這裏的Slave 不可寫,但可讀,類似與 Mysql 主備方式。

1.單個 Master

   這種方式風險較大,一旦Broker 重啓或者宕機時,會導致整個服務不可用,不建議線上環境使用。

2.多 Master 模式

   一個集羣無 Slave,全是 Master,例如 2 個 Master 或者 3 個 Master

   優點:配置簡單,單個Master 宕機或重啓維護對應用無影響,在磁盤配置爲 RAID10 時,即使機器宕機不可恢復情況下,由與 RAID10 磁盤非常可靠,消息也不會丟(異步刷盤丟失少量消息,同步刷盤一條不丟)。性能最高。

   缺點:單臺機器宕機期間,這臺機器上未被消費的消息在機器恢復之前不可訂閱,消息實時性會受到受到影響。

   ###  先啓動 NameServer,例如機器 IP 爲:192.168.1.1:9876

nohup sh mqnamesrv &

   ###  在機器 A,啓動第一個 Master

nohup sh mqbroker -n 192.168.1.1:9876 -c$ROCKETMQ_HOME/conf/2m-noslave/broker-a.properties &

   ###  在機器 B,啓動第二個 Master

nohup sh mqbroker -n 192.168.1.1:9876 -c$ROCKETMQ_HOME/conf/2m-noslave/broker-b.properties &

3.多 Master 多 Slave 模式,異步複製

   每個 Master 配置一個 Slave,有多對Master-Slave,HA 採用異步複製方式,主備有短暫消息延遲,毫秒級。

   優點:即使磁盤損壞,消息丟失的非常少,且消息實時性不會受影響,因爲 Master 宕機後,消費者仍然可以從 Slave 消費,此過程對應用透明。不需要人工干預。性能同多 Master 模式幾乎一樣。

   缺點:Master 宕機,磁盤損壞情況,會丟失少量消息。

   ###  先啓動 NameServer,例如機器 IP 爲:192.168.1.1:9876

nohup sh mqnamesrv &

   ###  在機器 A,啓動第一個 Master

nohup sh mqbroker -n 192.168.1.1:9876 -c$ROCKETMQ_HOME/conf/2m-2s-async/broker-a.properties &

   ###  在機器 B,啓動第二個 Master

nohup sh mqbroker -n 192.168.1.1:9876 -c$ROCKETMQ_HOME/conf/2m-2s-async/broker-b.properties &

   ###  在機器 C,啓動第一個 Slave

nohup sh mqbroker -n 192.168.1.1:9876 -c$ROCKETMQ_HOME/conf/2m-2s-async/broker-a-s.properties &

   ###  在機器 D,啓動第二個 Slave

nohup sh mqbroker -n 192.168.1.1:9876 -c$ROCKETMQ_HOME/conf/2m-2s-async/broker-b-s.properties &

4.  多 Master 多 Slave 模式,同步雙寫

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

   優點:數據與服務都無單點,Master宕機情況下,消息無延遲,服務可用性與數據可用性都非常高

   缺點:性能比異步複製模式略低,大約低 10%左右,發送單個消息的 RT 會略高。目前主宕機後,備機不能自動切換爲主機,後續會支持自動切換功能。

   ###  先啓動 NameServer,例如機器 IP 爲:192.168.1.1:9876

nohup sh mqnamesrv &

   ###  在機器 A,啓動第一個 Master

nohup sh mqbroker -n 192.168.1.1:9876 -c$ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties &

   ###  在機器 B,啓動第二個 Master

nohup sh mqbroker -n 192.168.1.1:9876 -c$ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties &

   ###  在機器 C,啓動第一個 Slave

nohup sh mqbroker -n 192.168.1.1:9876 -c$ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties &

   ###  在機器 D,啓動第二個 Slave

nohup sh mqbroker -n 192.168.1.1:9876 -c$ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties &

   以上 Broker 與 Slave 配對是通過指定相同的brokerName 參數來配對,Master 的 BrokerId 必須是 0,Slave 的BrokerId 必須是大與 0 的數。另外一個 Master 下面可以掛載多個 Slave,同一 Master 下的多個 Slave 通過指定不同的 BrokerId 來區分。

   $ROCKETMQ_HOST 指的 RocketMQ 安裝目錄,需要用戶自己設置此環境變量


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