RocketMQ 是一款分布式、隊(duì)列模型的消息中間件,具有以下特點(diǎn):
- 能夠保證嚴(yán)格的消息順序
- 提供豐富的消息拉取模式
- 高效的訂閱者水平擴(kuò)展能力
- 實(shí)時(shí)的消息訂閱機(jī)制 億級消息堆積能力
更多介紹參考github地址:rocketmq
Rocketmq[雙master模式搭建]
一、服務(wù)器及環(huán)境說明
1.服務(wù)器說明
IP | 角色 | 模式 |
---|---|---|
192.168.1.121 | rocketmqnameserver1,broker-a | Master1 |
192.168.1.122 | rocketmqnameserver2,broker-b | Master2 |
2.系統(tǒng)環(huán)境
visualbox 5.1.8 及 centos 6.5
二、Rocketmq安裝與配置
- 分別設(shè)置兩個(gè)虛擬機(jī)的靜態(tài)IP地址
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
QQ圖片20161129223029.png
然后重新啟動網(wǎng)卡service network restart
另外一臺機(jī)器也是同樣的設(shè)計(jì)知識ip地址設(shè)置的不一樣 - 設(shè)置主機(jī)名
以121機(jī)器為例
# vim /etc/hosts 添加如下
192.168.1.121 rocketmq-nameserver1
192.168.1.121 rocketmq-nameserver2
不僅修改hosts文件,還要修改/etc/sysconfig/network,筆者在這里坑了好久
# vim /etc/sysconfig/network 添加如下
NETWORKING=yes
HOSTNAME=rocketmq-nameserver1
使用source /etc/sysconfig/network命令,使修改立即生效或者注銷系統(tǒng),新打開終端,看是命令提示符的主機(jī)是否已經(jīng)更新了。注:另一臺機(jī)器也是如此操作! - 防火墻設(shè)置
如果是開發(fā)環(huán)境 #service iptables stop
直接關(guān)閉防火墻
若是生產(chǎn)環(huán)境就需要配置防火墻,增加端口規(guī)則,默認(rèn)nameserver端口是9876,筆者直接就關(guān)閉防火墻服務(wù)
注:另一臺機(jī)器也是如此操作! - JDK安裝設(shè)置
- jdk-8u111-linux-x64.tar.gz 下載jdk放置/usr/local/software
-
tar -zxvf jdk-8u111-linux-x64.tar.gz -C .
解壓到當(dāng)前文件夾 -
mv jdk-8u111-linux-x64 jdk1.8
重命名 -
vim /etc/profiles 設(shè)置環(huán)境變量
QQ圖片20161129230513.png -
source /etc/profile
讓配置生效
注:另一臺機(jī)器也是如此操作!
- Rocketmq安裝與配置(以3.2.6為例)
- 下載alibaba-rocketmq-3.2.6.tar.gz 放置/usr/local/software
-
tar -zxvf alibaba-rocketmq-3.2.6.tar.gz -C /usr/local
解壓 -
ln -s alibaba-rocketmq-3.2.6 rocketmq
建立軟連接 -
mkdir /usr/local/rocketmq/store
存儲路徑 -
mkdir /usr/local/rocketmq/store/commitlog
commitLog 存儲路徑 -
mkdir /usr/local/rocketmq/store/consumequeue
消費(fèi)隊(duì)列存儲路徑存儲路徑 -
mkdir /usr/local/rocketmq/store/index
消息索引存儲路徑 - 修改broker的配置文件,注意現(xiàn)在搭建的是2master模式配置文件就在2m-nosalve下
# vim /usr/local/rocketmq/conf/2m-noslave/broker-a.properties
QQ圖片20161129231524.png
這里主要注意的是brokerName以及namesrnName的地址需要與hosts設(shè)置的一致
注:另一臺機(jī)器編輯的是 # vim /usr/local/rocketmq/conf/2m-noslave/broker-b.properties文件,brokerName=broker-b - 修改日志配置文件
#mkdir -p /usr/local/rocketmq/logs
#cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml
注:另一臺機(jī)器也是如此操作! - 修改啟動參數(shù)
因?yàn)槭情_發(fā)環(huán)境并且是虛擬機(jī),內(nèi)存沒有那么大,所以需要將他們的參數(shù)調(diào)小,但是最好不要低于1G。若是生產(chǎn)環(huán)境,當(dāng)然越大越好,默認(rèn)配置是4G。
#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"
注:另一臺機(jī)器也是如此操作! - 啟動兩臺的namesrv
#cd /usr/local/rocketmq/bin
#nohup sh mqnamesrv &
因?yàn)閞ocketmq是java開發(fā)的,所以通過jps命令查看namesrv有沒有啟動,當(dāng)然通過日志文件也可以,namesrv正常啟動之后,后續(xù)再分別啟動Broker - 啟動BrokerServer[192.168.1.121]
#cd /usr/local/rocketmq/bin
#nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &
#jps
查看進(jìn)程
#tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log
#tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log
- 啟動BrokerServer[192.168.1.122]
#cd /usr/local/rocketmq/bin
#nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 &
#jps
查看進(jìn)程
#tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log
#tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log