rocketMQ 4.7.1 安装过程(2主2从同步)
安装环境
1 | CentOS 7.5+ |
服务器规划
1 | 机器A broker-1(Master) + NameServer |
步骤
如下操作如果没有特殊说明分别在4台机器上都进行相同操作
1.在每台机器安装JDK环境
在4台机器上分别安装jdk1.8,配置基础环境
2.root用户下创建应用用户
在每台机器上创建运行rocketMQ的用户rmq
1 | $ useradd rmq |
3.使用应用用户进行操作rmq
后续所有操作(除配置环境变量外)使用新创建的用户执行
1 | $ su rmq |
4.上传rocketMQ安装包到4台服务器并解压至/opt/app/rmq
1 | $ unzip rocketmq-all-4.7.1-bin-release.zip -d /opt/app/rmq/ && \ |
5.创建相关文件夹
1 | $ mkdir -p /opt/app/rmq/store/commitlog |
6.给脚本添加执行权限
1 | $ chmod a+x /opt/app/rmq/bin/* |
7.调整脚本中的参数(根据个人情况修改)
- vim runserver.sh
- vim runbroker.sh
8.生成nameServer的配置文件
1 | $ mqnamesrv -p | awk -F ' - ' '{print $2}' > /opt/app/rmq/conf/mqnamesrv.conf |
修改 mqnamesrv.conf 的 rocketmqHome 为 /opt/app/rmq
修改 mqnamesrv.conf 的 listenPort 为 9876
9.生成broker的配置文件
1 | $ mqbroker -p | awk -F ' - ' '{print $2}' > /opt/app/rmq/conf/mqbroker.conf |
修改 mqbroker.conf 的 namesrvAddr 字段为 Rmq 集群的地址
修改 mqbroker.conf 的 brokerIP1、brokerIP2 为本机地址
10.启动mqnameserver(必须先启动NameServer,再启动Broker)
NameServer是无状态的,不会相互同步数据
在四台机器每台上安装NameServer,borker配置namesrvAddr为四台机器,用英文封号分割
1 | $ mkdir -p /opt/app/rmq/logs/ |
- 观察日志日下
1 | Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0 |
11.启动mqbroker(以下内容在不同机器区别操作)
机器A,第一个Master
调整配置文件/opt/app/rmq/conf/mqbroker.conf
1
2
3
4
5
6
7
8brokerClusterName=DefaultCluster
namesrvAddr=10.10.183.210:9876;10.10.183.211:9876;10.10.183.212:9876;10.10.183.213:9876
brokerName=broker-a # broker master与slaver之间保持一致
brokerId=0 # master必须为0. slaver不为0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER # 同步master
flushDiskType=ASYNC_FLUSH
1 | $ nohup mqbroker autoCreateTopicEnable=true -c /opt/app/rmq/conf/mqbroker.conf > /opt/app/rmq/logs/broker.log 2>&1 & |
机器B,第一个Slave
调整配置文件/opt/app/rmq/conf/mqbroker.conf
1
2
3
4
5
6
7
8brokerClusterName=DefaultCluster
namesrvAddr=10.10.183.210:9876;10.10.183.211:9876;10.10.183.212:9876;10.10.183.213:9876
brokerName=broker-a # broker master与slaver之间保持一致
brokerId=1 # master必须为0. slaver不为0
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE # slave
flushDiskType=ASYNC_FLUSH
1 | $ nohup mqbroker autoCreateTopicEnable=true -c /opt/app/rmq/conf/mqbroker.conf > /opt/app/rmq/logs/broker.log 2>&1 & |
机器C,启动第二个Master
调整配置文件/opt/app/rmq/conf/mqbroker.conf
1
2
3
4
5
6
7
8brokerClusterName=DefaultCluster
namesrvAddr=10.10.183.210:9876;10.10.183.211:9876;10.10.183.212:9876;10.10.183.213:9876
brokerName=broker-b # broker master与slaver之间保持一致
brokerId=0 # master必须为0. slaver不为0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER # 同步master
flushDiskType=ASYNC_FLUSH
1 | $ nohup mqbroker autoCreateTopicEnable=true -c /opt/app/rmq/conf/mqbroker.conf > /opt/app/rmq/logs/broker.log 2>&1 & |
机器D,第二个Slave
调整配置文件/opt/app/rmq/conf/mqbroker.conf
1
2
3
4
5
6
7
8brokerClusterName=DefaultCluster
namesrvAddr=10.10.183.210:9876;10.10.183.211:9876;10.10.183.212:9876;10.10.183.213:9876
brokerName=broker-b # broker master与slaver之间保持一致
brokerId=1 # master必须为0. slaver不为0
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE # slave
flushDiskType=ASYNC_FLUSH
1 | $ nohup mqbroker autoCreateTopicEnable=true -c /opt/app/rmq/conf/mqbroker.conf > /opt/app/rmq/logs/broker.log 2>&1 & |
- 观察日志如下
1 | load config properties file OK, /opt/app/rmq/conf/mqbroker.conf |
12.验证是否部署成功
在四台机器中的其中一台执行下列操作,以验证是否部署成功
如果能正常创建topic、并且成功发送消息、消费消息。则认为部署成功
- 创建topic
1 | $ mqadmin updateTopic -n localhost:9876 -b localhost:10911 -t test_topic |
1 | RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0). |
- 查看topic
1 | $ mqadmin topicList -n localhost:9876 |
1 | RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0). |
- 发送消息
1 | $ mqadmin sendMessage -n localhost:9876 -t test_topic -p test_body |
1 | RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0). |
- 消费消息
1 | $ mqadmin consumeMessage -n localhost:9876 -t test_topic |
1 | RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0). |
13.关闭命令
1 | $ mqshutdown broker | namesrv |