RocketMq-主从集群搭建

该文详细介绍了如何在四台服务器上部署配置RocketMQ集群,包括修改运行脚本、安装JDK、配置不同节点的Broker、打包拷贝配置到其他服务器、开放防火墙端口以及启动Namesrv和Broker服务。最后,在node1节点上安装并配置了RocketMQ控制台,以便于监控集群状态。
摘要由CSDN通过智能技术生成

目录

1.服务器列表

2.下载安装包

3.node1节点修改runserver.sh文件

4. 所有节点安装jdk

5. node1节点配置RocketMQ集群

1.配置node1节点borker-a的master配置文件

2.配置node2节点配置borker-a的slave borker-a-s节点

3.配置node3节点配置borker-b的master节点

4.配置node4节点配置borker-b的slave节

6.将配置好的rocketmq打包拷贝到其他三台服务器

 7.打开防火墙端口

 8.启动nameser

 9.启动BrokerServer

1.node1 192.168.1.3

2.node2 192.168.1.9

3.node3 192.168.1.10

4.node4 192.168.1.11

10.在node1节点上安装控制台 

11.访问测试


1.服务器列表

nameip远程端口
node4 nameserver broker-b-s192.168.1.1122
node3 nameserver broker-b192.168.1.1022
node2 nameserver broker-a-s192.168.1.922
node1 nameserver broker-a192.168.1.322

2.下载安装包

# 版本4.9.4
链接:https://pan.baidu.com/s/15s6lasTfeMv1rUBrH34XPg 
提取码:4545 
# 创建文件目录
mkdir -p /data/soft/ && cd /data/soft/ 
# 创建配置文件目录
mkdir -p /data/soft/rocket/conf

# 创建存储路径
mkdir -p /data/soft/rocket/store/{commitlog,consumequeue,index}
# 修改默认端口
vi /data/soft/rocket/conf/nameser.properties
# 文件内容 默认9876
listenPort=20000

# 查看文件内容
cat /data/soft/rocket/conf/nameser.properties

 

# 上传 rocketmq-all-4.9.4-bin-release.zip
# 没有rz命令执行: yum -y install lrzsz
rz
# 安装解压工具
yum install -y unzip zip
# 解压rocketmq
unzip rocketmq-all-4.9.4-bin-release.zip

 

3.node1节点修改runserver.sh文件

RocketMQ默认预设的JVM内存是4G 用runserver.sh、runbroker.sh 、tools.sh编辑这三个脚本,在脚本中找到这一行调整内存大小为256M

# 两处
vi /data/soft/rocketmq-all-4.9.4-bin-release/bin/runserver.sh

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


vi /data/soft/rocketmq-all-4.9.4-bin-release/bin/runbroker.sh
#JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g"
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"



vi /data/soft/rocketmq-all-4.9.4-bin-release/bin/tools.sh
# JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m"

4. 所有节点安装jdk

#查看jdk 1.8列表:
yum list java-1.8.0*
#安装jdk 1.8下所有包
yum install java-1.8.0-openjdk* -y
#查看安装结果
java -version

5. node1节点配置RocketMQ集群

下面配置只在node1节点上预先配置好。标题描述为该配置文件在那台服务器上使用
RocketMQ--Dledger集群搭建
RocketMQ--Dledger集群搭建_rocketmq dledger_84岁带头冲锋的博客-CSDN博客

1.配置node1节点borker-a的master配置文件

#192.168.1.3 node1节点配置borker-a的master节点2m-2s-async/broker-a.properties
# 先删除在编辑
rm -rf /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a.properties
# 编辑配置文件粘贴下面内容
vi /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a.properties

#所属集群名字,名字一样的节点就在同一个集群内
brokerClusterName=rocketmq-cluster
#broker名字,名字一样的节点就是一组主从节点。
brokerName=broker-a
#brokerid,0就表示是Master,>0的都是表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.1.11:20000;192.168.1.10:20000;192.168.1.9:20000;192.168.1.3:20000
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=20001
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/soft/rocket/store/
#commitLog 存储路径
storePathCommitLog=/data/soft/rocket/store//commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/data/soft/rocket/store/consumequeue
#消息索引存储路径
storePathIndex=/data/soft/rocket/store//index
#checkpoint 文件存储路径
storeCheckpoint=/data/soft/rocket/store/checkpoint
#abort 文件存储路径
abortFile=/data/soft/rocket/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

 

2.配置node2节点配置borker-a的slave borker-a-s节点

# 192.168.1.9
# 所属集群名字,名字一样的节点就在同一个集群内
# broker名字,名字一样的节点就是一组主从节点。
# brokerid,0就表示是Master,>0的都是表示 Slave
# nameServer地址类似zookeeper
# 先删除在编辑
rm -rf /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a-s.properties
# 编辑配置文件粘贴下面内容
vi /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a-s.properties

 

#所属集群名字,名字一样的节点就在同一个集群内
brokerClusterName=rocketmq-cluster
#broker名字,名字一样的节点就是一组主从节点。
brokerName=broker-a
#brokerid,0就表示是Master,>0的都是表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=namesrvAddr=192.168.1.11:20000;192.168.1.10:20000;192.168.1.9:20000;192.168.1.3:20000
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=20001
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/soft/rocket/store/
#commitLog 存储路径
storePathCommitLog=/data/soft/rocket/store//commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/data/soft/rocket/store/consumequeue
#消息索引存储路径
storePathIndex=/data/soft/rocket/store//index
#checkpoint 文件存储路径
storeCheckpoint=/data/soft/rocket/store/checkpoint
#abort 文件存储路径
abortFile=/data/soft/rocket/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.配置node3节点配置borker-b的master节点

