太原网站制作小程序,郑州制作网站推荐,wordpress评论通知作者,广州公司的网页怎么做的RocketMQ单机安装及集群搭建 一#xff1a;安装环境1.软硬件要求2.下载RocketMQ 二.安装单机MQ1.上传并解压2.目录介绍3.修改MQ启动时初始JVM内存4.启动NameServer与Broker5.测试RocketMQ 三.RocketMQ集群搭建1.集群概念特点2.集群模式分类3.集群工作流程4.双主双从集群搭建4.… RocketMQ单机安装及集群搭建 一安装环境1.软硬件要求2.下载RocketMQ 二.安装单机MQ1.上传并解压2.目录介绍3.修改MQ启动时初始JVM内存4.启动NameServer与Broker5.测试RocketMQ 三.RocketMQ集群搭建1.集群概念特点2.集群模式分类3.集群工作流程4.双主双从集群搭建4.1 创建消息存储路径4.2 开放端口4.3 broker配置文件4.4 服务启动 四集群监控平台搭建 一安装环境
1.软硬件要求
Linux64位系统JDK1.8(64位)源码安装需要安装Maven 3.2.x
2.下载RocketMQ
下载rocketMQ下载
二.安装单机MQ
1.上传并解压 解压命令unzip rocketmq-all-4.5.1-bin-release.zip
2.目录介绍
benchmark一些demobin启动脚本包括shell脚本和CMD脚本conf实例配置文件 包括broker配置文件、logback配置文件等lib依赖jar包包括Netty、commons-lang、FastJSON等
3.修改MQ启动时初始JVM内存
RocketMQ默认的虚拟机内存较大启动Broker如果因为内存不足失败需要编辑如下两个配置文件修改JVM内存大小
# 编辑runbroker.sh和runserver.sh修改默认JVM大小
vi runbroker.sh
vi runserver.sh4.启动NameServer与Broker
1启动NameServer命令 nohup sh mqnamesrv 或nohup sh mqnamesrv -n localhost:9876 autoCreateTopicEnabletrue 2查看NameServer启动日志 tail -f ~/logs/rocketmqlogs/namesrv.log 3启动Broker命令 nohup sh mqbroker -n localhost:9876 或nohup sh mqbroker -n localhost:9876 autoCreateTopicEnabletrue ~/logs/rocketmqlogs/broker.log21 4查看Broker启动日志 tail -f ~/logs/rocketmqlogs/broker.log
注意由于jdk版本安装了17版本过高启动报错 将jdk17版本切为jdk1.8后重新启动即可
5关闭服务命令 sh mqshutdown namesrv sh mqshutdown broker
5.测试RocketMQ
1发送消息 #设置环境变量 export NAMESRV_ADDRlocalhost:9876 #使用安装包的Demo发送消息 sh tools.sh org.apache.rocketmq.example.quickstart.Producer 2接收消息
#设置环境变量 export NAMESRV_ADDRlocalhost:9876 #接收消息 sh tools.sh org.apache.rocketmq.example.quickstart.Consumer
三.RocketMQ集群搭建 1.集群概念特点
NameServer是一个几乎无状态节点可集群部署节点之间无任何信息同步。Broker分为Master与Slave一个Master可以对应多个Slave但是一个Slave只能对应一个MasterMaster与Slave的对应关系通过指定相同的BrokerName不同的BrokerId来定义BrokerId为0表示Master非0表示Slave。Master也可以部署多个。每个Broker与NameServer集群中的所有节点建立长连接定时注册Topic信息到所有NameServer。Producer与NameServer集群中的其中一个节点随机选择建立长连接定期从NameServer取Topic路由信息并向提供Topic服务的Master建立长连接且定时向Master发送心跳。Producer完全无状态可集群部署即启动多个producer。Consumer与NameServer集群中的其中一个节点随机选择建立长连接定期从NameServer取Topic路由信息并向提供Topic服务的Master、Slave建立长连接且定时向Master、Slave发送心跳。Consumer既可以从Master订阅消息也可以从Slave订阅消息订阅规则由Broker配置决定。
2.集群模式分类
根据Broker集群中各个节点间关系的不同分类 1单Master模式本质上就不能称为集群 这种方式风险较大一旦Broker重启或者宕机时会导致整个服务不可用。
2多Master模式 broker集群仅由多个master构成不存在Slave。同一Topic的各个Queue会平均分布在各个master节点上。这种模式的优缺点如下 优点配置简单单个Master宕机或重启维护对应用无影响在磁盘配置为RAID10一种存储技术时即使机器宕机不可恢复情况下由于RAID10磁盘非常可靠消息也不会丢异步刷盘丢失少量消息同步刷盘一条不丢性能最高 缺点单台机器宕机期间这台机器上未被消费的消息在机器恢复之前不可订阅消息实时性会受到影响。 以上优点的前提是这些Master都配置了RAID磁盘阵列。如果没有配置一旦出现某Master宕机则会发生大量消息丢失的情况。 3多Master多Slave模式异步 broker集群由多个master构成每个master又配置了多个slave在配置了RAID磁盘阵列的情况下一个master一般配置一个slave即可。master与slave的关系是主备关系即master负责处理消息的读写请求而slave仅负责消息的备份与master宕机后的角色切换。
异步复制即消息写入master成功后master立即向producer返回成功ACK无需等待向slave同步数据成功。
该模式的最大特点之一是当master宕机后slave能够自动切换为master。不过由于slave从master的同步具有短暂的延迟毫秒级所以当master宕机后这种异步复制方式可能会存在少量消息的丢失问题。
4多Master多Slave模式同步 该模式是多Master多Slave模式的同步复制实现。所谓同步双写指的是消息写入master成功后master会等待slave同步数据成功后才向producer返回成功ACK即master与slave都要写入成功后才会返回成功ACK也即双写。
该模式与异步复制模式相比优点是消息的安全性更高不存在消息丢失的情况。但单个消息的RT略高从而导致性能要略低大约低10%。
该模式存在一个大的问题对于目前的版本Master宕机后Slave不会自动切换到Master。
最佳方案 一般会为Master配置RAID10磁盘阵列然后再为其配置一个Slave。即利用了RAID10磁盘阵列的高效、安全性又解决了可能会影响订阅的问题。 1RAID磁盘阵列的效率要高于Master-Slave集群。因为RAID是硬件支持的。也正因为如此所以RAID阵列的搭建成本较高。 2多MasterRAID阵列与多Master多Slave集群的区别是什么 2-1多MasterRAID阵列其仅仅可以保证数据不丢失即不影响消息写入但其可能会影响到消息的订阅。但其执行效率要远高于多Master多Slave集群 2-2多Master多Slave集群其不仅可以保证数据不丢失也不会影响消息写入。其运行效率要低于多MasterRAID阵列 3.集群工作流程
启动NameServerNameServer起来后监听端口等待Broker、Producer、Consumer连上来相当于一个路由控制中心。Broker启动跟所有的NameServer保持长连接定时发送心跳包。心跳包中包含当前Broker信息(IP端口等)以及存储所有Topic信息。注册成功后NameServer集群中就有Topic跟Broker的映射关系。收发消息前先创建Topic创建Topic时需要指定该Topic要存储在哪些Broker上也可以在发送消息时自动创建Topic。Producer发送消息启动时先跟NameServer集群中的其中一台建立长连接并从NameServer中获取当前发送的Topic存在哪些Broker上轮询从队列列表中选择一个队列然后与队列所在的Broker建立长连接从而向Broker发消息。Consumer跟Producer类似跟其中一台NameServer建立长连接获取当前订阅Topic存在哪些Broker上然后直接跟Broker建立连接通道开始消费消息。
4.双主双从集群搭建
消息高可用采用2m-2s同步双写方式 这里仅做单主单从部署双主双从另搭一台服务器即可
主机ip 角色 架构模式
192.168.31.116 nameserver、brokerserver Master1、Slave2
192.168.31.117 nameserver、brokerserver Master2、Slave14.1 创建消息存储路径
mkdir /usr/local/rocketmq/store-a mkdir /usr/local/rocketmq/store-a/commitlog mkdir /usr/local/rocketmq/store-a/consumequeue mkdir /usr/local/rocketmq/store-a/index
mkdir /usr/local/rocketmq/store-a-s mkdir /usr/local/rocketmq/store-a-s/commitlog mkdir /usr/local/rocketmq/store-a-s/consumequeue mkdir /usr/local/rocketmq/store-a-s/index
mkdir /usr/local/rocketmq/store-b mkdir /usr/local/rocketmq/store-b/commitlog mkdir /usr/local/rocketmq/store-b/consumequeue mkdir /usr/local/rocketmq/store-b/index
mkdir /usr/local/rocketmq/store-b-s mkdir /usr/local/rocketmq/store-b-s/commitlog mkdir /usr/local/rocketmq/store-b-s/consumequeue mkdir /usr/local/rocketmq/store-b-s/index
4.2 开放端口
简单粗暴的方式是直接关闭防火墙
# 关闭防火墙
systemctl stop firewalld.service
# 查看防火墙的状态
firewall-cmd --state
# 禁止firewall开机启动
systemctl disable firewalld.service为了安全只开放特定的端口号RocketMQ默认使用3个端口9876 、10911 、11011 。如果防火墙没有关闭的话那么防火墙就必须开放这些端口
nameserver 默认使用 9876 端口master 默认使用 10911 端口slave 默认使用11011 端口
执行以下命令
# 开放name server默认端口
firewall-cmd --remove-port9876/tcp --permanent
# 开放master默认端口
firewall-cmd --remove-port10911/tcp --permanent
# 开放slave默认端口 (当前集群模式可不开启)
firewall-cmd --remove-port11011/tcp --permanent
# 重启防火墙
firewall-cmd --reload4.3 broker配置文件
1master1
服务器192.168.31.116 修改配置vim /usr/local/rocketmq/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-a.properties
#所属集群名字
brokerClusterNamerocketmq-cluster
#broker名字注意此处不同的配置文件填写的不一样
brokerNamebroker-a
#0 表示 Master0 表示 Slave
brokerId0
#nameServer地址分号分割
namesrvAddr192.168.31.116:9876;192.168.31.117:9876
#在发送消息时自动创建服务器不存在的topic默认创建的队列数
defaultTopicQueueNums4
#是否允许 Broker 自动创建Topic建议线下开启线上关闭
autoCreateTopicEnabletrue
#是否允许 Broker 自动创建订阅组建议线下开启线上关闭
autoCreateSubscriptionGrouptrue
#Broker 对外服务的监听端口
listenPort10911
#删除文件时间点默认凌晨 4点
deleteWhen04
#文件保留时间默认 48 小时
fileReservedTime120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog1073741824
#ConsumeQueue每个文件默认存30W条根据业务情况调整
mapedFileSizeConsumeQueue300000
#destroyMapedFileIntervalForcibly120000
#redeleteHangedFileInterval120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio88
#存储路径
storePathRootDir/usr/local/rocketmq/store-a
#commitLog 存储路径
storePathCommitLog/usr/local/rocketmq/store-a/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue/usr/local/rocketmq/store-a/consumequeue
#消息索引存储路径
storePathIndex/usr/local/rocketmq/store-a/index
#checkpoint 文件存储路径
storeCheckpoint/usr/local/rocketmq/store-a/checkpoint
#abort 文件存储路径
abortFile/usr/local/rocketmq/store-a/abort
#限制的消息大小
maxMessageSize65536
#flushCommitLogLeastPages4
#flushConsumeQueueLeastPages2
#flushCommitLogThoroughInterval10000
#flushConsumeQueueThoroughInterval60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRoleSYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskTypeSYNC_FLUSH
#checkTransactionMessageEnablefalse
#发消息线程池数量
#sendMessageThreadPoolNums128
#拉消息线程池数量
#pullMessageThreadPoolNums1282slave2 服务器192.168.31.116 修改配置vim /usr/local/rocketmq/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-b-s.properties
#所属集群名字
brokerClusterNamerocketmq-cluster
#broker名字注意此处不同的配置文件填写的不一样
brokerNamebroker-b
#0 表示 Master0 表示 Slave
brokerId1
#nameServer地址分号分割
namesrvAddr192.168.31.116:9876;192.168.31.116:9876
#在发送消息时自动创建服务器不存在的topic默认创建的队列数
defaultTopicQueueNums4
#是否允许 Broker 自动创建Topic建议线下开启线上关闭
autoCreateTopicEnabletrue
#是否允许 Broker 自动创建订阅组建议线下开启线上关闭
autoCreateSubscriptionGrouptrue
#Broker 对外服务的监听端口
listenPort11011
#删除文件时间点默认凌晨 4点
deleteWhen04
#文件保留时间默认 48 小时
fileReservedTime120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog1073741824
#ConsumeQueue每个文件默认存30W条根据业务情况调整
mapedFileSizeConsumeQueue300000
#destroyMapedFileIntervalForcibly120000
#redeleteHangedFileInterval120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio88
#存储路径
storePathRootDir/usr/local/rocketmq/store-b-s
#commitLog 存储路径
storePathCommitLog/usr/local/rocketmq/store-b-s/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue/usr/local/rocketmq/store-b-s/consumequeue
#消息索引存储路径
storePathIndex/usr/local/rocketmq/store-b-s/index
#checkpoint 文件存储路径
storeCheckpoint/usr/local/rocketmq/store-b-s/checkpoint
#abort 文件存储路径
abortFile/usr/local/rocketmq/store-b-s/abort
#限制的消息大小
maxMessageSize65536
#flushCommitLogLeastPages4
#flushConsumeQueueLeastPages2
#flushCommitLogThoroughInterval10000
#flushConsumeQueueThoroughInterval60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRoleSLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskTypeASYNC_FLUSH
#checkTransactionMessageEnablefalse
#发消息线程池数量
#sendMessageThreadPoolNums128
#拉消息线程池数量
#pullMessageThreadPoolNums1283master2 服务器192.168.31.117 修改配置vim /usr/local/rocketmq/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-b.properties
#所属集群名字
brokerClusterNamerocketmq-cluster
#broker名字注意此处不同的配置文件填写的不一样
brokerNamebroker-b
#0 表示 Master0 表示 Slave
brokerId0
#nameServer地址分号分割
namesrvAddr192.168.31.116:9876;192.168.31.117:9876
#在发送消息时自动创建服务器不存在的topic默认创建的队列数
defaultTopicQueueNums4
#是否允许 Broker 自动创建Topic建议线下开启线上关闭
autoCreateTopicEnabletrue
#是否允许 Broker 自动创建订阅组建议线下开启线上关闭
autoCreateSubscriptionGrouptrue
#Broker 对外服务的监听端口
listenPort10911
#删除文件时间点默认凌晨 4点
deleteWhen04
#文件保留时间默认 48 小时
fileReservedTime120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog1073741824
#ConsumeQueue每个文件默认存30W条根据业务情况调整
mapedFileSizeConsumeQueue300000
#destroyMapedFileIntervalForcibly120000
#redeleteHangedFileInterval120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio88
#存储路径
storePathRootDir/usr/local/rocketmq/store-b
#commitLog 存储路径
storePathCommitLog/usr/local/rocketmq/store-b/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue/usr/local/rocketmq/store-b/consumequeue
#消息索引存储路径
storePathIndex/usr/local/rocketmq/store-b/index
#checkpoint 文件存储路径
storeCheckpoint/usr/local/rocketmq/store-b/checkpoint
#abort 文件存储路径
abortFile/usr/local/rocketmq/store-b/abort
#限制的消息大小
maxMessageSize65536
#flushCommitLogLeastPages4
#flushConsumeQueueLeastPages2
#flushCommitLogThoroughInterval10000
#flushConsumeQueueThoroughInterval60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRoleSYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskTypeSYNC_FLUSH
#checkTransactionMessageEnablefalse
#发消息线程池数量
#sendMessageThreadPoolNums128
#拉消息线程池数量
#pullMessageThreadPoolNums1284slave1 服务器192.168.31.117 修改配置vim /usr/local/rocketmq/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-a-s.properties
#所属集群名字
brokerClusterNamerocketmq-cluster
#broker名字注意此处不同的配置文件填写的不一样
brokerNamebroker-a
#0 表示 Master0 表示 Slave
brokerId1
#nameServer地址分号分割
namesrvAddr192.168.31.116:9876;192.168.31.117:9876
#在发送消息时自动创建服务器不存在的topic默认创建的队列数
defaultTopicQueueNums4
#是否允许 Broker 自动创建Topic建议线下开启线上关闭
autoCreateTopicEnabletrue
#是否允许 Broker 自动创建订阅组建议线下开启线上关闭
autoCreateSubscriptionGrouptrue
#Broker 对外服务的监听端口
listenPort11011
#删除文件时间点默认凌晨 4点
deleteWhen04
#文件保留时间默认 48 小时
fileReservedTime120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog1073741824
#ConsumeQueue每个文件默认存30W条根据业务情况调整
mapedFileSizeConsumeQueue300000
#destroyMapedFileIntervalForcibly120000
#redeleteHangedFileInterval120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio88
#存储路径
storePathRootDir/usr/local/rocketmq/store-a-s
#commitLog 存储路径
storePathCommitLog/usr/local/rocketmq/store-a-s/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue/usr/local/rocketmq/store-a-s/consumequeue
#消息索引存储路径
storePathIndex/usr/local/rocketmq/store-a-s/index
#checkpoint 文件存储路径
storeCheckpoint/usr/local/rocketmq/store-a-s/checkpoint
#abort 文件存储路径
abortFile/usr/local/rocketmq/store-a-s/abort
#限制的消息大小
maxMessageSize65536
#flushCommitLogLeastPages4
#flushConsumeQueueLeastPages2
#flushCommitLogThoroughInterval10000
#flushConsumeQueueThoroughInterval60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRoleSLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskTypeASYNC_FLUSH
#checkTransactionMessageEnablefalse
#发消息线程池数量
#sendMessageThreadPoolNums128
#拉消息线程池数量
#pullMessageThreadPoolNums1284.4 服务启动
1启动NameServe集群 分别在192.168.31.116和192.168.31.117启动NameServer
nohup sh mqnamesrv 2启动Broker集群 在192.168.31.116上启动master1和slave2 master1
nohup sh mqbroker -c /usr/local/rocketmq/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-a.properties slave2
nohup sh mqbroker -c /usr/local/rocketmq/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-b-s.properties 在192.168.31.117上启动master2和slave1 master2
nohup sh mqbroker -c /usr/local/rocketmq/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-b.properties slave1
nohup sh mqbroker -c /usr/local/rocketmq/rocketmq-all-4.5.1-bin-release/conf/2m-2s-sync/broker-a-s.properties 启动后通过JPS查看启动进程 4)查看日志 # 查看nameServer日志
tail -500f ~/logs/rocketmqlogs/namesrv.log
# 查看broker日志
tail -500f ~/logs/rocketmqlogs/broker.log四集群监控平台搭建
--下载项目到本地
git clone https://github.com/apache/rocketmq-dashboard该项目是一个springboot项目修改配置文件中的端口号和mq注册中心地址 启动项目后访问 http://localhost:8888/