RocketMQ集群搭建

下面是双主双从异步复制集群搭建

主机分配

两台主机192.168.86.126和192.168.86.127

nameServer1 注册中心 192.168.86.126:9876
nameServer2 注册中心 192.168.86.127:9876
broker-a broker-a-master 192.168.86.126:10911 broker-a.properties
broker-b-s broker-b-slave 192.168.86.126:11011 broker-b-s.properties
broker-b broker-b-master 192.168.86.127:10911 broker-b.properties
broker-a-s broker-a-slave 192.168.86.127:11011 broker-a-s.properties

下载Rocketmq

下载rocketmq-all-4.5.2-bin-release.zip,并解压到/usr/local 重命名为rocketmq

https://rocketmq.apache.org/release_notes/release-notes-4.5.2/

rocketmq是java编写,所以要配置jdk,要配置1.8的jdk

创建目录

在两台主机上创建目录

mkdir /usr/local/rocketmq/store
mkdir /usr/local/rocketmq/store/commitlog
mkdir /usr/local/rocketmq/store/consumequeue
mkdir /usr/local/rocketmq/store/index
mkdir /usr/local/rocketmq/logs

mkdir /usr/local/rocketmq/store2
mkdir /usr/local/rocketmq/store2/commitlog
mkdir /usr/local/rocketmq/store2/consumequeue
mkdir /usr/local/rocketmq/store2/index

修改配置文件

cd  conf
cp  -r  2m-2s-async   myconf

主机192.168.86.126

broker-a.properties


brokerClusterName=DefaultCluster
brokerName=broker-a
#集群中 0 表示 Master,>0 表示 Slave
brokerId=0
brokerRole=ASYNC_MASTER
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH

#指定broker的IP
brokerIP1=192.168.86.126
#nameServer地址,集群用分号分割
namesrvAddr=192.168.86.126:9876;192.168.86.127:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq/store

#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000

#checkTransactionMessageEnable=false
#发消息线程池数量
sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessaeThreadPoolNums=128

#发送消息是否使用可重入锁
useReentrantLockWhenPutMessage=true
#300或者更大
waitTimeMillsInSendQueue=300 ?

broker-b-s.properties


brokerClusterName=DefaultCluster
brokerName=broker-b
#集群中 0 表示 Master,>0 表示 Slave
brokerId=1
brokerRole=SLAVE
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH

#指定broker的IP
brokerIP1=192.168.86.126
#nameServer地址,集群用分号分割
namesrvAddr=192.168.86.126:9876;192.168.86.127:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=11011
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq/store2
#commitLog 存储路径

storePathCommitLog=/usr/local/rocketmq/store2/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/store2/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/store2/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/store2/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/store2/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000

#checkTransactionMessageEnable=false
#发消息线程池数量
sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessaeThreadPoolNums=128

#发送消息是否使用可重入锁
useReentrantLockWhenPutMessage=true
#300或者更大
waitTimeMillsInSendQueue=300 ?

主机192.168.86.127

broker-b.properties


brokerClusterName=DefaultCluster
brokerName=broker-b
#集群中 0 表示 Master,>0 表示 Slave
brokerId=0
brokerRole=ASYNC_MASTER
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH

#指定broker的IP
brokerIP1=192.168.86.127
#nameServer地址,集群用分号分割
namesrvAddr=192.168.86.126:9876;192.168.86.127:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq/store
#commitLog 存储路径

storePathRootDir=/usr/local/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000

#checkTransactionMessageEnable=false
#发消息线程池数量
sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessaeThreadPoolNums=128

#发送消息是否使用可重入锁
useReentrantLockWhenPutMessage=true
#300或者更大
waitTimeMillsInSendQueue=300 ?

broker-a-s.properties


brokerClusterName=DefaultCluster
brokerName=broker-a
#集群中 0 表示 Master,>0 表示 Slave
brokerId=1
brokerRole=SLAVE
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH

