RocketMq的集群部署(二)
一、RocketMq双主集群部署
rocketMq的下载见:https://www.cnblogs.com/simplefuer/p/12192984.html
1、配置hosts和环境变量
两台服务器修改/etc/hosts,加入下面两行
vim /etc/hosts
192.168.1.0 rocketmq-nameserver-1
192.168.1.1 rocketmq-nameserver-2
以下为我自己服务器的配置,第一列为服务器内网地址,第二列为服务器默认主机名,你可以设置成自定义的:
修改/etc/profile
vim /etc/profile
export ROCKETMQ_HOME=/opt/apps/rocketmq
export PATH=$ROCKETMQ_HOME/bin:$PATH
export NAMESRV_ADDR=*****(服务器内网地址):9876
修改完成后,按Esc键,:wq 保存
然后输入:source /etc/profile 使环境变量生效
2、修改配置文件
进入 /opt/usr/rocketmq-4.6/conf/2m-noslave 文件下,修改broker-a.properties和broker-b.properties文件。
broker-a.properties 配置文件
broker-b.properties 配置文件
#nameServer地址,分号分割
namesrvAddr = 192.168.1.0:9876;192.168.1.1:9876
#在发消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/opt/usr/rocketmq-4.6/store/
storePathCommitLog= /opt/usr/rocketmq-4.6/store/commitlog
storePathConsumeQueue=/opt/usr/rocketmq-4.6/store/consumequeue
storePathIndex=/opt/usr/rocketmq-4.6/store/index
storeCheckPoint = /opt/usr/rocketmq-4.6/store/checkpoint
abortFile = /opt/usr/rocketmq-4.6/store/abort
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示Master, >0 表示Slave
brokerId=0
# 删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
#异步复制Master
brokerRole=ASYNC_MASTER
#异步刷盘
flushDiskType=ASYNC_FLUSH
从以上两个配置文件可以看出,除了brokerName不同外,其它配置都是一样的。
两台服务器都做以上操作。
3、启动两台服务器的namesrv
进入bin目录,使用以下命令:
nohup mqnamesrv >/opt/usr/rocketmq-4.6/logs/namesrv.log 2>&1 &
显示以下内容,即启动成功。
4、启动第一台节点的broker
nohup sh mqbroker -c ../conf/2m-noslave/broker-a.properties >/opt/usr/rocketmq-4.6/logs/broker.log 2>&1 &
查看日志,显示以下内容时,即启动成功。
5、在另一台节点上做同样的操作,nameserver的启动命令一样,但是broker启动需要使用broker-b的这个配置文件进行启动
nohup sh mqbroker -c ../conf/2m-noslave/broker-b.properties >/opt/usr/rocketmq-4.6/logs/broker.log 2>&1 &
6、以上3、4、5的命令可以在启动脚本里,通过脚本启动即可。
cd /opt/usr/rocketmq-4.6/shell
vim broker.sh
#!/bin/sh
nohup sh ../bin/mqbroker -c ../conf/2m-noslave/broker-a.properties >/opt/usr/rocketmq-4.6/logs/broker.log 2>&1 &
Esc键+:wq 保存。
启动时,直接启动脚本就行,这样每次启动的时候就不用手敲了。
启动命令:sh broker.sh
7、启动完成后,可用以下命令进行测试。
生产者:
sh ../bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
消费者:
sh ../bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
8、部署rocketmq集群时,遇到的坑:
在store文件夹下多建了文件夹,造成broker不能启动。
在配置文件夹路径时,在store文件夹下,创建了几个包,在启动broker时,一直启动不了,也没有报错;后来想起是在rocketmq下新建了包后,才出现的该问题,所以试了下将store下的包删除,重新启动,最后发现是因为建了checkpoint造成的,将该包删除并重新启动就可以了。
9、RocketMq控制后台的部署可参考:http://www.imooc.com/article/details/id/290092