RocketMQ下载安装、集群搭建保姆级教程

本文涉及的产品
云防火墙,500元 1000GB
简介: RocketMQ下载安装、集群搭建保姆级教程

1.下载安装

前置条件:

JDK环境

下载地址:

下载 | RocketMQ

博主下载的是4.7.1版本。source是源码,Binary是可运行程序。


2.配置

server和broker的启动脚本里,给JVM的内存都是几个G,如果机器扛不住,可以修改一下:

runserver.sh,博主改为了:


runbroker.sh,博主改为了:

3.测试

在config/broker.config中添加如下配置:

autoCreateTopicEnable=true

#aclEnable=true

启动name server:

nohup bin/mqnamesrv &

启动broker:

nohup bin/mqbroker -c conf/broker.conf &

RocketMQ安装目录下自带一个测试demo,运行后会自动向MQ中插入一千条数据: 首先配置一下环境变量

export NAMESRV_ADDR='localhost:9876'

如果脚本执行失败记得关一下防火墙试试。

然后运行脚本:

bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

4.集群配置

4.1.规划

这里以搭建一个两节点,两主两备的集群为例,展示rocketMq的集群搭建。

集群规划:

ip nameserver broker
192.1688.31.10 nameserver broker-a、broker-b-s
192.1688.31.20 nameserver broker-b、broker-a-s

备注:broker-a-s即broker-a的备份,broker-b-s即broker-b的备份。

4.2.环境准备

在/config目录下会有配置模板,其中提供了两主两从这种模式的配置模板,async表示主从之间是进行异步复制,sync表示主从之间是进行同步复制。这里博主用的是异步复制的模式。


所有节点上先增加hostname便于DNS解析:

vim /etc/hosts

#nameserver
192.168.31.10 rocketmq-nameserver1
192.168.31.20 rocketmq-nameserver2
#broker
192.168.31.10 rocketmq-master1
192.168.31.10 rocketmq-slave2
192.168.31.20 rocketmq-master2
192.168.31.20 rocketmq-slave1

配置后重启网卡:


systemctl restart network


关闭防火墙:


# 关闭防火墙

systemctl stop firewalld.service

# 查看防火墙的状态

firewall-cmd --state

# 禁止firewall开机启动

systemctl disable firewalld.service


创建好需要的目录:


mkdir /usr/local/rocketmq


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/store-1

mkdir /usr/local/rocketmq/store-1/commitlog

mkdir /usr/local/rocketmq/store-1/consumequeue

mkdir /usr/local/rocketmq/store-1/index

mkdir /usr/local/rocketmq/store-2

mkdir /usr/local/rocketmq/store-2/commitlog

mkdir /usr/local/rocketmq/store-2/consumequeue

mkdir /usr/local/rocketmq/store-2/index

mkdir /usr/local/rocketmq/store-3

mkdir /usr/local/rocketmq/store-3/commitlog

mkdir /usr/local/rocketmq/store-3/consumequeue

mkdir /usr/local/rocketmq/store-3/index

4.3.节点配置

4.3.1.master1

配置broker-a.properties:

#所属集群名字

brokerClusterName=rocketmq-cluster

#broker名字,注意此处不同的配置文件填写的不一样

brokerName=broker-a

#0 表示 Master,>0 表示 Slave

brokerId=0

#nameServer地址,分号分割

namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876

#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数

defaultTopicQueueNums=4

#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭

autoCreateTopicEnable=true

#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭

autoCreateSubscriptionGroup=true

#Broker 对外服务的监听端口

listenPort=10911

#删除文件时间点,默认凌晨 4点

deleteWhen=04

#文件保留时间,默认 48 小时

fileReservedTime=120

#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

#Broker 的角色

#- ASYNC_MASTER 异步复制Master

#- SYNC_MASTER 同步双写Master

#- SLAVE

brokerRole=SYNC_MASTER

#刷盘方式

#- ASYNC_FLUSH 异步刷盘

#- SYNC_FLUSH 同步刷盘

flushDiskType=SYNC_FLUSH

#checkTransactionMessageEnable=false

#发消息线程池数量

#sendMessageThreadPoolNums=128

#拉消息线程池数量

#pullMessageThreadPoolNums=128

4.3.2.slave2

配置broker-b-s.properties:

#所属集群名字

brokerClusterName=rocketmq-cluster

#broker名字,注意此处不同的配置文件填写的不一样

brokerName=broker-b

#0 表示 Master,>0 表示 Slave

brokerId=1

#nameServer地址,分号分割

namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876

#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数

defaultTopicQueueNums=4

#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭

autoCreateTopicEnable=true

#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭

autoCreateSubscriptionGroup=true

#Broker 对外服务的监听端口

listenPort=11011

#删除文件时间点,默认凌晨 4点

deleteWhen=04

#文件保留时间,默认 48 小时

fileReservedTime=120

#commitLog每个文件的大小默认1G