#指定broker的IP
brokerIP1=192.168.86.127
#nameServer地址,集群用分号分割
namesrvAddr=192.168.86.126:9876;192.168.86.127:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=11011
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq/store2
#commitLog 存储路径

storePathCommitLog=/usr/local/rocketmq/store2/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/store2/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/store2/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/store2/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/store2/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000

#checkTransactionMessageEnable=false
#发消息线程池数量
sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessaeThreadPoolNums=128

#发送消息是否使用可重入锁
useReentrantLockWhenPutMessage=true
#300或者更大
waitTimeMillsInSendQueue=300 ?

注意: 上面配置文件中 【#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭autoCreateTopicEnable=false
是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭autoCreateSubscriptionGroup=false】 将topic和订阅组全部关闭自动创建了。 所以在使用Java-API调用之前,一定要手动创建Topic和消费者订阅组,不然消费者端无法获取到消息。

创建主题:myTopic

sh ./bin/mqadmin updateTopic -t myTopic -c DefaultCluster -n "192.168.86.126:9876;192.168.86.127:9876"

创建订阅组: customerGroup

sh bin/mqadmin updateSubGroup -c DefaultCluster -g customerGroup -n "192.168.86.126:9876;192.168.86.127:9876"

修改rocketmq启动内存

vim /usr/local/rocketmq/bin/runbroker.sh
vim /usr/local/rocketmq/bin/runserver.sh
vim /usr/local/rocketmq/bin/tools.sh

修改其中的JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g

改成JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m

根据需要视情况而定

防火墙开端口

-A INPUT -m state --state NEW -m tcp -p tcp --dport 9876 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10911 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 11011 -j ACCEPT

启动注册中心nameSrv

两台机器都启动nameSrv

nohup sh bin/mqnamesrv > ./logs/namesrv.log 2>&1 &

启动Broker

在主机192.168.86.126上执行

nohup sh bin/mqbroker -c conf/myconf/broker-a.properties -n "192.168.86.126:9876;192.168.86.127:9876" > ./logs/broker-a.log 2>&1 &

nohup sh bin/mqbroker -c conf/myconf/broker-b-s.properties -n "192.168.86.126:9876;192.168.86.127:9876" > ./logs/broker-b-s.log 2>&1 &

在主机192.168.86.127上执行

nohup sh bin/mqbroker -c conf/myconf/broker-b.properties -n "192.168.86.126:9876;192.168.86.127:9876" > ./logs/broker-a.log 2>&1 &

nohup sh bin/mqbroker -c conf/myconf/broker-a-s.properties -n "192.168.86.126:9876;192.168.86.127:9876" > ./logs/broker-a-s.log 2>&1 &

查看启动情况

jps

显示如下,说明启动成功

6966 NamesrvStartup
7881 Jps
7066 BrokerStartup
7147 BrokerStartup

原文地址:https://www.cnblogs.com/yhongyin/p/12038773.html

时间: 2024-08-30 10:14:01

RocketMQ集群搭建的相关文章

RocketMQ集群搭建及安装rocketmq-console

RocketMQ集群搭建-4.2.0版本https://juejin.im/post/5a911ea16fb9a0633f0e36a1 直接在官网下载的二进制包,编译容易出现问题 启动broker,报错:rocketmq Cannot allocate memory 可根据机器内存大小,配置jvm参数 http://www.cnblogs.com/quchunhui/p/8350904.html 安装rocketmq-console - 大墨垂杨 - 博客园https://www.cnblogs

RocketMQ 集群搭建--双Master方案

安装环境 jdk1.7 alibaba-rocketmq-3.2.6.tar.gz VM虚拟机redhat6.5-x64:192.168.1.201  192.168.1.202 Xshell4 部署方案 序号 IP 角色 模式 1 192.168.1.201 nameServer1,brokerServer1 Master1 2 192.168.1.202 nameServer2,brokerServer2 Master2 安装步骤:[两台机器同样操作  以201为例] 步骤一:解压安装文件a

