RocketMQ 4.7同步複製,兩主兩從,ACL認證,console搭建

1. 配置環境

主機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

2. 開始配置

java環境準備

yum -y install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel

2.1 下載配置文件

在所有主機上都下載好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/*

2.2 broker配置文件

2.2.1 a-m

在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;

2.2.2 a-s

在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;

2.2.3 b-m

在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;

2.2.4 b-s

在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;

2.2.5 ACL規則配置

注意:配置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

2.2.6 java服務啓動參數修改

broker服務啓動參數在文件/usr/local/rocketmq/bin/runbroker.sh中,可以修改jvm相關啓動參數

2.3 namserver

nameserver不需要特殊配置

2.4 console

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

3. 配置rocketmq服務

配置rocketmq服務,設置開機啓動

3.1 a-m

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  # 開機啓動

3.2 a-s

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

3.3 b-m

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

3.4 b-s

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

3.5 nameserver

分別在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

3.6 console

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

4. 服務啓動

4.1 先啓動nameserver 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

4.2 啓動broker

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

4.3 登錄console

確認上面所有的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打包時的認證信息已經沒用了,需要重新配置。

5. 結束

OK,這樣就完全配置完成了。
ACL配置需要根據具體使用情況進行配置。

參考:
https://blog.csdn.net/qq_34125999/article/details/99711503
https://blog.csdn.net/weixin_40533111/article/details/84451219

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章