mapedFileSizeCommitLog=1073741824

#ConsumeQueue每个文件默认存30W条,根据业务情况调整

mapedFileSizeConsumeQueue=300000

#destroyMapedFileIntervalForcibly=120000

#redeleteHangedFileInterval=120000

#检测物理文件磁盘空间

diskMaxUsedSpaceRatio=88

#存储路径

storePathRootDir=/usr/local/rocketmq/store-1

#commitLog 存储路径

storePathCommitLog=/usr/local/rocketmq/store-1/commitlog

#消费队列存储路径存储路径

storePathConsumeQueue=/usr/local/rocketmq/store-1/consumequeue

#消息索引存储路径

storePathIndex=/usr/local/rocketmq/store-1/index

#checkpoint 文件存储路径

storeCheckpoint=/usr/local/rocketmq/store-1/checkpoint

#abort 文件存储路径

abortFile=/usr/local/rocketmq/store-1/abort

#限制的消息大小

maxMessageSize=65536

#flushCommitLogLeastPages=4

#flushConsumeQueueLeastPages=2

#flushCommitLogThoroughInterval=10000

#flushConsumeQueueThoroughInterval=60000

#Broker 的角色

#- ASYNC_MASTER 异步复制Master

#- SYNC_MASTER 同步双写Master

#- SLAVE

brokerRole=SYNC_MASTER

#刷盘方式

#- ASYNC_FLUSH 异步刷盘

#- SYNC_FLUSH 同步刷盘

flushDiskType=SYNC_FLUSH

#checkTransactionMessageEnable=false

#发消息线程池数量

#sendMessageThreadPoolNums=128

#拉消息线程池数量

#pullMessageThreadPoolNums=128

4.3.3.master2

配置broker-b.properties:

#所属集群名字

brokerClusterName=rocketmq-cluster

#broker名字,注意此处不同的配置文件填写的不一样

brokerName=broker-b

#0 表示 Master,>0 表示 Slave

brokerId=0

#nameServer地址,分号分割

namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876

#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数

defaultTopicQueueNums=4

#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭

autoCreateTopicEnable=true

#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭

autoCreateSubscriptionGroup=true

#Broker 对外服务的监听端口

listenPort=10911

#删除文件时间点,默认凌晨 4点

deleteWhen=04

#文件保留时间,默认 48 小时

fileReservedTime=120

#commitLog每个文件的大小默认1G

mapedFileSizeCommitLog=1073741824

#ConsumeQueue每个文件默认存30W条,根据业务情况调整

mapedFileSizeConsumeQueue=300000

#destroyMapedFileIntervalForcibly=120000

#redeleteHangedFileInterval=120000

#检测物理文件磁盘空间

diskMaxUsedSpaceRatio=88

#存储路径

storePathRootDir=/usr/local/rocketmq/store-2

#commitLog 存储路径

storePathCommitLog=/usr/local/rocketmq/store-2/commitlog

#消费队列存储路径存储路径

storePathConsumeQueue=/usr/local/rocketmq/store-2/consumequeue

#消息索引存储路径

storePathIndex=/usr/local/rocketmq/store-2/index

#checkpoint 文件存储路径

storeCheckpoint=/usr/local/rocketmq/store-2/checkpoint

#abort 文件存储路径

abortFile=/usr/local/rocketmq/store-2/abort

#限制的消息大小

maxMessageSize=65536

#flushCommitLogLeastPages=4

#flushConsumeQueueLeastPages=2

#flushCommitLogThoroughInterval=10000

#flushConsumeQueueThoroughInterval=60000

#Broker 的角色

#- ASYNC_MASTER 异步复制Master

#- SYNC_MASTER 同步双写Master

#- SLAVE

brokerRole=SYNC_MASTER

#刷盘方式

#- ASYNC_FLUSH 异步刷盘

#- SYNC_FLUSH 同步刷盘

flushDiskType=SYNC_FLUSH

#checkTransactionMessageEnable=false

#发消息线程池数量

#sendMessageThreadPoolNums=128

#拉消息线程池数量

#pullMessageThreadPoolNums=128

4.3.4.slave1

配置broker-a-s.properties:

#所属集群名字

brokerClusterName=rocketmq-cluster

#broker名字,注意此处不同的配置文件填写的不一样

brokerName=broker-a

#0 表示 Master,>0 表示 Slave

brokerId=1

#nameServer地址,分号分割

namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876

#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数

defaultTopicQueueNums=4

#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭

autoCreateTopicEnable=true

#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭

autoCreateSubscriptionGroup=true

#Broker 对外服务的监听端口

listenPort=11011

#删除文件时间点,默认凌晨 4点

deleteWhen=04

#文件保留时间,默认 48 小时

fileReservedTime=120

#commitLog每个文件的大小默认1G

mapedFileSizeCommitLog=1073741824

#ConsumeQueue每个文件默认存30W条,根据业务情况调整

