RocketMQ集群搭建(2)

RocketMQ集群各角色介绍及集群搭建方式请看RocketMQ集群搭建(1)

2.1双主双从集群搭建

2.1.1总体架构

消息高可用采用2m-2s(同步双写)方式

2.1.2集群工作流程

1. 启动NameServer,NameServer起来后监听端口,等待Broker、Producer、Consumer连上来, 相当于一个路由控制中心。

2. Broker启动,跟所有的NameServer保持长连接,定时发送心跳包。心跳包中包含当前Broker信息 (IP+端口等)以及存储所有Topic信息。注册成功后,NameServer集群中就有Topic跟Broker的映射 关系。

3. 收发消息前,先创建Topic,创建Topic时需要指定该Topic要存储在哪些Broker上,也可以在发送 消息时自动创建Topic。

4. Producer发送消息,启动时先跟NameServer集群中的其中一台建立长连接,并从NameServer中 获取当前发送的Topic存在哪些Broker上,轮询从队列列表中选择一个队列,然后与队列所在的 Broker建立长连接从而向Broker发消息。

5. Consumer跟Producer类似,跟其中一台NameServer建立长连接,获取当前订阅Topic存在哪些 Broker上,然后直接跟Broker建立连接通道,开始消费消息。

2.1.3服务器环境

2.1.4Host添加信息

vim /etc/hosts

配置如下:

# nameserver

192.168.10.102 rocketmq-nameserver1

192.168.10.103 rocketmq-nameserver2

# broker 192.168.10.102 rocketmq-master1

192.168.10.102 rocketmq-slave2

192.168.10.103 rocketmq-master2

192.168.10.103 rocketmq-slave1

配置完成后, 重启网卡

systemctl restart network

2.1.5防火墙配置

宿主机需要远程访问虚拟机的rocketmq服务和web服务,需要开放相关的端口号,简单粗暴的方式是直 接关闭防火墙

# 关闭防火墙 systemctl stop firewalld.service

# 查看防火墙的状态 firewall-cmd --state

# 禁止firewall开机启动 systemctl disable firewalld.service

或者为了安全,只开放特定的端口号,RocketMQ默认使用3个端口:9876 、10911 、11011 。如果防 火墙没有关闭的话,那么防火墙就必须开放这些端口:

  • nameserver 默认使用 9876 端口
  • master 默认使用 10911 端口
  • slave 默认使用11011 端口

执行以下命令:

# 开放name server默认端口 firewall-cmd --remove-port=9876/tcp --permanent

# 开放master默认端口 firewall-cmd --remove-port=10911/tcp --permanent

# 开放slave默认端口 (当前集群模式可不开启) firewall-cmd --remove-port=11011/tcp --permanent

# 重启防火墙 firewall-cmd --reload

2.1.6环境变量配置

vim /etc/profile

在profile文件的末尾加入如下命令:

#set rocketmq

ROCKETMQ_HOME=/opt/module/rocketmq-4.5.1

PATH=$PATH:$ROCKETMQ_HOME/bin

export ROCKETMQ_HOME PATH

输入:wq! 保存并退出, 并使得配置立刻生效:

source /etc/profile

2.1.7 创建消息存储路径

mkdir /usr/local/rocketmq/store

mkdir /usr/local/rocketmq/store/commitlog

mkdir /usr/local/rocketmq/store/consumequeue

mkdir /usr/local/rocketmq/store/index

2.1.8broker配置文件

1)master1

服务器:192.168.25.135

vim /opt/module/rocketmq-4.5.1/conf/2m-2s-sync/broker-a.properties

修改配置如下:

#所属集群名字

brokerClusterName=rocketmq-cluster

#broker名字,注意此处不同的配置文件填写的不一样

brokerName=broker-a

#0 表示 Master,>0 表示

Slave brokerId=0

#nameServer地址,分号分割

namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876

#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4

#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭

autoCreateTopicEnable=true

#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true

#Broker 对外服务的监听端口

listenPort=10911

#删除文件时间点,默认凌晨 4点

deleteWhen=04 #文件保留时间,默认 48 小时

fileReservedTime=120

#commitLog每个文件的大小默认1G

mapedFileSizeCommitLog=1073741824

#ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000

#destroyMapedFileIntervalForcibly=120000

#redeleteHangedFileInterval=120000

#检测物理文件磁盘空间

diskMaxUsedSpaceRatio=88

#存储路径

storePathRootDir=/usr/local/rocketmq/store

#commitLog 存储路径

