一、安装说明
1.下载安装包,下载地址:https://github.com/alibaba/RocketMQ/releases/download/v3.1.7/alibaba-rocketmq-3.1.7.tar.gz。
2.解压安装包到指定的目录。
3.参考资料:
ROCKETMQ管理类命令总结:http://alibaba.github.io/RocketMQ-docs/document/openuser/RocketMQ_admin.pdf
二、部署说明
(一)nameserver
1.参数配置
(1)默认启动端口:9876,无其他配置
2.启动和关闭
(1)启动nameserver:nohup mqnamesrv &
(2)在生产环境部署,请参考以下软硬件要求:https://github.com/alibaba/RocketMQ/wiki/system_requirements
(二)brokerserver
1.参数配置
(1)获取broker默认配置:sh mqbroker -m
(2)启动时如何加载配置:
a.生成broker默认配置模版:sh mqbroker -m > broker.p
b.修改配置文件broker.p
c.加载修改过的配置文件:nohup sh mqbroker -c broker.p
(3)配置文件选项说明
listenPort broker对外服务的监听端口(默认值:10911,不建议修改)
namesrvAddr NameServer地址
brokerIp1 本机IP地址,默认系统自动识别,但是某些多网卡机器会存在识别错误的情况,这种情况下可人工设置
brokerName 本机主机名
brokerClusterName Broker所属哪个集群(默认值:DefaultCluster)
brokerid BrokerId,必须是大于等于0的整数,0表示Master,>0表示Slave,一个Master可以挂多个Slave,Master与Slave通过BrokerName来配对
autoCreateTopicEnable 是否允许broker自动创建Topic,建议线下开启,线上关闭(默认值:TRUE)
autoCreateSubscriptionGroup 是否允许Broker自动创建订阅组,建议线下开启,线上关闭(默认值:TRUE)
rejectTransactionMessage 是否拒绝事务消息接入(默认值:FALSE)
fetchNamesrvAddrByAddressServer 是否从WEB服务器获取Name Server地址,针对大规模的Broker集群建议使用这种方法(默认值:FALSE)
storePathCommitLog commitLog存储路径(默认值:$HOME/store/commitlog)
storePathConsumeQueue 消费队列存储路径(默认值:$HOME/store/consumequeue)
storePahtIndex 消息索引存储路径(默认值:$HOME/store/index)
storeCheckpoint checkpoint文件存储路径(默认值:$HOME/store/checkpoint)
abortFile abort文件存储路径(默认值:$HOME/store/abort)
deleteWhen 删除文件时间点,默认凌晨4点(默认值:4)
fileReservedTime 文件保留时间,默认48小时(默认值:48)
maxTransferBytesOnMessageInMemory 单次Pull消息(内存)传输的最大字节数(默认值:262114)
maxTransferCountOnMessageInMemory 单次Pull消息(内存)传输的最大条数(默认值:32)
maxTransferBytesOnMessageInDisk 单次Pull消息(磁盘)传输的最大字节数(默认值:65536)
maxTransferCountOnMessageInDisk 单次Pull消息(磁盘)传输的最大条数(默认值:8)
messageIndexEnable 是否开启消息索引功能(默认值:TRUE)
messageIndexSafe 是否提供安全的消息索引机制,索引保证不丢(默认值:FALSE)
haMasterAddress 在Slave上直接设置Master地址,默认从Name Server上自动获取,也可以手工强制配置
brokerRole Broker的角色,ASYNC_MASTER异步复制Master、SYNC_MASTER同步双写Master、SLAVE(默认值:ASYNC_MASTER)
flushDiskType 刷盘方式,ASYNC_FLUSH异步刷盘、SYNC——FLUSH同步刷盘(默认值:ASYNC_FLUSH)
cleanFileForciblyEnable 磁盘满、且无过期文件情况下TRUE表示强制删除文件,优先保证服务可用,FALSE标记服务不可用,文件不删除(默认值:TRUE)
2.启动和关闭
(1)启动:方式1:mqbroker -n "192.168.0.1:9876;192.168.0.2:9876"(IP、Port指的是nameserver的IP和port)
方式2:启动前设置环境变量export NAMESRV_ADDR=127.0.0.1:9876,启动Broker:nohup sh mqbroker &
(2)重启:sh mqadmin wipeWritePerm -b brokerName -n namesrvAddr
Broker重启可能会导致正在发往这台机器的消息发送失败,RocketMQ提供了一种优雅关闭Broker的方法,通过执行以上命令会清除Broker的写权限,过40s后,所有客户端都会更新Broker路由信息,此时再关闭Broker就不会发生发送消息失败的情况,因为所有消息都发往了其他Broker。
(三)broker集群部署
1.单个master(单主)
启动nameserver和Broker,不需要做任何配置
2.多master模式(无Slave,全是master)
a.启动Name Server:nohup sh mqnamesrv &
b.在机器A上启动第一个Master:nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-noslave/broker-a.properties &
c.在机器B上启动第二个Master:nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-noslave/broker-b.properties &
3.多Master多Slave模式,异步复制
a.启动Name Server:nohup sh mqnamesrv &
b.在机器A上启动第一个Master:nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a.properties &
c.在机器B上启动第二个Master:nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b.properties &
d.在机器C上启动第一个Slave:nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a-s.properties &
e.在机器D上启动第二个Slave:nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b-s.properties &
4.多Master多Slave模式,同步双写
a.启动Name Server:nohup sh mqnamesrv &
b.在机器A上启动第一个Master:nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties &
c.在机器B上启动第二个Master:nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties &
d.在机器C上启动第一个Slave:nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties &
e.在机器D上启动第二个Slave:nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties &
注:以上Broker与Slave配对是通过指定相同的BrokerName参数来配对,Master的BrokerId必须是0,Slave的BrokerId必须是大于0的数。另外一个Master下面可以挂载多个Slave,同一Master下的多个Slave通过指定不同的brokerId来区分。
$ROCKETmQ_HOST指的是rocketmq安装目录,需要手动设置此环境变量。