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