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
然后重新启动网卡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 设置环境变量
-
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
这里主要注意的是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