rocketMQ部署(双主双从模式-异步复制)

部署需要两台服务器:2C4G的配置

对应Ip地址:

192.168.0.23 rocketmq-nameserver1 rocketmq-master1 rocketmq-slave2 mq23

192.168.0.24 rocketmq-nameserver2 rocketmq-master2 rocketmq-slave1 mq24

系统:

cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)

内核:

uname -a
Linux node3 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

环境所需软件:

java:1.8.0_161 (jdk-8u161-linux-x64.tar.gz)

rocketMQ:4.6.0 (rocketmq-all-4.6.0-bin-release.zip)

rocketMQ管理界面:https://github.com/apache/rocketmq-externals/tree/master/rocketmq-console (rocketmq-externals-master.zip)

全部软件百度云盘链接:https://pan.baidu.com/s/1o4bFIPYVSyRJfRJw-xh_1w 
提取码:mlw1 

如果失效,还需要的可以加QQ:526005003

cat >> /etc/hosts<<EOF

192.168.0.23 rocketmq-nameserver1 rocketmq-master1 rocketmq-slave2 mq23

192.168.0.24 rocketmq-nameserver2 rocketmq-master2 rocketmq-slave1 mq24
EOF

 两台服务器添加部署服务的目录:

mkdir -p /data/software && cd /data/software

把三个软件都上传到其中一台服务器上(我这里以192.168.0.24 [mq24] 为例)

安装java:

tar zxf jdk-8u161-linux-x64.tar.gz

cat > /etc/profile.d/java_home.sh <<EOF
JAVA_HOME=/data/software/jdk1.8.0_161
JRE_HOME=\$JAVA_HOME/jre
CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar:\$JRE_HOME/lib/rt.jar
PATH=\$PATH:\$JAVA_HOME/bin:\$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASSPATH PATH
EOF

source /etc/profile

scp -r jdk1.8.0_161 mq23:/data/software/
scp /etc/profile.d/java_home.sh mq23:/etc/profile.d/

安装unzip解压软件:

yum -y install unzip

安装rocketMQ:

unzip rocketmq-all-4.6.0-bin-release.zip
mv rocketmq-all-4.6.0-bin-release rocketmq

cat > /etc/profile.d/rocketmq_home.sh <<EOF
ROCKETMQ_HOME=/data/software/rocketmq
PATH=$PATH:$ROCKETMQ_HOME/bin
export ROCKETMQ_HOME PATH
EOF

scp /etc/profile.d/rocketmq_home.sh mq23:/etc/profile.d/

cd rocketmq/conf/2m-2s-sync

 修改配置文件如下

[root@node4 10:53:44/data/software/rocketmq/conf/2m-2s-sync]# ll
total 16
-rw-r--r-- 1 root root 1969 Apr  1 13:45 broker-a.properties
-rw-r--r-- 1 root root 1963 Apr  1 13:45 broker-a-s.properties
-rw-r--r-- 1 root root 1975 Apr  1 13:45 broker-b.properties
-rw-r--r-- 1 root root 1963 Apr  1 13:45 broker-b-s.properties

 

cat > broker-a.properties <<EOF
#所属集群名称
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
#文件保留时间(h),默认48小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/software/rocketmq/data/master
#commitLog存储路径
storePathCommitLog=/data/software/rocketmq/data/master/commitlog
#消费队列存储路径
storePathConsumeQueue=/data/software/rocketmq/data/master/consumequeue
#消息索引存储路径
storePathIndex=/data/software/rocketmq/data/master/index
#checkpoint 文件存储路径
storeCheckPoint=/data/software/rocketmq/data/master/checkpoint
#abort 文件存储路径
abortFile=/data/software/rocketmq/data/master/abort
#限制的消息大小
maxMessageSize=65536
#broker角色
#- ASYNC_MASTER    异步复制Master
#- SYNC_MASTER     同步双写Master
#- SLAVE    从节点
brokerRole=ASYNC_MASTER
#刷盘策略
#- ASYNC_FLUSH    异步刷盘
#- SYNC_FLUSH     同步刷盘
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

EOF

 

cat > broker-a-s.properties <<EOF
#所属集群名称
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
#文件保留时间(h),默认48小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/software/rocketmq/data/slave
#commitLog存储路径
storePathCommitLog=/data/software/rocketmq/data/slave/commitlog
#消费队列存储路径
storePathConsumeQueue=/data/software/rocketmq/data/slave/consumequeue
#消息索引存储路径
storePathIndex=/data/software/rocketmq/data/slave/index
#checkpoint 文件存储路径
storeCheckPoint=/data/software/rocketmq/data/slave/checkpoint
#abort 文件存储路径
abortFile=/data/software/rocketmq/data/slave/abort
#限制的消息大小
maxMessageSize=65536
#broker角色
#- ASYNC_MASTER    异步复制Master
#- SYNC_MASTER     同步双写Master
#- SLAVE    从节点
brokerRole=SLAVE
#刷盘策略
#- ASYNC_FLUSH    异步刷盘
#- SYNC_FLUSH     同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

EOF

 