storePathCommitLog=/usr/local/rocketmq/store/commitlog

#消费队列存储路径存储路径 storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue

#消息索引存储路径

storePathIndex=/usr/local/rocketmq/store/index

#checkpoint 文件存储路径

storeCheckpoint=/usr/local/rocketmq/store/checkpoint

#abort 文件存储路径

abortFile=/usr/local/rocketmq/store/abort

#限制的消息大小

maxMessageSize=65536

#flushCommitLogLeastPages=4

#flushConsumeQueueLeastPages=2

#flushCommitLogThoroughInterval=10000

#flushConsumeQueueThoroughInterval=60000

#Broker 的角色

#- ASYNC_MASTER 异步复制Master

#- SYNC_MASTER 同步双写Master

#- SLAVE brokerRole=SYNC_MASTER

#刷盘方式

#- ASYNC_FLUSH 异步刷盘

#- SYNC_FLUSH 同步刷盘

flushDiskType=SYNC_FLUSH

#checkTransactionMessageEnable=false

#发消息线程池数量

sendMessageThreadPoolNums=128

#拉消息线程池数量

#pullMessageThreadPoolNums=128

2)slave2

服务器:192.168.25.135

vim /opt/module/rocketmq-4.5.1/conf/2m-2s-sync/broker-b-s.properties

修改配置如下:

#所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-b

#0 表示 Master,>0 表示 Slave brokerId=1

#nameServer地址,分号分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876

#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4

#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true

#Broker 对外服务的监听端口 listenPort=11011

#删除文件时间点,默认凌晨 4点 deleteWhen=04

#文件保留时间,默认 48 小时 fileReservedTime=120

#commitLog每个文件的大小默认1G 3)master2 服务器:192.168.25.138 修改配置如下: mapedFileSizeCommitLog=1073741824

#ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000

#destroyMapedFileIntervalForcibly=120000

#redeleteHangedFileInterval=120000

#检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88

#存储路径 storePathRootDir=/usr/local/rocketmq/store

#commitLog 存储路径 storePathCommitLog=/usr/local/rocketmq/store/commitlog

#消费队列存储路径存储路径 storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue

#消息索引存储路径 storePathIndex=/usr/local/rocketmq/store/index

#checkpoint 文件存储路径 storeCheckpoint=/usr/local/rocketmq/store/checkpoint

#abort 文件存储路径 abortFile=/usr/local/rocketmq/store/abort

#限制的消息大小 maxMessageSize=65536

#flushCommitLogLeastPages=4

#flushConsumeQueueLeastPages=2

#flushCommitLogThoroughInterval=10000

#flushConsumeQueueThoroughInterval=60000

#Broker 的角色 #- ASYNC_MASTER 异步复制Master

#- SYNC_MASTER 同步双写Master

#- SLAVE brokerRole=SLAVE

#刷盘方式 #- ASYNC_FLUSH 异步刷盘

#- SYNC_FLUSH 同步刷盘 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false

#发消息线程池数量

#sendMessageThreadPoolNums=128

#拉消息线程池数量 #pullMessageThreadPoolNums=128

3)master2

服务器:192.168.25.138

vim /opt/module/rocketmq-4.5.1/conf/2m-2s-sync/broker-b.properties

修改配置如下:

#所属集群名字 brokerClusterName=rocketmq-cluster

#broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-b

#0 表示 Master,>0 表示 Slave brokerId=0

#nameServer地址,分号分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876

#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4

#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true

#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true

#Broker 对外服务的监听端口 listenPort=10911

#删除文件时间点,默认凌晨 4点 deleteWhen=04

#文件保留时间,默认 48 小时 fileReservedTime=120

#commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824

#ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000

#destroyMapedFileIntervalForcibly=120000

#redeleteHangedFileInterval=120000

#检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88

#存储路径 storePathRootDir=/usr/local/rocketmq/store

#commitLog 存储路径 storePathCommitLog=/usr/local/rocketmq/store/commitlog

#消费队列存储路径存储路径 storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue

#消息索引存储路径 storePathIndex=/usr/local/rocketmq/store/index

#checkpoint 文件存储路径 storeCheckpoint=/usr/local/rocketmq/store/checkpoint #abort 文件存储路径 abortFile=/usr/local/rocketmq/store/abort

#限制的消息大小 maxMessageSize=65536

#flushCommitLogLeastPages=4

#flushConsumeQueueLeastPages=2

#flushCommitLogThoroughInterval=10000

