RocketMq集群搭建

一、基础搭建

控制台:https://github.com/apache/rocketmq-dashboard

服务器配置:(ip只做参考,没有真实意义)
服务器IP 配置 分配 分配
127.0.0.1 2C-4G-100G NameServer cluster控制台
127.0.0.2 2C-4G-100G NameServer
127.0.0.3 2C-4G-100G NameServer
127.0.0.4 4C-8G-200G broker0 集群:broker-n0,broker-n1,broker-n2
127.0.0.5 4C-8G-200G broker1 集群:broker-n0,broker-n1,broker-n2
127.0.0.6 4C-8G-200G broker2 集群:broker-n0,broker-n1,broker-n2

二、环境搭建

1、rocketMq搭建

下载rocketMq安装包,并上传服务器
方式一:手动下载
优点:服务器简洁,内存可用率高
下载包地址:
方式二:通过镜像下载,需要搭建服务器环境
下载命令:wget https://archive.apache.org/dist/rocketmq/4.8.0/rocketmq-all-4.7.0-bin-release.zip

采用方式一实践:

step1:创建文件夹并上传安装包

创建文件夹命令:mkdir /apps/rocketmq
手动上传安装包:


image.png
step2: 解压安装包并修改文件夹

解压命令:unzip rocketmq-all-4.7.0-bin-release.zip


image.png

修改文件夹名:mv rocketmq-all-4.7.0-bin-release rocketmq-4.7.0


image.png

三、部署nameServer

step1:初始化设置

1、进入bin目录:cd /apps/rocketmq-4.7.0/bin
2、修改启动参数:vim runserver.sh


image.png

JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

JAVA_OPT="${JAVA_OPT} -Duser.home=/apps/rocketmq/logs"
注:根据自己服务器的配置来调整Xms,Xmx,Xmn

step2: 创建启动脚本
step3: 复制配置文件到其他服务器
scp -r rocketmq/ 127.0.0.2:/apps/
scp -r rocketmq/ 127.0.0.3:/apps/

四、部署broker

step1:初始化设置

1、修改启动参数:vim /apps/rocketmq/rocketmq-4.7.0/bin/runbroker.sh
根据服务器的配置调整xms、xmx、xmn


image.png

2、修改broker参数
需要修改三个节点
cd /apps/rocketmq/rocketmq-4.7.0/conf/dledger


image.png

以第一台127.0.0.4服务器为例,另外两台服务器只需要改broker-RaftNode-B和broker-RaftNode-C,和对应的ip就可以
n0节点:
brokerClusterName = RaftCluster
brokerName=broker-RaftNode-A
listenPort=50801
namesrvAddr=127.0.0.1:9876;127.0.0.2:9876;127.0.0.3:9876
storePathRootDir=/apps/rocketmq/data/broker0/store
storePathCommitLog=/apps/rocketmq/data/broker0/commitlog
enableDLegerCommitLog=true
dLegerGroup=broker-RaftNode-A
dLegerPeers=n0-127.0.0.4:50911;n1-127.0.0.4:50921;n2-127.0.0.4:50931
## must be unique
dLegerSelfId=n0
sendMessageThreadPoolNums=16
#开启异步刷盘
flushDiskType=ASYNC_FLUSH
#线上关闭自动创建topic
autoCreateTopicEnable=false
#开启临时存储池-异步刷盘建议开启
TransientStorePoolEnable=true
#同步刷盘建议使用重入锁-异步建议关闭
useReentrantLockWhenPutMessage=false
#发送消息的最大线程数,默认1,同步刷盘建议适当增大,建议配置成CPU核数
sendMessageThreadPoolNums=8
#关闭堆内存数据传输-建议关闭,可以提高拉消息效率
transferMsgByHeap=false
#开启消息轨迹,建议再集群中新增加个节点,并仅再新增节点上开启消息轨迹
traceTopicEnable=true
#开启从Slave读数据功能
slaveReadEnable=true
#启用ACL访问控制(不添加ACL访问控制,可直接跳过ACL访问控制的配置)
aclEnable=false

n1节点:

