rocketMQ-部署双Master方式

 

服务器环境

主要用到以下两台服务器来做双master集群

服务器:

序号

IP(公)

IP(内)

用户名

密码

角色

模式

备注

1

192.168.1.151

 

root

root

nameServer1

brokerServer1

Master1

服务:

 

应用App:

 

2

192.168.1.152

 

root

root

nameServer2

brokerServer2

Master2

服务:

 

应用App:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

操作过程:

安装包已经上传至其中1个节点

 

两个服务器解压安装都一样

1、解压缩安装包

命令:

unzip rocketmq-all-4.2.0-bin-release.zip -d /usr/local/rocketmq

-d表示解压到指定目录

解压缩之后如下(如没按unzip,则安装unzip命令是:yum install -y unzip zip):

2、创建存储路径【两台服务器】

mkdir /usr/local/rocketmq/store
mkdir /usr/local/rocketmq/store/commitlog
mkdir /usr/local/rocketmq/store/consumequeue
mkdir /usr/local/rocketmq/store/index

3、RocketMQ配置文件【两台机器】

为了方便管理配置文件,每台服务器的配置都创建一份其他服务器的配置文件,如果需要修改配置内容,则在任一 一台服务器中修改相应的配置文件,然后把该台的所有配置文件拷贝覆盖到其他服务器就行。

vim /usr/local/rocketmq/conf/2m-noslave/broker-a.properties
vim /usr/local/rocketmq/conf/2m-noslave/broker-b.properties

配置broker-a.properties 


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

#broker名字,注意此处不同的配置文件填写的不一样 (broker-b.properties的这里改成broker-b)
brokerName=broker-a
#0 表示 Master,>0 表示 Slave 
brokerId=0
#nameServer地址,分号分割
#namesrvAddr=rocketmq-nameserver:9876;rocketmq-nameserver2:9876
namesrvAddr=192.168.1.151:9876;192.168.1.152:9876
#可选,该配置默认从系统可用地址中选择一个;
#在某些场景可以手动配置ip,例如程序运行在虚拟机中外部无法访问默认地址,或者用来解决docker本地ip外部无法访问的问。
brokerIP1=192.168.1.151
#可选,broker的ha地址,其用途同上,不过一般不需要配置
#brokerIP2=192.168.1.152

#在发送消息时,自动创建服务器不存在的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=ASYNC_MASTER
#刷盘方式 
#- ASYNC_FLUSH  异步刷盘 
#- SYNC_FLUSH  同步刷盘 
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量 
#sendMessageThreadPoolNums=128 
#拉消息线程池数量 
#pullMessageThreadPoolNums=128lushDiskType=ASYNC_FLUSH

配置broker-b.properties

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

#broker名字,注意此处不同的配置文件填写的不一样 (broker-b.properties的这里改成broker-b) 
brokerName=broker-b
#0 表示 Master,>0 表示 Slave 
brokerId=0
#nameServer地址,分号分割
#namesrvAddr=rocketmq-nameserver:9876;rocketmq-nameserver2:9876
namesrvAddr=192.168.1.151:9876;192.168.1.152:9876
#可选,该配置默认从系统可用地址中选择一个;
#在某些场景可以手动配置ip,例如程序运行在虚拟机中外部无法访问默认地址,或者用来解决docker本地ip外部无法访问的问。
brokerIP1=192.168.1.152
#可选,broker的ha地址,其用途同上,不过一般不需要配置
#brokerIP2=192.168.1.152

#在发送消息时,自动创建服务器不存在的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=ASYNC_MASTER
#刷盘方式 
#- ASYNC_FLUSH  异步刷盘 
#- SYNC_FLUSH  同步刷盘 
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量 
#sendMessageThreadPoolNums=128 
#拉消息线程池数量 
#pullMessageThreadPoolNums=128lushDiskType=ASYNC_FLUSH

 

将2个配置文件远程拷贝到152服务器中:

命令:

scp /usr/local/rocketmq/conf/2m-noslave/broker-a.properties root@192.168.1.152:/usr/local/rocketmq/conf/2m-noslave/
scp /usr/local/rocketmq/conf/2m-noslave/broker-b.properties root@192.168.1.152:/usr/local/rocketmq/conf/2m-noslave/

 

4、修改日志配置文件,替换路径名【两台机器】

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

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

设置jvm最小、最大内存,如:

java -Xmx72g -Xms72 -Xmn4g -Xss256m
-Xmx72g:设置JVM最大可用内存为72g.
-Xms72g:设置JVM促使内存为72g.此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存.
-Xmn4g:设置年轻代大小为rG.

-Xss256m:设置每个线程的堆栈大小

-XX:MaxPermSize=256m:设置持久代(即方法区)大小为256m.

-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4.

 

vim /usr/local/rocketmq/bin/runbroker.sh

#===========================================================================================
# JVM Configuration

#===========================================================================================
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"

vim /usr/local/rocketmq/bin/runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m XX:PermSize=128m -XX:MaxPermSize=320m"

 

6、先启动NameServer【两台机器】

cd /usr/local/rocketmq/bin
nohup sh mqnamesrv &

7、在启动BrokerServer A【192.168.1.151】

cd /usr/local/rocketmq/bin

#启动mqbroker服务
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties &

#查看端口
netstat -ntlp

#查看进程
jps

#查看日志
tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log
tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log

8、启动BrokerServer B【192.168.1.152】

nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties &

netstat -ntlp

jps

tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log

tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log

 

9、防火墙开发端口

如果报连接异常,请把9876端口添加到防火墙白名单或停止防火墙:

添加端口:firewall-cmd --permanent --add-port=9876/tcp

关闭防火墙:service firewalld stop

启动防火墙:service firewalld start

重启防火墙:firewall-cmd -–reload

防火墙启用状态:firewall-cmd –state

查看防火墙是否已开发:firewall-cmd --query-port=9876/tcp

查看所有打开的端口: firewall-cmd --list-ports

 

 

 

成功后显示:

 

先关闭所有的mq broker服务

sh /usr/local/rocketmq/bin/mqshutdown broker

再关闭所有的mq nameserv服务

sh /usr/local/rocketmq/bin/mqshutdown broker

 

 

 

10、启动rocketmq  web管理界面

下载管理页面项目,并打包为jar

下载: https://github.com/apache/rocketmq-externals.git

使用maven打包下载文件中的rocketmq-console-ng项目

进入rocketmq-console-ng项目根目录,执行:mvn clean package -Dmaven.test.skip=true

之后会生成一个rocketmq-console-ng-1.0.0.jar项目,该项目是一个springboot项目,可以使用java -jar rocketmq-console-ng-1.0.0.jar 启动项目。 

 

在项目的application.properties中配置namesrv地址

配置mq服务地址:

rocketmq.config.namesrvAddr=192.168.1.151:9876;192.168.1.152:9876

 

上传并启动,以下两种都可以

(1)nohup java -jar rocketmq-console-ng-1.0.0.jar &

(2)nohup java -jar rocketmq-console-ng-1.0.0.jar & > log.file 2>&1 &

 

防火墙开放端口,并重启防火墙,然后访问地址显示:

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值