##所属集群名字,名字一样的节点就在同一个集群内
##broker名字,名字一样的节点就是一组主从节点。
# 复制5.1内容,修改brokerName=broker-a 为brokerName=broker-b即可

#192.168.1.10 
# 先删除在编辑
rm -rf /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b.properties
# 复制配置文件
cp /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a.properties /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b.properties 
# 修改brokerName=broker-a 为brokerName=broker-b
vi /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b.properties 

4.配置node4节点配置borker-b的slave节

###所属集群名字,名字一样的节点就在同一个集群内
###broker名字,名字一样的节点就是一组主从节点。
复制5.2内容,修改brokerName=broker-a 为brokerName=broker-b即可

#192.168.1.11
# 先删除在编辑
rm -rf /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b-s.properties
# 复制配置文件
cp /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a-s.properties /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b-s.properties 
# 修改brokerName=broker-a 为brokerName=broker-b
vi /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b-s.properties 

6.将配置好的rocketmq打包拷贝到其他三台服务器

tar czvf rocketmq-all-4.9.4-bin-release.tar rocketmq-all-4.9.4-bin-release/

tar czvf rocket.tar rocket/

# 执行拷贝  rocketmq-all-4.9.4-bin-release.tar 文件   root 目标用户名@目标ip:目标目录(/ 根目录)
scp  rocketmq-all-4.9.4-bin-release.tar root@192.168.1.11:/data/soft/
scp  rocketmq-all-4.9.4-bin-release.tar root@192.168.1.10:/data/soft/
scp  rocketmq-all-4.9.4-bin-release.tar root@192.168.1.9:/data/soft/


# 执行拷贝  rocket.tar 文件   root 目标用户名@目标ip:目标目录(/ 根目录)
scp   rocket.tar root@192.168.1.11:/data/soft/
scp   rocket.tar root@192.168.1.10:/data/soft/
scp   rocket.tar root@192.168.1.9:/data/soft/

在这三台服务器上解压上面传输的两个文件

tar xzvf rocketmq-all-4.9.4-bin-release.tar

tar xzvf rocket.tar

ls

 7.打开防火墙端口

每个节点都要执行

namesrv只使用了一个9876端口,修改了默认配置改为20000

firewall-cmd --zone=public --add-port=20000/tcp --permanent

broker的服务端口号 修改broker的listenPort端口号为20001

firewall-cmd --zone=public --add-port=20001/tcp --permanent

haListenPort haListenPort是haService中使用

//默认值为:listenPort + 1 这个值是在BrokerStartup.java中设置的
/**
* 影响haservice中AcceptSocketService服务的端口号
* 参考:
* com.alibaba.rocketmq.store.ha.HAService 构造函数中
*     this.acceptSocketService =
   new AcceptSocketService(defaultMessageStore.getMessageStoreConfig().getHaListenPort());
*/
messageStoreConfig.setHaListenPort(nettyServerConfig.getListenPort() + 1);

firewall-cmd --zone=public --add-port=20002/tcp --permanent

fastListenPort

/**
 *主要用于slave同master同步。 默认为:主要是fastRemotingServer服务使用 listenPort - 2
 * listenPort - 2 默认 10909
 */
fastConfig.setListenPort(nettyServerConfig.getListenPort() - 2);
this.fastRemotingServer = new NettyRemotingServer(fastConfig, this.clientHousekeepingService)

firewall-cmd --zone=public --add-port=19999/tcp --permanent
# 重启生效
firewall-cmd --reload

 8.启动nameser

每台都执行即可下面命令

nohup sh /data/soft/rocketmq-all-4.9.4-bin-release/bin/mqnamesrv  -c /data/soft/rocket/conf/nameser.properties &

 9.启动BrokerServer

1.node1 192.168.1.3

nohup sh /data/soft/rocketmq-all-4.9.4-bin-release/bin/mqbroker -c /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a.properties >/dev/null 2>&1 &

2.node2 192.168.1.9

nohup sh /data/soft/rocketmq-all-4.9.4-bin-release/bin/mqbroker -c /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a-s.properties >/dev/null 2>&1 &

3.node3 192.168.1.10

nohup sh /data/soft/rocketmq-all-4.9.4-bin-release/bin/mqbroker -c /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b.properties  >/dev/null 2>&1 &

4.node4 192.168.1.11

nohup sh /data/soft/rocketmq-all-4.9.4-bin-release/bin/mqbroker -c /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b-s.properties   >/dev/null 2>&1 &

10.在node1节点上安装控制台 

 docker pull apacherocketmq/rocketmq-dashboard:latest


 

docker run -it -d \
--restart=always --privileged=true -m 300m \
--name rmqadmin \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.1.3:20000;192.168.1.9:20000;192.168.1.10:20000;192.168.1.11:20000 \
-Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 10024:8080 \
pangliang/rocketmq-console-ng

firewall-cmd --zone=public --add-port=10024/tcp --permanent
# 重启生效
firewall-cmd --reload

 

11.访问测试

192.168.1.3:10024

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值