双RocketMq集群的搭建

一.双Master RocketMq集群的搭建 1.服务器环境: 序号 IP 用户名 角色 模式 1 192.168.211.128 root nameServer1,brokerServer1 Master1 2 192.168.211.129 root nameServer2,brokerServer2 Master1 2.添加hosts信息 vim /etc/hosts IP NAME 192.168.211.128 rocketmq-nameserver1 192.168.211.128

【原创】《从0开始学RocketMQ》—集群搭建

用两台服务器,搭建出一个双master双slave.无单点故障的高可用 RocketMQ 集群.此处假设两台服务器的物理 IP 分别为:192.168.50.1.192.168.50.2. 内容目录 1. 启动 NameServer 集群 2. 启动 Broker 集群 3. RocketMQ 可视化管理控制台:rocketmq-console 4. 集群测试 1. 启动 NameServer 集群 在两台服务器上分别启动 NameServer,可以得到一个无单点故障的 NameServer 服

RocketMq 集群方式搭建 步骤教学包教包会

mq集群方式搭建 有段时间没写这些技术文章了, 今天抽空写一点,不然自己都快忘记了 这篇文章记录了rocketmq 集群方式搭建的过程, 也是自己半天的成果记录吧! 感兴趣的朋友点个赞在走呗! 好了,废话不多,下面开搞. 本文章参考https://blog.csdn.net/qq_35400008/article/details/82467562#comments 这个博客文章编写 准备工作 第一步:关闭要搭建的所有机器的防火墙 第二步:每台机器执行下如下步骤 [[email protected

Kafka【第一篇】Kafka集群搭建

Kafka初识 1.Kafka使用背景 在我们大量使用分布式数据库.分布式计算集群的时候,是否会遇到这样的一些问题: 我们想分析下用户行为(pageviews),以便我们设计出更好的广告位 我想对用户的搜索关键词进行统计,分析出当前的流行趋势 有些数据,存储数据库浪费,直接存储硬盘效率又低 这些场景都有一个共同点: 数据是又上游模块产生,上游模块,使用上游模块的数据计算.统计.分析,这个时候就可以使用消息系统,尤其是分布式消息系统! 2.Kafka的定义 What is Kafka:它是一个分布

Kafka 单机和伪分布式集群搭建

感觉自己越来越像个运维了,真的是所有的分布式的中间件基本都搭建了一遍   不得了了. 好 废话少说 , 还是来走Kafka 吧 , 经历了Rocket MQ , Kafka 的搭建真的是简单的不知道多少倍 , RocketMQ  实在 是太麻烦了. 还是老方案 , 先登录官网. https://archive.apache.org/dist/kafka 可以根据官网的指示文档  进行下载. 单机搭建 Step 1:下载代码 > wget https://archive.apache.org/di

redis3.0集群搭建

Redis集群搭建 redis cluster介绍 节点自动发现.集群容错slave选举.Cluster管理.集群配置管理. 集群中的每个Redis节点需要2个TCP连接端口,如6379端口用于Client连接,16379端口用于集群数据通信 集群采用Hash Slot方案,而不是一致性哈希,共16384个Hashslot.如果有3台机器,那么NodeA在0-5500,NodeB 在5501-11000,NodeC在11001-16384.这种设计下,添加,删除新Node比较方便. 由于Hash

rabbitmq集群搭建(centos6.5)

一:rabbitmq的安装: 参考:http://www.blogjava.net/hellxoul/archive/2014/06/25/415135.html http://blog.haohtml.com/archives/15249 说明:修改机器名字后再安装(为后面集群做准备) vi /etc/sysconfig/network 修改名字 vi /etc/hosts 修改地址映射表,如192.168.1.112   rabbitmq-node1.com rabbitmq-node1 #