brokerClusterName = RaftCluster
brokerName=broker-RaftNode-A
listenPort=50811
namesrvAddr=127.0.0.1:9876;127.0.0.2:9876;127.0.0.3:9876
storePathRootDir=/apps/rocketmq/data/broker1/store
storePathCommitLog=/apps/rocketmq/data/broker1/commitlog
enableDLegerCommitLog=true
dLegerGroup=broker-RaftNode-A
dLegerPeers=n0-127.0.0.4:50911;n1-127.0.0.4:50921;n2-127.0.0.4:50931
## must be unique
dLegerSelfId=n1
sendMessageThreadPoolNums=16
#开启异步刷盘
flushDiskType=ASYNC_FLUSH
#线上关闭自动创建topic
autoCreateTopicEnable=false
#开启临时存储池-异步刷盘建议开启
TransientStorePoolEnable=true
#同步刷盘建议使用重入锁-异步建议关闭
useReentrantLockWhenPutMessage=false
#发送消息的最大线程数,默认1,同步刷盘建议适当增大,建议配置成CPU核数
sendMessageThreadPoolNums=8
#关闭堆内存数据传输-建议关闭,可以提高拉消息效率
transferMsgByHeap=false
#开启消息轨迹,建议再集群中新增加个节点,并仅再新增节点上开启消息轨迹
traceTopicEnable=true
#开启从Slave读数据功能
slaveReadEnable=true
#启用ACL访问控制(不添加ACL访问控制,可直接跳过ACL访问控制的配置)
aclEnable=false

n2节点:

brokerClusterName = RaftCluster
brokerName=broker-RaftNode-A
listenPort=50821
namesrvAddr=127.0.0.1:9876;127.0.0.2:9876;127.0.0.3:9876
storePathRootDir=/apps/rocketmq/data/broker2/store
storePathCommitLog=/apps/rocketmq/data/broker2/commitlog
enableDLegerCommitLog=true
dLegerGroup=broker-RaftNode-A
dLegerPeers=n0-127.0.0.4:50911;n1-127.0.0.4:50921;n2-127.0.0.4:50931
## must be unique
dLegerSelfId=n2
sendMessageThreadPoolNums=16
#开启异步刷盘
flushDiskType=ASYNC_FLUSH
#线上关闭自动创建topic
autoCreateTopicEnable=false
#开启临时存储池-异步刷盘建议开启
TransientStorePoolEnable=true
#同步刷盘建议使用重入锁-异步建议关闭
useReentrantLockWhenPutMessage=false
#发送消息的最大线程数,默认1,同步刷盘建议适当增大,建议配置成CPU核数
sendMessageThreadPoolNums=8
#关闭堆内存数据传输-建议关闭,可以提高拉消息效率
transferMsgByHeap=false
#开启消息轨迹,建议再集群中新增加个节点,并仅再新增节点上开启消息轨迹
traceTopicEnable=true
#开启从Slave读数据功能
slaveReadEnable=true
#启用ACL访问控制(不添加ACL访问控制,可直接跳过ACL访问控制的配置)
aclEnable=false

注:listenPort、dLegerPeers两个参数配置的端口号不能太靠近

step2:创建启动脚本

broker启动脚本:

n0:
nohup /apps/rocketmq/rocketmq-4.7.0/bin/mqbroker -c /apps/rocketmq/rocketmq-4.7.0/conf/dledger/broker-n0.conf   > /apps/rocketmq/data/broker0/logs/broker.log 2>&1 & 
n1:
nohup /apps/rocketmq/rocketmq-4.7.0/bin/mqbroker -c /apps/rocketmq/rocketmq-4.7.0/conf/dledger/broker-n1.conf   > /apps/rocketmq/data/broker1/logs/broker.log 2>&1 & 
n2:
nohup /apps/rocketmq/rocketmq-4.7.0/bin/mqbroker -c /apps/rocketmq/rocketmq-4.7.0/conf/dledger/broker-n2.conf   > /apps/rocketmq/data/broker2/logs/broker.log 2>&1 & 
step3复制配置文件到其他服务器
scp -r rocketmq/ 127.0.0.5:/apps/
scp -r rocketmq/ 127.0.0.6:/apps/

五、部署可视化监控

step1:初始化设置
step2:创建启动脚本

六、压测mq

sh producer.sh -n xxx.xxx.xxx.xxx:9876

你可能感兴趣的:(RocketMq集群搭建)