RocketMQ系列之集群部署

 

RocketMQ集群部署

1.RocketMQ-Console-Ng部署

1)从github上克隆代码

2.namesrv部署:

$ cat /etc/supervisord.d/rocketmq-namesrv.ini
[program:rocketmq-namesrv]
command=/usr/local/rocketmq/bin/mqnamesrv
process_name=%(program_name)s
logfile_maxbytes=100MB
logfile_backups=10
environment=JAVA_HOME=/usr/local/jdk
directory= /usr/local/rocketmq
user=rocketmq
stopasgroup=true
stdout_logfile=/var/log/rocketmq/namesrv_stdout.log
stderr_logfile=/var/log/rocketmq/namesrv_stderr.log

3.broker部署(Master):

使用supervisord管理进程:

$ cat /etc/supervisord.d/rocketmq-broker.ini
[program:rocketmq-broker]
command= /usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/broker.properties -n "10.21.17.xxx:9876;10.21.17.xxx:9876"
process_name=%(program_name)s
logfile_maxbytes=100MB
logfile_backups=10
stopasgroup=true environment=JAVA_HOME=/usr/local/jdk
directory= /usr/local/rocketmq
user=rocketmq
stdout_logfile=/var/log/rocketmq/broker_stdout.log
stderr_logfile=/var/log/rocketmq/broker_stderr.log

Slave的配置和Master差不多,主要是使用独立的存储目录和修改以下项:
// 同一组broker,brokerName名称相同,建议以master的ip来命名
brokerName=broker-10.21.17.xxx
// slave的ip
brokerIP1=10.21.17.xxx
// slavce的brokerid为1
brokerId=1

然后启动所有服务,nameserver,broker和rocker-console-ng监控服务

RocketMQ集群的部署主要是namesrv,主broker和从broker的部署,namesrv是独立了,直接部署即可。主broker参考以上配置,从broker也是参考以上配置,需要注意的是:brokerName同名的表示同一组主从的broker,brokerId等于0表示主,大于0表示从,另外就是注意数据存储的目录的属主权限设置正确。

数据备份:保证了两/多台机器上的数据冗余,特别是在主从同步复制的情况下,一定程度上保证了Master出现不可恢复的故障以后,数据不丢失。

高可用性:即使Master掉线, Consumer会自动重连到对应的Slave机器,不会出现消费停滞的情况。

提高性能:主要表现为可分担Master读的压力,当从Master拉取消息,拉取消息的最大物理偏移与本地存储的最大物理偏移的差值超过一定值,会转向Slave(默认brokerId=1)进行读取,减轻了Master压力。

消费实时:master宕机后消费者可以从slave上消费保证消息的实时性,但是slave不能接收producer发送的消息,slave只能同步master数据(RocketMQ4.5版本之前),4.5版本开始增加多副本机制,根据RAFT算法,master宕机会自动选择其中一个副本节点作为master保证消息可以正常的生产消费。

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/235141.html

(0)
联系我们
联系我们
分享本页
返回顶部