部署方式
Deployment
这一部分介绍生产环境部署方案。即我们要部署一个没有单点故障的集群。
Name Server
为了确保在一个实例崩溃时集群仍然可以运行,建议使用两个或多个Name Server实例,只要集群中有一个实例是可用的,整个集群就可以提供服务。
Name Server遵从share-nothing设计方式。Brokers会将心跳数据发送到所有Name Server。当要sending/consuming时,生产者和消费者可以从任意一台可用的Name server查询到信息。
Broker
Brokers可以按照类别分成两类:master 和slave。master同时提供读写服务,slave只提供读服务。
要部署一个没有单点故障的高可用集群,需要部署多个Broker。一个broker集群需要有一个brokerId为0的master和多个brokerId不为0的slave。这个broker集群的主从需要配置相同的brokerName。极端情况下,我们需要保证一个broker集群中至少部署两个broker服务,每个topic都存在于两个或多个broker中。
Configuration
当部署一个RocketMQ集群时,我们推荐以下配置:
Broker的推荐配置:
属性
默认值
属性解释
listenPort
10911
客户端的连接端口
namesrvAddr
null
name server的地址
brokerIP1
InetAddress for network interface
如果有多个地址,就需要配置多个
brokerName
null
该broker的名字
brokerClusterName
DefaultCluster
该broker所属集群的名字
brokerId
0
broker的 id,0为mater,其他正整数为slave
storePathCommitLog
$HOME/store/commitlog/
commit log的文件路径
storePathConsumerQueue
$HOME/store/consumequeue/
consume queue的文件路径
mapedFileSizeCommitLog
1024 * 1024 * 1024(1G)
mapped file size for commit log
deleteWhen
04
超出预定时间后多久删除提交日志
fileReserverdTime
72
提交日志的保留时间,单位小时
brokerRole
ASYNC_MASTER
SYNC_MASTER/ASYNC_MASTER/SLVAE
flushDiskType
ASYNC_FLUSH
有两种模式可选:SYNC_FLUSH和ASYNC_PLUSHBroker;同步模式会在每次消息确认前落盘;异步模式会充分利用分组提交的优势,从而性能更高;
命令行管理工具(CLI Admin Tool)
RocketMQ提供了一个管理工具,用于查询管理诊断各种问题。该工具是和RocketMQ绑定在一起的,无论你是下载的是编译好的版本还是自己编译的,你的环境中都已经有了(如果你需要源码,那你可以在rocketmq-tools的模块中找到)。
使用管理工具非常简单。为了演示,我们假设你已经在*nix环境中切换到${PACKAGE}/bin目录,输入 bash mqadmin,你就能看到如下的帮助菜单。
有关特定命令的信息(如clusterList),你只需要输入bash mqadmin help clusterList:
复制模式
为了确保不会丢失发布成功的消息,RocketMQ提供同步和异步两种复制方式来增强消息的可靠性与高可用性:同步复制模式下,master broker会等待提交日志复制到slave broker之后再去确认消息;异步复制模式会在mater broker 处理成功后马上进行消息确认。
如何配置:在conf文件夹下,RocketMQ提供了三种默认配置作为参考
注意:所有配置都使用ASYNC_FLUSH
部署:以2m-2s-sync为例进行部署。
首先启动两个name server,假设他们的ip分别为192.168.0.2 和 192.168.0.3。
然后启动brokers,假设编译好的RocketMQ在 /home/rocketmq/dist目录下,则执行以下命令:
如何验证部署成功:使用客户端管理
Last updated