RocketMQ双主双从搭建

1、环境变量配置:
#设置jdk环境变量

export JAVA_HOME=/usr/local/java/jdk1.8.0_191  #jdk安装目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

#设置 rocketmq 环境变量

export ROCKETMQ_HOME=/usr/local/rocketmq/rocketmq-4.2
export PATH=$PATH::$ROCKETMQ_HOME/bin

2、创建目录

mkdir /usr/local/rocketmq/rocketmq-4.2/data/store 存储路径
mkdir /usr/local/rocketmq/rocketmq-4.2/data/store/commitlog  commitLog 存储路径
mkdir /usr/local/rocketmq/rocketmq-4.2/data/store/consumequeue 消费队列存储路径存储路径
mkdir /usr/local/rocketmq/rocketmq-4.2/data/store/index 消息索引存储路径

3、修改配置文件:
broker-a.properties:

#所属集群名称,如果多个master,那么每个master配置的名称应该一致,要不然识别不了
brokerClusterName=rocketmq-cluster
#broker名称
brokerName=broker-a
#0 表示master,>0 表示slave
brokerId=0
#nameServer地址,分号隔开
namesrvAddr=192.168.9.201:9876;192.168.9.202:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许broker自动创建topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许broker自动创建订阅组,建议线下开始,线上关闭
autoCreateSubscriptionGroup=true
#broker对外服务的监听端口,
#同一台机器部署多个broker,端口号要不同,且端口号之间要相距大些
listenPort=10911
#删除文件的时间节点,默认凌晨4点
deleteWhen=04
#文件保留时间,默认48小时
fileReservedTime=120
#commitLog每个文件的大小,默认大小1g
mapedFileSizeCommitLog=1073741824
#consumeQueue每个文件默认存30w条,根据自身业务进行调整
mapedFileSizeConsumeQueue=300000
destroyMapedFileInterval=120000
redeleteHangedFileInterval=120000
#检查物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#store存储路径,master与slave目录要不同
storePathRootDir=/usr/local/rocketmq/rocketmq-4.2/data/store
#commitLog存储路径
storePathCommitLog=/usr/local/rocketmq/rocketmq-4.2/data/store/commitlog
#限制的消息大小
maxMessageSize=65536
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
checkTransactionMessageEnable=false
#发消息线程池数
sendMessageThreadPoolNums=128
#拉去消息线程池数
pullMessageThreadPoolNums=128
#broker角色:
#ASYSC_MASTER 异步复制master
#SYSC_MASTER 同步复制master
#SLAVE 从
brokerRole=SYSC_MASTER
#刷盘方式
#ASYNC_FLUSH 异步刷盘
#SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH

broker-b-s.properties:

brokerClusterName=rocketmq-cluster
brokerName=broker-b
#0 -> master ,>0 -> slave
brokerId=1
namesrvAddr=192.168.9.201:9876;192.168.9.202:9876
defaultTopicQueueNums=4
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
listenPort=10950
deleteWhen=04
fileReservedTime=120
mapedFileSizeCommitLog=1073741824
mapedFileSizeConsumeQueue=300000
destroyMapedFileInterval=120000
redeleteHangedFileInterval=120000
diskMaxUsedSpaceRatio=88
storePathRootDir=/usr/local/rocketmq/rocketmq-4.2/data/store/slave
storePathCommitLog=/usr/local/rocketmq/rocketmq-4.2/data/store/slave/commitlog
maxMessageSize=65536
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
checkTransactionMessageEnable=false
sendMessageThreadPoolNums=128
pullMessageThreadPoolNums=128
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH

另外一台机器也是这样配置

4、修改日志配置文件

#创建日志目录

mkdir -p /usr/local/rocketmq/rocketmq-4.2/logs

#替换*.xml文件中的{user.home}为自己指定的目录

cd /usr/local/rocketmq/rocketmq-4.2/conf && sed -i 's#${user.home}#/root/svr/rocketmq#g' *.xml

5、改参数:
runbroker.sh,runserver.sh启动参数默认对jvm的堆内存设置比较大(不改启动不起来),如果是虚拟机非线上环境需要改下参数,大小可以根据自己机器来决定。

6、启动服务
先启动namesrv(两台都要启动):

cd /usr/local/rocketmq/rocketmq-4.2/bin
nohup sh mqnamesrv &
nohup: 忽略输入并把输出追加到"nohup.out"
jps
2604 NamesrvStartup
2621 Jps

因为rocketmq是java开发的,所以通过jps命令查看namesrv有没有启动,当然通过日志文件也可以,namesrv正常启动之后,后续再分别启动Broker。

另外一台执行相同的步骤

7、启动完成,查看集群信息:

 sh mqadmin clusterlist -n 192.168.9.201:9876
### 设置和管理 RocketMQ 双主双从集群架构 #### 名词解释 为了更好地理解如何设置和管理 RocketMQ双主双从集群架构,先来了解一下各个组件及其作用。NameServer 是名称服务器,在整个消息队列体系里负责路由管理和负载均衡;Producer 生产者用于发送消息到指定的主题(Topic),而 Consumer 则是从特定主题订阅并消费这些消息的应用程序实例[^2]。 #### 架构特点 该种类型的集群由两个 Master 和两个 Slave 组成,其中每一对 Master-Slave 形成了一个逻辑上的节点对。这种设计不仅提高了系统的可靠性还增强了容错能力。当其中一个 Master 出现故障时,其对应的 Slave 将接管工作继续提供服务,从而保证了业务连续性[^3]。 #### 环境准备与配置 要成功建立这样一个高可用性的消息中间件环境,需完成如下几个关键步骤: ##### Host 添加信息 编辑 `/etc/hosts` 文件加入所有参与构建此集群机器之间的映射关系,确保它们可以通过主机名互相访问[^4]。 ##### 防火墙配置 允许必要的端口通信以便于不同角色之间能够正常交互。通常情况下涉及到了 NameServer 默认监听9876端口、Broker默认使用的10911端口等[^5]。 ##### 环境变量设定 通过修改用户的 shell profile (如 `.bashrc`) 来定义 `ROCKETMQ_HOME` 并将其 bin 目录添加至 PATH 中,使得命令行工具可以被全局调用。 ```shell export ROCKETMQ_HOME=/usr/local/rocketmq export PATH=$PATH:$ROCKETMQ_HOME/bin ``` ##### 存储路径创建 为每一个 Broker 实例单独设立存放日志和其他运行时数据的空间是非常重要的一步操作。这有助于保持良好的性能表现同时也便于后期维护管理工作。 #### Broker 配置调整 针对每个不同的 Broker 成员都需要精心定制相应的参数选项以满足实际应用场景的需求。具体来说就是分别编写适用于 master1, slave1, master2 以及 slave2 的配置文件,并放置在合适的位置下。 对于同步双写的场景而言,特别需要注意的是要在 slave 的配置文件中指明 syncMasterEnable=true 这样才能开启同步复制功能。 #### 启动顺序和服务验证 按照一定的次序依次启动 NameServer 和 Brokers ,即先让所有的 NameServers 上线之后再逐一激活 Masters 和 Slaves 。最后借助官方提供的客户端工具或者其他方式测试消息能否顺利发布与接收以此确认整体架构已经正确无误地搭建完毕。 #### 使用 RocketMQ Dashboard 进行监控 一旦完成了上述全部准备工作,则可通过安装部署 RocketMQ Dashboard 来获取关于当前集群状态的各种统计图表及报警提示等功能支持,进一步简化运维人员日常工作的复杂度[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值