RocketMQ-部署双Master模式

一、RocketMQ-部署双Master模式

服务器只有两台,选择双主模式,真实环境建议至少双主双从

服务介绍地址端口
rocketmq-nameserver1注册中心1192.168.200.418047
rrocketmq-master1broker-a --master192.168.200.418048
rocketmq-nameserver2注册中心2192.168.200.428047
broker-a --master2broker-b --master192.168.200.428048

1、添加host信息

vim /etc/hosts
名称地址
rocketmq-nameserver1192.168.200.41
rrocketmq-master1192.168.200.41
rocketmq-nameserver2192.168.200.42
rrocketmq-master2192.168.200.42

2、下载rocketmq

官方地址:https://rocketmq.apache.org/dowloading/releases/
这里我下载的版本是4.7.0
在这里插入图片描述
上传解压并将需要的文件夹复制到 /opt/rocketmq

   cd /opt
   mkdir rocketmq
   unzip rocketmq-all-4.7.0-source-release.zip
   cd rocketmq-all-4.7.0/
   mvn -Prelease-all -DskipTests clean install -U
   cd distribution/target/rocketmq-4.7.0/
   cp -rp rocketmq-4.7.0/opt/rocketmq

3、创建存储路径

存储路径

mkdir /opt/rocketmq/data

commitLog 存储路径

mkdir /opt/rocketmq/data/commitlog

消息队列存储路径

mkdir /opt/rocketmq/data/consumequeue

消息索引存储路径

/opt/rocketmq/data/index

4、RocketMQ配置文件【两台机器保持一致】

注意:这里我修改了nameserver和broker的端口
nameserver -> 8047 (默认:9876)
broker> 8048 (默认:10911)
关闭了自动创建Topic和订阅组

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

vim /opt/rocketmq/rocketmq-4.7.0/conf/2m-noslave/broker-a.properties

#所属集群名字
brokerClusterName=rocketmq-cluster
 
#broker名字,注意此处不同的配置文件填写的不一样 (broker-b.properties的这里改成broker-b)
brokerName=broker-a
#0 表示 Master,>0 表示 Slave 
brokerId=0
#nameServer地址,分号分割 (可选,该配置默认从系统可用地址中选择一个;)
namesrvAddr=rocketmq-nameserver1:8047;rocketmq-nameserver2:8047
#在某些场景可以手动配置ip,例如程序运行在虚拟机中外部无法访问默认地址,或者用来解决docker本地ip外部无法访问的问题,由于服务器多ip这里选择手动配置ip。
brokerIP1=rocketmq-master1
#可选,broker的ha地址,其用途同上,不过一般不需要配置
#brokerIP2=192.168.*.*
 
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 
autoCreateTopicEnable=false
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 
autoCreateSubscriptionGroup=false
#Broker 对外服务的监听端口 
listenPort=8048
#删除文件时间点,默认凌晨 4点 
deleteWhen=04
#文件保留时间,默认 48 小时 
fileReservedTime=120
#commitLog每个文件的大小默认1G 
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整 
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000 
#redeleteHangedFileInterval=120000 
#检测物理文件磁盘空间 
diskMaxUsedSpaceRatio=88
#存储路径 
storePathRootDir=/opt/rocketmq/data
#commitLog 存储路径 
storePathCommitLog=/opt/rocketmq/data/commitlog
#消费队列存储路径存储路径 
storePathConsumeQueue=/opt/rocketmq/data/consumequeue
#消息索引存储路径 
storePathIndex=/opt/rocketmq/data/index
#checkpoint 文件存储
storeCheckpoint=/opt/rocketmq/data/checkpoint
#abort 文件存储路
abortFile=/opt/rocketmq/data/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=128lushDiskType=ASYNC_FLUSH

2、修改配置文件 : broker-b.properties

vim /opt/rocketmq/rocketmq-4.7.0/conf/2m-noslave/broker-b.properties

#所属集群名字
brokerClusterName=rocketmq-cluster
 
#broker名字,注意此处不同的配置文件填写的不一样 (broker-b.properties的这里改成broker-b)
brokerName=broker-b
#0 表示 Master,>0 表示 Slave 
brokerId=0
#nameServer地址,分号分割(可选,该配置默认从系统可用地址中选择一个;)
namesrvAddr=rocketmq-nameserver1:8047;rocketmq-nameserver2:8047

#在某些场景可以手动配置ip,例如程序运行在虚拟机中外部无法访问默认地址,或者用来解决docker本地ip外部无法访问的问题.服务器多ip这里选择手动配置ip。
brokerIP1=rocketmq-master2
#可选,broker的ha地址,其用途同上,不过一般不需要配置
#brokerIP2=192.168.*.*
 
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 
autoCreateTopicEnable=false
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 
autoCreateSubscriptionGroup=false
#Broker 对外服务的监听端口 
listenPort=8048
#删除文件时间点,默认凌晨 4点 
deleteWhen=04
#文件保留时间,默认 48 小时 
fileReservedTime=120
#commitLog每个文件的大小默认1G 
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整 
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000 
#redeleteHangedFileInterval=120000 
#检测物理文件磁盘空间 
diskMaxUsedSpaceRatio=88
#存储路径 
storePathRootDir=/opt/rocketmq/data
#commitLog 存储路径 
storePathCommitLog=/opt/rocketmq/data/commitlog
#消费队列存储路径存储路径 
storePathConsumeQueue=/opt/rocketmq/data/consumequeue
#消息索引存储路径 
storePathIndex=/opt/rocketmq/data/index
#checkpoint 文件存储
storeCheckpoint=/opt/rocketmq/data/checkpoint
#abort 文件存储路
abortFile=/opt/rocketmq/data/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=128lushDiskType=ASYNC_FLUSH

