你自己部署过 RocketMQ 吗?简单说一下你当时部署的过程

参考答案

由于我们项目中主要使用 RocketMQ 做链路跟踪功能,因此需要比较高的性能,并且偶尔丢失几条消息也关系不大,所以我们就选择多 Master 多 Slave 模式,异步复制方式进行部署。

部署过程简单说一下:

我部署的是双master和双slave模式集群,并部署了两个nameserver节点。

1    服务器分配

分配是A和B两台服务器,其中,

  • A 服务器部署 nameserv1,master1,slave2
  • B 服务器部署 nameserv2,master2和slave1 节点

2    broker的配置

分别配置 RocketMQ 安装目录下四个配置文件:

master1:/conf/2m-2s-async/broker-a.properties
slave2:/conf/2m-2s-async/broker-b-s.properties
master2:/conf/2m-2s-async/broker-b.properties
slave1:/conf/2m-2s-async/broker-a-s.properties

整理思路:

  • master 节点的 brokerId 为0,slave 节点的 brokerId 为1(大于0即可);
  • 同一组 broker 的 broker-Name 相同,如 master1 和 slave1 都为 broker-a ;
  • 每个 broker 节点配置相同的 NameServer ;
  • 复制方式配置:master 节点配置为 ASYNC-MASTER , slave 节点配置为 SLAVE 即可;
  • 刷盘方式分为同步刷盘和异步刷盘,为了保证性能而不去考虑少量消息的丢失,因此统一配置为异步刷盘。

3)启动集群

检查修改参数

启动前,分别检查修改 runbroker.sh 和 runserver.sh 两个文件中的 JVM 参数,默认的 JAVA_OPT 参数的值比较大,若直接启动可能会失败,需要根据实际情况重新配置。

分别启动两个namerser节点

nohup sh bin/mqnamesrv > /dev/null 2>&1 &

查看日志

tail -f ~/logs/rocketmqlogs/namesrv.log

分别启动 4 个 broker 节点

maste1
nohup sh bin/mqbroker -c
/usr/local/rocketmq/conf/2m-2s-async/broker-a.properties &
slave1
nohup sh bin/mqbroker -c
/usr/local/rocketmq/conf/2m-2s-async/broker-a-s.properties &
maste2
nohup sh bin/mqbroker -c
/usr/local/rocketmq/conf/2m-2s-async/broker-b.properties &
slave2
nohup sh bin/mqbroker -c
/usr/local/rocketmq/conf/2m-2s-async/broker-b-s.properties &

查看日志:

tail -f ~/logs/rocketmqlogs/broker.log

 

总结:

集群环境部署,主要就是以上三个步骤,需要注意的是过程中broker配置文件的配置正确性,还需要注意一下启动前对jvm参数的检查。

 

以上,是消息队列 RocketMQ 面试题【 RocketMQ 的部署具体思路】的参考答案。

输出,是最好的学习方法

欢迎在评论区留下你的问题、笔记或知识点补充~

—end—

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