本部分介绍准生产部署方案。通常来将,我们将部署一个没有单故障节点的弹性RocketMQ集群。
准生产部署
Name Server
为了保证当一个实例崩溃后集群仍可运行,推荐2或多个nameServer实例。只要有一个nameServer实例存活,整个集群
仍保持服务。nameServer遵守无共享设计范例。
Brokers发送心跳数据到所有的 nameServer。当发送/消费消息时,生产者和消费者可以从任意可用的nameServer查询元数据
Broker
Broker根据角色可以分为两种类别:master and slave。主Broker提供读写访问,从Broker仅接收读访问。
为了部署一个没有单故障节点的高可用的RocketMQ 集群,一系列broker集合应该被部署。
broker集合内包含一个brokerId 设置为0的主Broker和多个brokerIDs非0的从Broker。
broker集合内的所有broker有相同的brokerName。
最坏的情况,应该有至少2个broker在broker集合内。每个主题在2或多个broker存在。
配置
部署RocketMQ集群时,推荐使用下面的配置列表:
参数名称 | 默认值 | 描述 |
---|---|---|
listenPort | 10911 | 客户端监听端口 |
namesrvAddr | null | 命名服务地址 |
brokerIP1 | InetAddress for network interface | 如果有多个地址需配置 |
brokerName | null | 代理服务名称 |
brokerClusterName | DefaultCluster | broke属于哪个集群 |
brokerId | 0 | brokerID,0是主,正整数是从 |
storePathCommitLog | $HOME/store/commitlog/ | 提交日志文件路径 |
storePathConsumerQueue | $HOME/store/consumequeue/ | 消费队列文件路径 |
mapedFileSizeCommitLog | 1024 1024 1024(1G) | 用于提交日志的映射文件大小 |
deleteWhen | 04 | 何时删除超过存储时间的提交日志 |
fileReserverdTime | 72 | 提交日志删除前保存的小时数 |
brokerRole | ASYNC_MASTER | brokerRole角色 同步主(SYNC_MASTER)/异步主(ASYNC_MASTER)/从(SLVAE) |
flushDiskType | ASYNC_FLUSH | 刷盘类型{SYNC_FLUSH/ASYNC_FLUSH} |
刷盘类型
SYNC_FLUSH 模式,生产者确认前,每条消息刷盘
ASYNC_FLUSH 模式,组提交优势,性能更好。
复制模式
为了确保成功发布的消息不会丢失,RocketMQ提供复制模式来获得更强的持久性和高可用,两种复制模式:Sync & Async。
复制: Sync / Async Broker
类似多数复制系统,同步Broker一直等待,直到在确认前将提交日志复制到从。
异步Broker,消息被主处理后会立即返回。
如何配置
在配置文件下RocketMQ提供了三种预设的配置:
2m-2s-sync
2m-2s-async
2m-noslave
注意:所有配置都要使用 ASYNC_FLUSH。
Deployment
以 2m-2s-sync 部署为例。首先,启动两个name servers。假设它们的 IP 是192.168.0.2 和 192.168.0.3.
//192.168.0.2
> sh bin/mqnamesrv &
//192.168.0.3
> sh bin/mqnamesrv &
然后启动broker(假设RocketMQ 在/home/rocketmq/dist )。
>cd /home/rocketmq/dist/bin
//broker-a 主
>sh mqbroker -c ../conf/2m-2s-sync/broker-a.properties -n 192.168.0.2:9876,192.168.0.3:9876
//broker-a 从
>sh mqbroker -c ../conf/2m-2s-sync/broker-a-s.properties -n 192.168.0.2:9876,192.168.0.3:9876
//broker-b 主
>sh mqbroker -c ../conf/2m-2s-sync/broker-b.properties -n 192.168.0.2:9876,192.168.0.3:9876
//broker-b 从
>sh mqbroker -c ../conf/2m-2s-sync/broker-b-s.properties -n 192.168.0.2:9876,192.168.0.3:9876
//验证是否启动
> bash mqadmin clusterlist
数据清理
停服务:
> sh mqshutdown broker
> sh mqshutdown namesrv
删除store文件,重新建文件:
//删除store文件夹下内容
> rm -rf /usr/local/rocketmq/store/
//创建commitlog,consumequeue,index
> mkdir /usr/local/rocketmq/store/commitlog
> mkdir /usr/local/rocketmq/store/consumequeue
> mkdir /usr/local/rocketmq/store/index