一、基础搭建
控制台: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
手动上传安装包:
step2: 解压安装包并修改文件夹
解压命令:unzip rocketmq-all-4.7.0-bin-release.zip
修改文件夹名:mv rocketmq-all-4.7.0-bin-release rocketmq-4.7.0
三、部署nameServer
step1:初始化设置
1、进入bin目录:cd /apps/rocketmq-4.7.0/bin
2、修改启动参数:vim runserver.sh
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
2、修改broker参数
需要修改三个节点
cd /apps/rocketmq/rocketmq-4.7.0/conf/dledger
以第一台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