部署需要两台服务器: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安装完成