mapedFileSizeConsumeQueue=300000

#destroyMapedFileIntervalForcibly=120000

#redeleteHangedFileInterval=120000

#检测物理文件磁盘空间

diskMaxUsedSpaceRatio=88

#存储路径

storePathRootDir=/usr/local/rocketmq/store-3

#commitLog 存储路径

storePathCommitLog=/usr/local/rocketmq/store-3/commitlog

#消费队列存储路径存储路径

storePathConsumeQueue=/usr/local/rocketmq/store-3/consumequeue

#消息索引存储路径

storePathIndex=/usr/local/rocketmq/store-3/index

#checkpoint 文件存储路径

storeCheckpoint=/usr/local/rocketmq/store-3/checkpoint

#abort 文件存储路径

abortFile=/usr/local/rocketmq/store-3/abort

#限制的消息大小

maxMessageSize=65536

#flushCommitLogLeastPages=4

#flushConsumeQueueLeastPages=2

#flushCommitLogThoroughInterval=10000

#flushConsumeQueueThoroughInterval=60000

#Broker 的角色

#- ASYNC_MASTER 异步复制Master

#- SYNC_MASTER 同步双写Master

#- SLAVE

brokerRole=SLAVE

#刷盘方式

#- ASYNC_FLUSH 异步刷盘

#- SYNC_FLUSH 同步刷盘

flushDiskType=ASYNC_FLUSH

#checkTransactionMessageEnable=false

#发消息线程池数量

#sendMessageThreadPoolNums=128

#拉消息线程池数量

#pullMessageThreadPoolNums=128

4.4.启动

两个节点先分别启动name server:

nohup rocketmq的bin目录所在的全路径/mqnamesrv &

然后两个节点分别用不同的配置文件启动两个broker:

nohup ocketmq的bin目录所在的全路径/mqbroker -c rocketmq的bin目录所在的全路径/2m-2s-async/xxx.properties &

启动后用jps查看一下,应该有一个name server、两个broker进程。

4.5.测试

bin目录下会有管理控制台命令mqadmin,用来查看mq的相关消息,用一下命令查看集群情况:

bin/mqadmin clusterList -n rocketmq-nameserver1:9876;rocketmq-nameserver2:9876

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
2月前
|
消息中间件 Linux API
centos7 安装rabbitmq自定义版本及配置
centos7 安装rabbitmq自定义版本及配置
|
17天前
|
消息中间件 存储 JSON
rabbitmq基础教程(ui,java,springamqp)
本文提供了RabbitMQ的基础教程,包括如何使用UI创建队列和交换机、Java代码操作RabbitMQ、Spring AMQP进行消息发送和接收,以及如何使用不同的交换机类型(fanout、direct、topic)进行消息路由。
13 0
rabbitmq基础教程(ui,java,springamqp)
|
17天前
|
消息中间件 数据安全/隐私保护 Docker
Docker安装rabbitmq
如何使用Docker安装和配置RabbitMQ服务,包括拉取RabbitMQ镜像、创建容器、配置持久化和访问管理界面的步骤。
49 0
Docker安装rabbitmq
|
1月前
|
消息中间件 Linux
centos7安装rabbitmq
centos7安装rabbitmq
|
1月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
2月前
|
消息中间件 Docker 容器
消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】
这篇文章提供了RabbitMQ的安装和基本使用教程,包括如何使用Docker拉取RabbitMQ镜像、创建容器、通过浏览器访问管理界面,以及如何创建交换机、队列、绑定和使用direct、fanout和topic三种类型的交换器进行消息发布和接收的测试。
消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】
|
2月前
|
消息中间件 存储 负载均衡
|
1月前
|
消息中间件 Linux
linux之centos安装rabbitmq
linux之centos安装rabbitmq
|
2月前
|
消息中间件 存储 负载均衡
"RabbitMQ集群大揭秘!让你的消息传递系统秒变超级英雄,轻松应对亿级并发挑战!"
【8月更文挑战第24天】RabbitMQ是一款基于AMQP的开源消息中间件,以其高可靠性、扩展性和易用性闻名。面对高并发和大数据挑战时,可通过构建集群提升性能。本文深入探讨RabbitMQ集群配置、工作原理,并提供示例代码。集群由多个通过网络连接的节点组成,共享消息队列,确保高可用性和负载均衡。搭建集群需准备多台服务器,安装Erlang和RabbitMQ,并确保节点间通信顺畅。核心步骤包括配置.erlang.cookie文件、使用rabbitmqctl命令加入集群。消息发布至任一节点时,通过集群机制同步至其他节点;消费者可从任一节点获取消息。
39 2
|
2月前
|
存储 Ubuntu 安全
在Ubuntu 16.04上安装和保护Mosquitto MQTT消息代理的方法
在Ubuntu 16.04上安装和保护Mosquitto MQTT消息代理的方法
73 1