架构模型
https://www.cnblogs.com/kevingrace/p/9015836.html
192.168.25.135 nameserver、brokerserver master1、slave2
192.168.25.138 nameserver、brokerserver slave1、master2
主机名称分别是:rocketmq-nameserver1、rocketmq-nameserver2、rocketmq-master1、rocketmq-slave2、rocketmq-master1、rocketmq-slave2
- 下面这些端口要加入到防护墙
- nameserver 默认监听 9876 端口
- master 默认监听 10911 端口
- slave 默认监听 11011 端口
环境变量配置
vim /etc/profile.d/rocketmq.sh
ROCKETMQ_HOME=/usr/local/rocketmq/rocketmq-all-4.4.0-bin-release
PATH=$PATH:$ROCKETMQ_HOME/bin
export ROCKETMQ_HOME PATH
source /etc/profile.d/rocketmq.sh
RocketMQ 部署
安装RocketMQ
- 下载jdk1.8以上版本,下载RocketMQ 4.5版本
- 以二进制包方式安装,下载zip文件,之后解压,有bin conf lib三个目录
- 启动NameServer: sh bin/mqnamesrv
- 查看NameServer启动日志:tail -f ~/logs/rocketmqlogs/namesrv.log 默认是在登录用户家目录中的,可以修改配置文件
- 启动Broker: sh bin/mqbroker -n localhost:9876
- 查看Broker启动日志:tail -f ~/logs/rocketmqlogs/broker.log
- 修改jvm,vim /usr/local/rocketmq/bin/runserver.sh,vim /usr/local/rocketmq/bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
关闭服务
- 关闭Nameserver: sh bin/mqshutdown namesrv
- 关闭Broker: sh bin/mqshutdown broker
测试RocketMQ
- 设置临时环境变量
export NAMESRV_ADDR=localhost:9876 - 使用安装包自带的工具发送信息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer - 在打开一个shell窗口,用于接收信息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
打印窗口中出现send、receive OK的字样,就说明成功
集群部署
- 创建消息存储路径:mkdir -p /usr/local/rocketmq/store/{commitlog,consumequeue,index}
- broker 配置文件
- master 节点的配置:
vi /usr/local/rocketmq/conf/2m-2s-sync/brocker-a.properties
# 所属集群名字,当然目前只是一个集群
brokerClusterName=rocketmq-cluster
# broker 名字,注意此处不同的配置文件填写的不一样
brokcerName=rocketmq-master1
# 0 表示 Master, 大于0 表示 Slave
brokerId=0
# nameServer地址,分号隔开
namesrvAddr=rocketmq-nameserver1:9876;rokcetmq-nameserver2:9876
# 在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTocpicQueueNums=4
# 是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreatesubscriptionGroup=true
# Broker 对外服务的监听端口
listenPort=10911
# 删除文件时间点,默认凌晨 4点
deleteWhen=04
# 文件保留时间,默认 48小时
fileReservedTime=120
# commitLog 每个文件的大小,默认1G
mapedFileSizeCommitLog=1073741824
# ConsumeQueue 每个文件默认存30万条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
# 检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
# 存储路径
storePathRootDir=/usr/local/rocketmq/store
# commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/store/commitlog
# 消息队列存储路径
storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
# 消息索引存储路径
storePathIndex=/usr/local/rocketmq/store/index
# checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/store/checkpoint
# abort 文件存储路径
abortFile=/usr/local/rocketmq/store/abort
# 限制消息大小
maxMessageSize=65536
# broker的角色,这里是 Master;ASYNC_MASTER 异步复制Master;SYNC_MASTER 同步复制Master;SLAVE 从节点
brokerRole=SYNC_MASTER
# 刷盘方式,ASYNC_FLUSH 异步刷盘;SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
- slave节点的配置,只需要更改brokerName和broker的角色即可
vi /usr/local/rocketmq/conf/2m-2s-sync/brocker-b.properties
# 所属集群名字,当然目前只是一个集群
brokerClusterName=rocketmq-cluster
# broker 名字,注意此处不同的配置文件填写的不一样
brokcerName=rocketmq-slave1
# 0 表示 Master, 大于0 表示 Slave
brokerId=1
# nameServer地址,分号隔开
namesrvAddr=rocketmq-nameserver1:9876;rokcetmq-nameserver2:9876
# 在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTocpicQueueNums=4
# 是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreatesubscriptionGroup=true
# Broker 对外服务的监听端口
listenPort=11011
# 删除文件时间点,默认凌晨 4点
deleteWhen=04
# 文件保留时间,默认 48小时
fileReservedTime=120
# commitLog 每个文件的大小,默认1G
mapedFileSizeCommitLog=1073741824
# ConsumeQueue 每个文件默认存30万条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
# 检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
# 存储路径
storePathRootDir=/usr/local/rocketmq/store
# commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/store/commitlog
# 消息队列存储路径
storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
# 消息索引存储路径
storePathIndex=/usr/local/rocketmq/store/index
# checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/store/checkpoint
# abort 文件存储路径
abortFile=/usr/local/rocketmq/store/abort
# 限制消息大小
maxMessageSize=65536
# broker的角色,这里是 Master
brokerRole=SLAVE
# 刷盘方式,ASYNC_FLUSH 异步刷盘;SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
- 另一个服务器同样的配置
启动 RocketMQ
启动NameServer集群:
这里已经将/usr/local/rocketmq/bin加入到了环境变量中,因此直接用命令:
- 后台执行:nohup sh mqnamesrv &
- 前台执行:sh mqnamesrv
启动Broker集群:
- 后台执行:nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/brocker-a.properties &
- 前台执行:sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/brocker-a.properties