5、修改日志路径【两台机器】

mkdir -p /opt/rocketmq/logs
cd /opt/rocketmq/rocketmq-4.7.0/conf && sed -i 's#${user.home}#/opt/rocketmq#g' *.xml

6、修改启动脚本参数【两台机器】

设置jvm最小、最大内存,根据服务器配置来定

vim /opt/rocketmq/rocketmq-4.7.0/bin/runbroker.sh

原配置:JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"

修改为:JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"

vim /opt/rocketmq/rocketmq-4.7.0/bin/runserver.sh

原配置:JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

修改为:JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

7、先启动nameServer【两台机器】

进入根目录:

cd /opt/rocketmq/rocketmq-4.7.0

编写配置文件

echo "listenPort=8047" > namesrv.properties

启动 NameServer
这里启动的时候我修改了nameserver的端口

nohup sh bin/mqnamesrv -c ./namesrv.properties

查看日志:

tail -f /opt/rocketmq/logs/rocketmqlogs/namesrv.log

成功显示:The Name Server boot success…

8、启动brokerServer1【192.168.200.41】

进入根目录:

cd /opt/rocketmq/rocketmq-4.7.0

启动mqbroker服务 (这里使用的配置文件:broker-a.properties)

nohup sh bin/mqbroker -c /opt/rocketmq/rocketmq-4.7.0/conf/2m-noslave/broker-a.properties &

查看日志

tail -f /opt/rocketmq/logs/rocketmqlogs/broker.log

成功显示:

The broker[%s, 172.30.30.233:10911] boot success…
register broker[0]to name server rocketmq-nameserver2:8047 OK

9、启动brokerServer2【192.168.200.42】

进入根目录:

cd /opt/rocketmq/rocketmq-4.7.0

启动mqbroker服务(这里使用的配置文件:broker-b.properties)

nohup sh bin/mqbroker -c /opt/rocketmq/rocketmq-4.7.0/conf/2m-noslave/broker-b.properties &

查看日志

tail -f /opt/rocketmq/logs/rocketmqlogs/broker.log

10、查看进程是否启动

在这里插入图片描述

11、服务的关闭

先关闭broker,再关闭nameServer

sh bin/mqshutdown broker
The mqbroker(36695) is running…
Send shutdown request to mqbroker(36695) OK

sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running…
Send shutdown request to mqnamesrv(36664) OK

12、Topic的创建

创建Topic使用的命令: mqadmin updateTopic

cd /opt/rocketmq/rocketmq-4.7.0/bin
./mqadmin updateTopic
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
usage: mqadmin updateTopic [-b <arg>] [-c <arg>] [-h] [-n <arg>] [-o <arg>] [-p <arg>] [-r <arg>] [-s <arg>]
       -t <arg> [-u <arg>] [-w <arg>]
 -b,--brokerAddr <arg>       create topic to which broker
 -c,--clusterName <arg>      create topic to which cluster
 -h,--help                   Print help
 -n,--namesrvAddr <arg>      Name server address list, eg: 192.168.0.1:9876;192.168.0.2:9876
 -o,--order <arg>            set topic's order(true|false)
 -p,--perm <arg>             set topic's permission(2|4|6), intro[2:W 4:R; 6:RW]
 -r,--readQueueNums <arg>    set read queue nums
 -s,--hasUnitSub <arg>       has unit sub (true|false)
 -t,--topic <arg>            topic name
 -u,--unit <arg>             is unit topic (true|false)
 -w,--writeQueueNums <arg>   set write queue nums

例如:

/mqadmin updateTopic -n 192.168.200.41:8047 -c rocketmq-cluster -t rocketTopic

二、RocketMQ 可视化工具

项目下载地址:https://github.com/apache/rocketmq-externals

下载很慢,这里分享我自己下载的:
链接:https://pan.baidu.com/s/1gjsgrwE1t2_I_k4D0mSo6g 密码:bo7k

## rocketmq 可视化工具
1、修改配置文件
cd /opt/rocketmq-externals/rocketmq-console/src/main/resources
vim application.properties
2、修改内容
server.port=8066 此可视化插件的运行端口。
rocketmq.config.namesrvAddr=rocketmq-nameserver1:8047;rocketmq-nameserver2:8047
rocketmq.config.isVIPChannel=false 不使用vip通道
3、进入跟目录
cd /opt/rocketmq-externals/rocketmq-console
4、项目打包
mvn clean package -Dmaven.test.skip=true
5、运行
cd target
java -jar rocketmq-console-ng-1.0.1.jar

登录访问Console

在访问Console时支持按用户名和密码登录控制台,在操作完成后登出。需要做如下的设置:

1.在Spring配置文件resources/application.properties中修改 开启登录功能
# 开启登录功能
rocketmq.config.loginRequired=true

# Dashboard文件目录,登录用户配置文件所在目录
rocketmq.config.dataPath=/tmp/rocketmq-console/data


2.确保${rocketmq.config.dataPath}定义的目录存在,并且该目录下创建登录配置文件"users.properties", 如果该目录下不存在此文件,则默认使用resources/users.properties文件。 users.properties文件格式为:
# 该文件支持热修改,即添加和修改用户时,不需要重新启动console
# 格式, 每行定义一个用户, username=password[,N]  #N是可选项,可以为0 (普通用户)1 (管理员)  

#定义管理员 
admin=admin,1

#定义普通用户
user1=user1
user2=user2


访问可视化工具:http://localhost:8066/
可以在工具里新建/删除 Topic和订阅组
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

三、关于防火墙的问题:

https://blog.csdn.net/qq_24232123/article/details/79781527

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值