首页 > 其他 > 详细

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

时间:2020-06-03 09:21:16      阅读:45      评论:0      收藏:0      [点我收藏+]

 

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可以图形化管理集群。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

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

原文:https://www.cnblogs.com/lakeslove/p/13028115.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!