主机IP | 服务 |
---|---|
192.168.100.122 | a-m |
192.168.100.123 | a-s |
192.168.100.124 | namesrv console |
192.168.100.125 | b-m |
192.168.100.126 | b-s |
192.168.100.127 | namesrv |
系统环境:CentosOS 7.6
java环境准备
yum -y install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel
在所有主机上都下载好rocketmq的二进制文件
wget https://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.7.0/rocketmq-all-4.7.0-bin-release.zip -O /usr/local/rocketmq-all-4.7.0-bin-release.zip
cd /usr/local
unzip rocketmq-all-4.7.0-bin-release.zip
ln -sv rocketmq-all-4.7.0-bin-release rocketmq
cd /usr/local/rocketmq/conf/2m-2s-sync
useradd -s /sbin/nologin rocketmq
chown -R rocketmq.rocketmq /usr/local/rocketmq/*
在192.168.100.122上修改配置文件
vim /usr/local/rocketmq/conf/2m-2s-sync/broker-a.properties
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
# acl权限
aclEnable=true
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
namesrvAddr=192.168.100.124:9876;192.168.100.127:9876;
在192.168.100.123上修改配置文件
vim /usr/local/rocketmq/conf/2m-2s-sync/broker-a-s.properties
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=1
deleteWhen=04
fileReservedTime=48
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
# acl权限
aclEnable=true
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
namesrvAddr=192.168.100.124:9876;192.168.100.127:9876;
在192.168.100.125上修改配置文件
vim /usr/local/rocketmq/conf/2m-2s-sync/broker-b.properties
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=0
deleteWhen=04
fileReservedTime=48
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
# acl权限
aclEnable=true
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
namesrvAddr=192.168.100.124:9876;192.168.100.127:9876;
在192.168.100.126上修改配置文件
vim /usr/local/rocketmq/conf/2m-2s-sync/broker-b-s.properties
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=1
deleteWhen=04
fileReservedTime=48
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
# acl权限
aclEnable=true
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
namesrvAddr=192.168.100.124:9876;192.168.100.127:9876;
注意:配置rocketmq支持acl规则,需要在broker配置文件里开启
# acl权限
aclEnable=true
acl配置文件:/usr/local/rocketmq/conf/plain_acl.yml
下面是一个简单的示例
globalWhiteRemoteAddresses: # 全局白名单地址
- 192.168.100.*
- 10.1.32.*
accounts:
- accessKey: administrator
secretKey: 8bd8cee20c7b7017975276cebff0b5f6fcf36f6a7635c37683fed5916ff51039
whiteRemoteAddress: # 白名单地址
admin: true # 是否管理员用户
详细的配置规则可以参考:
https://blog.csdn.net/prestigeding/article/details/94317946
https://my.oschina.net/mingxungu/blog/3083998
https://www.jianshu.com/p/7c9b20518800
broker服务启动参数在文件/usr/local/rocketmq/bin/runbroker.sh中,可以修改jvm相关启动参数
nameserver不需要特殊配置
apache提供一个开源的扩展项目: https://github.com/apache/rocketmq-externals 里面包含一个子项目rocketmq-console,配置下,打个包就可以用了。把项目clone到有maven3以上版本的linux主机中
cd /home/rocketmq-externals-master/rocketmq-console/src/main/resources
vim application.properties # 编辑主配置文件
# 主要是下面这两行
--
rocketmq.config.namesrvAddr=192.168.100.124:9876;192.168.100.127:9876 # nameserver的地址
rocketmq.config.loginRequired=true # 开启控制台认证功能
--
编辑完保存退出
vim users.properties # 配置控制台认证文件
--
admin=admin,1 # 管理员用户
user1=user1 # 普通用户
--
编辑完保存退出
# 下面执行maven打包
cd /home/rocketmq-externals-master/rocketmq-console
mvn clean package -Dmaven.test.skip=true
# 执行完打包程序,找到jar包
cd /home/rocketmq-externals-master/rocketmq-console/target
sz rocketmq-console-ng-1.0.1.jar
jar包上传到192.168.100.124的/usr/local/rocketmq/目录下
console配置文件详细配置说明,console控制台使用参考
https://github.com/apache/rocketmq-externals/blob/master/rocketmq-console/doc/1_0_0/UserGuide_CN.md
配置rocketmq服务,设置开机启动
192.168.100.122上配置
vim /etc/systemd/system/rocketmq-brokerA-master.service
---
[Unit]
Description=RocketMQ is an open source distributed messaging and streaming data plantform
After=network.target
[Service]
Type=simple
WorkingDirectory=/usr/local/rocketmq/
ExecStart=/usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-a.properties
ExecStop=/bin/kill $MAINPID
User=rocketmq
Group=rocketmq
[Install]
WantedBy=multi-user.target
---
systemctl enable rocketmq-brokerA-master.service # 开机启动
192.168.100.123上配置
vim /etc/systemd/system/rocketmq-brokerA-slave.service
---
[Unit]
Description=RocketMQ is an open source distributed messaging and streaming data plantform
After=network.target
[Service]
Type=simple
WorkingDirectory=/usr/local/rocketmq/
ExecStart=/usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-a-s.properties
ExecStop=/bin/kill $MAINPID
User=rocketmq
Group=rocketmq
[Install]
WantedBy=multi-user.target
You have new mail in /var/spool/mail/root
---
systemctl enable rocketmq-brokerA-slave.service
192.168.100.125上配置
vim /etc/systemd/system/rocketmq-brokerB-master.service
---
[Unit]
Description=RocketMQ is an open source distributed messaging and streaming data plantform
After=network.target
[Service]
Type=simple
WorkingDirectory=/usr/local/rocketmq/
ExecStart=/usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-b.properties
ExecStop=/bin/kill $MAINPID
User=rocketmq
Group=rocketmq
[Install]
WantedBy=multi-user.target
---
systemctl enable rocketmq-brokerB-master.service
192.168.100.126上配置
vim /etc/systemd/system/rocketmq-brokerB-slave.service
---
[Unit]
Description=RocketMQ is an open source distributed messaging and streaming data plantform
After=network.target
[Service]
Type=simple
WorkingDirectory=/usr/local/rocketmq/
ExecStart=/usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-b-s.properties
ExecStop=/bin/kill $MAINPID
User=rocketmq
Group=rocketmq
[Install]
WantedBy=multi-user.target
---
systemctl enable rocketmq-brokerB-slave.service
分别在192.168.100.124、192.168.100.127上配置
vim /etc/systemd/system/rocketmq-namesrv.service
[Unit]
Description=RocketMQ is an open source distributed messaging and streaming data plantform
After=network.target
[Service]
Type=simple
WorkingDirectory=/usr/local/rocketmq/
ExecStart=/usr/local/rocketmq/bin/mqnamesrv
ExecStop=/bin/kill
User=rocketmq
Group=rocketmq
[Install]
WantedBy=multi-user.target
You have new mail in /var/spool/mail/root
systemctl enable rocketmq-namesrv
192.168.100.124上配置
vim /etc/systemd/system/rocketmq-console.service
---
[Unit]
Description=RocketMQ is an open source distributed messaging and streaming data plantform
After=network.target
[Service]
Type=simple
WorkingDirectory=/usr/local/rocketmq/
ExecStart=/usr/bin/java -jar /usr/local/rocketmq/rocketmq-console-ng-1.0.1.jar
ExecStop=/bin/kill
User=rocketmq
Group=rocketmq
[Install]
WantedBy=multi-user.target
---
systemctl enable rocketmq-console
192.168.100.124
systemctl start rocketmq-console rocketmq-namesrv
systemctl status rocketmq-console rocketmq-namesrv
192.168.100.127
systemctl start rocketmq-namesrv
systemctl status rocketmq-namesrv
192.168.100.122
systemctl start rocketmq-brokerA-master.service
systemctl status rocketmq-brokerA-master.service
192.168.100.123
systemctl start rocketmq-brokerA-slave.service
systemctl status rocketmq-brokerA-slave.service
192.168.100.125
systemctl start rocketmq-brokerB-master.service
systemctl status rocketmq-brokerB-master.service
192.168.100.126
systemctl start rocketmq-brokerB-slave.service
systemctl status rocketmq-brokerB-slave.service
确认上面所有的nameserver,console,broker服务全部正常启动后,登录控制台
控制台登录地址:192.168.100.124:8080
注意一点,如果要修改console的账号配置文件,需要先创建
在console服务所在的主机/tmp/rocketmq-console/data,创建一个用户认证文件
cd /tmp/rocketmq-console/data
touch users.properties
chown rocketmq.rocketmq users.properties
这个文件此时是空文件,需要加入用户认证信息,原来在mvn打包时的认证信息已经没用了,需要重新配置。
OK,这样就完全配置完成了。
ACL配置需要根据具体使用情况进行配置。
参考:
https://blog.csdn.net/qq_34125999/article/details/99711503
https://blog.csdn.net/weixin_40533111/article/details/84451219