2 生产环境下的配置和使用

 

rocketMQ的各部分角色Producer 、Consumer 、Broker 和NameServer

现实生活中的邮政系统要正常运行,离不开下面这四个角色, 
一是发信者, 二是收信者, 三是负责暂存、传输的邮局, 四是负责协调各个地方邮局的管理机构
对应到 RocketMQ 中,这四个角色就是
Producer 、Consumer 、Broker 和NameServer

 

启动RocketMQ 的顺序是先启动NameServer ,再启动Broker ,这时候消息队列已经可以提供服务了,
想发送消息就使用Producer 来发送,想接收消息就使用Consumer 来接收

 

为了消除单点故障,增加可靠性或增大吞吐量,可以在多台机器上部署多
个NameServer 和Broker ,为每个Broker 部署一个或多个Slave

 

 

多机集群配置和部署

 

//假设这两台物理机的IP 分别是192.168.100.131 和192.168 . 100.132

我的本机是:192.168.1.3 

虚拟机是:172.16.151.240

首先在这两台机器上分别启动NameServer ( nohup sh bin/mqnamesrv &),
这样我们就得到了一个无单点的NameServer 服务, 服务地址是“ 192 . 168.100 .
131:9876· 192.168.100.132:9876 ” 。
然后启动Broker ,每台机器上都要分别启动一个Master 角色的Broker 和
一个Slave 角色的Broker ,并互为主备。可以基于RocketMQ 自带的示例配置
文件写自己的配置文件(示例配置文件在conf/2m -2s-sync 目录下)。

这里注意点是:

我用的centos虚拟机,默认开启了防火墙,关闭防火墙:

[lakeslove@centos8-ui ~]$ firewall-cmd --state 
running
[lakeslove@centos8-ui ~]$ systemctl stop firewalld.service
[lakeslove@centos8-ui ~]$ firewall-cmd --state 
not running

测试联通性:

[lakeslove@centos8-ui ~]$ telnet 192.168.1.3 9876
Trying 192.168.1.3...
Connected to 192.168.1.3.
Escape character is '^]'.
bogon:netty lakeslove$ telnet 172.16.151.240 9876
Trying 172.16.151.240...
Connected to bogon.
Escape character is '^]'.

这里遇到的坑主要以下几个,

1、虚拟机的内存分配太小,导致rocketmq无法启动。

2、虚拟机没有用网络桥接模式。

3、这本书里的讲解时把namesrvAddr=192.168.1.3:9876;192.168.1.10:9876的两个网址间添加了空格,导致无法访问第二个网址。

4、虚拟机中的broker-b-s 无法获取主机中broker-b的正确ip,需要在broker-b的配置文件下添加 brokerIP1=192.168.1.3

 

集群配置完了这个样子

 

 

关于broker配置参数介绍

namesrvAddr=192.168.1.3:9876;192.168.1.10:9876
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
listenPort=10911
storePathRootDir=/home/lakeslove/software/rocketmq/store-b
l)namesrvAddr=192.168.100.131:9876; 192.168.100.132:9876
NamerServer 的地址,可以是多个。
2) brokerCl usterName=Defaul tCl uster
Cluster 的地址,如果集群机器数比较多,可以分成多个Cluster ,每个
Cluster 供一个业务群使用。
3) brokerName=broker- a
Broker 的名称, Master 和Slave 通过使用相同的Broker 名称来表明相互关
系,以说明某个Slave 是哪个Master 的Slave 。
4) brokerid=O
一个Master Barker 可以有多个Slave, 0 表示Master ,大于0 表示不同
Slave 的ID 。
5) fileReservedTime=48

  在磁盘上保存消息的时长,单位是小时,自动删除超时的消息

6) deleteWhen=04

与fileReservedTim巳参数呼应,表明在几点做消息删除动作,默认值04 表示凌晨4 点

7) brokerRole=SYNC MASTER

broker Role 有3 种: SYNC MASTER 、ASYNC MASTER 、SLAVE

关键词SYNC 和ASYNC 表示Master 和Slave 之间同步消息的机制,

SYNC 的意思是当Slave 和Master 消息同步完成后,再返回发送成功的状态

8) flushDiskType=ASYNC FLUSH

flushDiskType 表示刷盘策略,分为SYNC_FLUSH 和ASYNC_FLUSH 两种,分别代表同步刷盘和异步刷盘

同步刷盘情况下,消息真正写人磁盘后再返回成功状态;异步刷盘情况下,消息写人page_cache 后就返回成功状态

9 ) listenPor t=l0 911

Broker 监听的端口号,如果一台机器上启动了多个Broker , 则要设置不同的端口号,避免冲

10 ) storePathRootDir= /home/rocketmq/store - a

存储消息以及一些配置信息的根目录

这些配置参数,在Broker 启动的时候生效,如果启动后有更改,要重启Broker

现在使用云服务或多阿卡的机器比较普遍, Broker 自动探测获得的ip地址可能不符合要求,

通过brokerIPl =47 .98.41.234 这样的配置参数,可以设置Broker 机器对外暴露的ip 地址

 

有几个地方没看明白,主要是

1、订阅组

2、从slave节点读取时,如何不重复?

3、topic和组和(生产者与消费者的)名字和broker的关系

 

 

管理集群可以用命令行也可以用界面。

MQAdmin 是RocketMQ 自带的命令行管理工具,在bin 目录下,运行mqadmin 即可执

可以修改topic,修改订阅组,热更新broker配置,查询topic信息,查询集群信息。

rocketmq-console可以图形化管理集群。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

posted @ 2020-06-03 02:34  lakeslove  阅读(273)  评论(0编辑  收藏  举报