#flushConsumeQueueThoroughInterval=60000 #Broker 的角色

#- ASYNC_MASTER 异步复制Master

#- SYNC_MASTER 同步双写Master

#- SLAVE brokerRole=SYNC_MASTER

#刷盘方式

#- ASYNC_FLUSH 异步刷盘

#- SYNC_FLUSH 同步刷盘 flushDiskType=SYNC_FLUSH #checkTransactionMessageEnable=false

#发消息线程池数量

#sendMessageThreadPoolNums=128

#拉消息线程池数量

#pullMessageThreadPoolNums=128

4)slave1

服务器:192.168.25.138

vim /opt/module/rocketmq-4.5.1/conf/2m-2s-sync/broker-a-s.properties

修改配置如下:

#所属集群名字 brokerClusterName=rocketmq-cluster

#broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-a

#0 表示 Master,>0 表示 Slave brokerId=1

#nameServer地址,分号分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876

#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4

#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true

#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true

#Broker 对外服务的监听端口 listenPort=11011

#删除文件时间点,默认凌晨 4点 deleteWhen=04

#文件保留时间,默认 48 小时 fileReservedTime=120

#commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824

#ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000

#destroyMapedFileIntervalForcibly=120000

#redeleteHangedFileInterval=120000

#检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88

#存储路径 storePathRootDir=/usr/local/rocketmq/store

#commitLog 存储路径 storePathCommitLog=/usr/local/rocketmq/store/commitlog

#消费队列存储路径存储路径 storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue

#消息索引存储路径 storePathIndex=/usr/local/rocketmq/store/index

#checkpoint 文件存储路径 storeCheckpoint=/usr/local/rocketmq/store/checkpoint

#abort 文件存储路径 abortFile=/usr/local/rocketmq/store/abort

#限制的消息大小 maxMessageSize=65536

#flushCommitLogLeastPages=4

#flushConsumeQueueLeastPages=2

#flushCommitLogThoroughInterval=10000

#flushConsumeQueueThoroughInterval=60000

#Broker 的角色

#- ASYNC_MASTER 异步复制Master

#- SYNC_MASTER 同步双写Master 3.3.9 修改启动脚本文件 1)runbroker.sh 需要根据内存大小进行适当的对JVM参数进行调整: 2)runserver.sh 3.3.10 服务启动 1)启动NameServe集群 分别在192.168.25.135和192.168.25.138启动NameServer 2)启动Broker集群 在192.168.25.135上启动master1和slave2 master1: slave2:

#- SLAVE brokerRole=SLAVE

#刷盘方式

#- ASYNC_FLUSH 异步刷盘

#- SYNC_FLUSH 同步刷盘 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false

#发消息线程池数量

#sendMessageThreadPoolNums=128

#拉消息线程池数量 #pullMessageThreadPoolNums=128

2.1.9修改启动脚本文件

1)runbroker.sh

需要根据内存大小进行适当的对JVM参数进行调整:

#===================================================

# 开发环境配置 JVM Configuration

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"

2)runserver.sh

vim /opt/module/rocketmq-4.5.1/bin/runserver.sh

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

2.1.10服务启动

1)启动NameServe集群

分别在192.168.25.135和192.168.25.138启动NameServer

cd /opt/module/rocketmq-4.5.1/bin

nohup sh mqnamesrv &

2)启动Broker集群

在192.168.25.135上启动master1和slave2

master1:

cd /opt/module/rocketmq-4.5.1/bin

nohup sh mqbroker -c /opt/module/rocketmq-4.5.1/conf/2m-2s-sync/brokera.properties &

slave2:

cd /opt/module/rocketmq-4.5.1/bin

nohup sh mqbroker -c /opt/module/rocketmq-4.5.1/conf/2m-2s-sync/broker-bs.properties &

在192.168.25.138上启动master2和slave2

master2

cd /opt/module/rocketmq-4.5.1/bin

nohup sh mqbroker -c /opt/module/rocketmq-4.5.1/conf/2m-2s-sync/brokerb.properties &

slave1

cd /opt/module/rocketmq-4.5.1/bin

nohup sh mqbroker -c /opt/module/rocketmq-4.5.1/conf/2m-2s-sync/broker-as.properties &

2.1.11查看进程状态

启动后通过JPS查看启动进程

2.1.12查看日志

# 查看nameServer日志

tail -500f ~/logs/rocketmqlogs/namesrv.log

# 查看broker日志

tail -500f ~/logs/rocketmqlogs/broker.log

  • 16
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值