cat > broker-b.properties <<EOF
#所属集群名称
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
#文件保留时间(h),默认48小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/software/rocketmq/data/master
#commitLog存储路径
storePathCommitLog=/data/software/rocketmq/data/master/commitlog
#消费队列存储路径
storePathConsumeQueue=/data/software/rocketmq/data/master/consumequeue
#消息索引存储路径
storePathIndex=/data/software/rocketmq/data/master/index
#checkpoint 文件存储路径
storeCheckPoint=/data/software/rocketmq/data/master/checkpoint
#abort 文件存储路径
abortFile=/data/software/rocketmq/data/master/abort
#限制的消息大小
maxMessageSize=65536
#broker角色
#- ASYNC_MASTER    异步复制Master
#- SYNC_MASTER     同步双写Master
#- SLAVE    从节点
brokerRole=ASYNC_MASTER
#刷盘策略
#- ASYNC_FLUSH    异步刷盘
#- SYNC_FLUSH     同步刷盘
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

EOF

 

cat > broker-b-s.properties <<EOF
#所属集群名称
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
#文件保留时间(h),默认48小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/software/rocketmq/data/slave
#commitLog存储路径
storePathCommitLog=/data/software/rocketmq/data/slave/commitlog
#消费队列存储路径
storePathConsumeQueue=/data/software/rocketmq/data/slave/consumequeue
#消息索引存储路径
storePathIndex=/data/software/rocketmq/data/slave/index
#checkpoint 文件存储路径
storeCheckPoint=/data/software/rocketmq/data/slave/checkpoint
#abort 文件存储路径
abortFile=/data/software/rocketmq/data/slave/abort
#限制的消息大小
maxMessageSize=65536
#broker角色
#- ASYNC_MASTER    异步复制Master
#- SYNC_MASTER     同步双写Master
#- SLAVE    从节点
brokerRole=SLAVE
#刷盘策略
#- ASYNC_FLUSH    异步刷盘
#- SYNC_FLUSH     同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

EOF

创建rocketMQ所需要的目录

mkdir -p /data/software/rocketmq/data/{slave,master}/{commitlog,consumequeue,index,config}

一、修改启动内存脚本的配置,不然可能服务器不够内存启动,修改两个文件

ll /data/software/rocketmq/bin/run*.sh
-rwxr-xr-x 1 root root 3719 Apr  1 14:33 /data/software/rocketmq/bin/runbroker.sh
-rwxr-xr-x 1 root root 3403 Apr  1 14:33 /data/software/rocketmq/bin/runserver.sh

 1、修改/data/software/rocketmq/bin/runserver.sh,大概在67行,可能会存在着差异

 

2、修改/data/software/rocketmq/bin/runbroker.sh,大概在67行,可能会存在着差异

 把rocketMQ同步到mq23的服务器上:

scp -r /data/software/rocketmq mq23:/data/software/

 启用服务:

先启动namesrv服务并让它在后台运行,两台都要起,同样的操作

# 切换到脚本目录
cd /data/software/rocketmq/bin/

# 启动namesrv服务,并让它后台运行
nohup sh mqnamesrv &

# 检查端口
netstat -untpl | grep 9876
tcp6       0      0 :::9876                 :::*                    LISTEN      101774/java

一、mq23:namesrv  master-a  slave-b

1、启动 master-a

nohup sh mqbroker -c /data/software/rocketmq/conf/2m-2s-sync/broker-a.properties &

2、启动 slave-b

nohup sh mqbroker -c /data/software/rocketmq/conf/2m-2s-sync/broker-b-s.properties &

二、mq24:namesrv  master-b  slave-a

1、启动 master-b

nohup sh mqbroker -c /data/software/rocketmq/conf/2m-2s-sync/broker-b.properties &

2、启动 slave-a

nohup sh mqbroker -c /data/software/rocketmq/conf/2m-2s-sync/broker-a-s.properties &

三、两台服务器上检查端口是否都存在

netstat -untpl | grep -E '9876|10911|11011'
tcp6       0      0 :::10911                :::*                    LISTEN      2170/java           
tcp6       0      0 :::11011                :::*                    LISTEN      2425/java           
tcp6       0      0 :::9876                 :::*                    LISTEN      101774/java

 四、开始部署rocketmq-externals管理界面

unzip rocketmq-externals-master.zip
cd rocketmq-externals-master/rocketmq-console

 1、修改配置文件 src/main/resources/application.properties

端口和IP地址根据生产需要去修改相应的安全配置

rocketmq.config.loginRequired=true  # 开启用户登录功能

2、创建数据存放位置,并复制账号密码的配置文件过去

mkdir /data/software/rocketmq-externals-master/data
cp src/main/resources/users.properties /data/software/rocketmq-externals-master/data/

配置文件说明 vim /data/software/rocketmq-externals-master/data/users.properties

配置文件修改不需要重启,支持热更新,就是修改保存立即生效

 

 3、打包jar文件,打包会比较慢,等待就行了

3.1 mvn安装,如果没有就换成阿里的yum源就可以了

yum -y install maven

 

mvn package -Dmaven.test.skip=true

 打包之后的文件在当前目录下 target 目录下

 4、启动rocketMQ管理页面程序,并让它在后台执行

# 复制到顶目录上
cp target/rocketmq-console-ng-2.0.0.jar /data/software/rocketmq-externals-master/

# 切换目录
cd /data/software/rocketmq-externals-master/

# 启动程序
nohup java -jar rocketmq-console-ng-2.0.0.jar &

 5、检查端口是否正常启动

netstat -untpl | grep 8082

 登录rocketMQ管理界面

我这边的账号密码都是admin,看不懂英文的,可以在右上角里选择中文,至此rocketMQ安装完成

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值