RocketMQ集群部署

这篇具有很好参考价值的文章主要介绍了RocketMQ集群部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、部署环境

两台服务器,每台一个nameserver构成集群,broker集群双主双从。

主机 容器名称 IP 与宿主机的端口映射

RocketMQ集群部署

  • ODL控制器会同过vip通道10909去连接mq。
  • 主从通过10912端口同步
  • 这两个地址是通过-2 +1 在配置文件端口10911基础上计算得出

两个宿主机上都有docker,并且创建了网桥docker-br0。

docker network create --subnet=172.16.1.0/24 docker-br0

docker network create --subnet=172.16.2.0/24 docker-br0

二、部署步骤

(一)、安装docker compose

参考官方方法:https://docs.docker.com/compose/install/linux/

DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose

chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose

docker compose version

拉取mq docker镜像

docker pull apache/rocketmq:4.3.1

docker pull apacherocketmq/rocketmq-dashboard

(二)、172.16.101.14 主机docker compose 部署 nameserver和broker 配置文件

  • 现在broker master配置文件都是开启自动创建topic的。如果topic消息间隔时间 > nameserver路由更新时间30s / (单个broker topic队列数 + 1),只会使用一个broker。
  • 在生产环境下不开启自动创建topic。需要手动给每个broker创建topic。手动创建topic后,消息会轮询所有broker的队列,选择一个发送。

1.创建路径docker-compose/rocketmq/,存放主从broker的配置文件:broker-a.conf broker-b-s.conf

broker-a.conf

brokerClusterName = rocketmq-cluster
brokerName = broker-a

# 0表示broker master 非0表示 broker slaver
brokerId = 0

# brokerIP1 当前broker监听的IP
brokerIP1 = 172.16.101.14

# brokerIP2 存在broker主从时,在broker主节点上配置了brokerIP2的话,broker从节点会连接主节点配置的brokerIP2来同步
brokerIP2 = 172.16.101.14

deleteWhen = 04
fileReservedTime = 48

namesrvAddr = rmqnamesrv-a:9876;172.16.101.13:9876

# 是否能够自动创建topic
autoCreateTopicEnable = true

#Broker 对外服务的监听端口, 默认10911
# listenPort = 10911

#Broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole = ASYNC_MASTER

#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType = ASYNC_FLUSH

broker-b-s.conf

brokerClusterName = rocketmq-cluster
brokerName = broker-b

brokerId = 1

brokerIP1 = 172.16.101.14

deleteWhen = 04
fileReservedTime = 48

namesrvAddr = rmqnamesrv-a:9876;172.16.101.13:9876

listenPort = 11911

brokerRole = SLAVE

flushDiskType = ASYNC_FLUSH
  1. docker-compose/下创建文件docker-compose.yml

docker-compose.yml

version: '3.5'
services:
rmqnamesrv-a:
image: apache/rocketmq:4.3.1
restart: always
container_name: rmqnamesrv-a
ports:
- 9876:9876
volumes:
- ./rocketmq/logs/nameserver-a:/opt/logs/rocketmqlogs
- ./rocketmq/store/nameserver-a:/opt/store
environment:
JAVA_OPT_EXT: "-Duser.home=/opt -Xms512m -Xmx512m -Xmn150m"
command: sh mqnamesrv
networks:
- docker-br0


rmqbroker-a:
image: apache/rocketmq:4.3.1
container_name: rmqbroker-a
ports:
- 10911:10911
- 10909:10909
- 10912:10912
volumes:
- ./rocketmq/logs/broker-a:/home/rocketmq/logs
- ./rocketmq/store/broker-a:/home/rocketmq/store
- ./rocketmq/broker-a.conf:/home/rocketmq/rocketmq-4.3.1/conf/broker.conf
environment:
TZ: Asia/Shanghai
NAMESRV_ADDR: "rmqnamesrv-a:9876"
JAVA_OPTS: " -Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
command: sh mqbroker -c /home/rocketmq/rocketmq-4.3.1/conf/broker.conf autoCreateTopicEnable=true &
links:
- rmqnamesrv-a:rmqnamesrv-a
networks:
- docker-br0

rmqbroker-b-s:
image: apache/rocketmq:4.3.1
container_name: rmqbroker-b-s
ports:
- 11911:11911
- 11909:11909
- 11912:11912
volumes:
- ./rocketmq/logs/broker-b-s:/home/rocketmq/logs
- ./rocketmq/store/broker-b-s:/home/rocketmq/store
- ./rocketmq/broker-b-s.conf:/home/rocketmq/rocketmq-4.3.1/conf/broker.conf
environment:
TZ: Asia/Shanghai
NAMESRV_ADDR: "rmqnamesrv-a:9876"
JAVA_OPTS: " -Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
command: sh mqbroker -c /home/rocketmq/rocketmq-4.3.1/conf/broker.conf autoCreateTopicEnable=true &
links:
- rmqnamesrv-a:rmqnamesrv-a
networks:
- docker-br0

networks:
docker-br0:
external: true

(三)、172.16.101.13 主机docker compose 部署 nameserver和broker 配置文件

1.创建路径docker-compose/rocketmq/,存放主从broker的配置文件:broker-b.conf broker-a-s.conf

broker-b.conf

brokerClusterName = rocketmq-cluster
brokerName = broker-b

brokerId = 0

brokerIP1 = 172.16.101.13

brokerIP2 = 172.16.101.13

deleteWhen = 04
fileReservedTime = 48

namesrvAddr = rmqnamesrv-b:9876;172.16.101.14:9876

autoCreateTopicEnable = true

brokerRole = ASYNC_MASTER

flushDiskType = ASYNC_FLUSH

broker-a-s.conf

brokerClusterName = rocketmq-cluster
brokerName = broker-a

brokerId = 1

brokerIP1 = 172.16.101.13

deleteWhen = 04
fileReservedTime = 48

namesrvAddr = rmqnamesrv-b:9876;172.16.101.14:9876

listenPort = 11911

brokerRole = SLAVE

flushDiskType = ASYNC_FLUSH
  1. docker-compose/下创建文件docker-compose.yml

docker-compose.yml

version: '3.5'
services:
rmqnamesrv-b:
image: apache/rocketmq:4.3.1
restart: always
container_name: rmqnamesrv-b
ports:
- 9876:9876
volumes:
- ./rocketmq/logs/nameserver-b:/opt/logs/rocketmqlogs
- ./rocketmq/store/nameserver-b:/opt/store
environment:
JAVA_OPT_EXT: "-Duser.home=/opt -Xms512m -Xmx512m -Xmn150m"
command: sh mqnamesrv
networks:
- docker-br0


rmqbroker-b:
image: apache/rocketmq:4.3.1
container_name: rmqbroker-b
ports:
- 10911:10911
- 10909:10909
- 10912:10912
volumes:
- ./rocketmq/logs/broker-b:/home/rocketmq/logs
- ./rocketmq/store/broker-b:/home/rocketmq/store
- ./rocketmq/broker-b.conf:/home/rocketmq/rocketmq-4.3.1/conf/broker.conf
environment:
TZ: Asia/Shanghai
NAMESRV_ADDR: "rmqnamesrv-b:9876"
JAVA_OPTS: " -Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
command: sh mqbroker -c /home/rocketmq/rocketmq-4.3.1/conf/broker.conf autoCreateTopicEnable=true &
links:
- rmqnamesrv-b:rmqnamesrv-b
networks:
- docker-br0

rmqbroker-a-s:
image: apache/rocketmq:4.3.1
container_name: rmqbroker-a-s
ports:
- 11911:11911
- 11909:11909
- 11912:11912
volumes:
- ./rocketmq/logs/broker-a-s:/home/rocketmq/logs
- ./rocketmq/store/broker-a-s:/home/rocketmq/store
- ./rocketmq/broker-a-s.conf:/home/rocketmq/rocketmq-4.3.1/conf/broker.conf
environment:
TZ: Asia/Shanghai
NAMESRV_ADDR: "rmqnamesrv-b:9876"
JAVA_OPTS: " -Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
command: sh mqbroker -c /home/rocketmq/rocketmq-4.3.1/conf/broker.conf autoCreateTopicEnable=true &
links:
- rmqnamesrv-b:rmqnamesrv-b
networks:
- docker-br0

networks:
docker-br0:
external: true

(四)、部署

  1. 执行
docker compose up -d
docker compose down
  1. 此时已经在rocket下创建了logs和store文件夹,设置权限chmod -R 777 logs/ store/

  2. 部署docker compose up -d

  3. docker部署dashboard

docker run -d -it --net docker-br0 --ip 172.16.1.18 --name dashboard -p 8080:8080 -e "JAVA_OPTS=-Drocketmq.namesrv.addr=172.16.101.13:9876;172.16.101.14:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" apacherocketmq/rocketmq-dashboard:latest /bin/bash 

启动后进入宿主机ip:8080页面

查看容器内网卡ip:hostname -i 文章来源地址https://www.toymoban.com/news/detail-490252.html

到了这里,关于RocketMQ集群部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 概述、搭建Redis服务器、部署LNP+Redis、创建Redis集群、连接集群、集群工作原理

    Top 案例1:搭建redis服务器 案例2:常用命令限 案例3:部署LNP+Redis 案例4:创建redis集群 1.1 具体要求如下 在主机redis64运行redis服务 修改服务运行参数 ip 地址192.168.88.64 服务监听的端口6364 redis服务的连接密码为 tarenaplj 1.2 方案 准备1台新虚拟机,要求如表-1所示。   1.3 步骤 实

    2024年02月12日
    浏览(84)
  • (十)服务器K8S集群部署SpringBoot项目实战

    可以在 https://start.spring.io/网站准备一个项目,这里作为k8s的学习所以springboot项目中准备一个简单的访问接口即可。 1.更新系统软件包: 2.安装 OpenJDK 11: 3.验证 Java 安装: 4.配置环境变量 5.使环境变量生效 1.可以在 https://dlcdn.apache.org/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin

    2024年02月12日
    浏览(49)
  • 两台服务器间进行文件传输

    目录 方法1:使用SCP 方法2:使用rsync 使用SSH密钥 两台服务器之间进行文件传输通常可以使用SCP(Secure Copy Protocol)或rsync命令。这两种方法都是在UNIX和Linux系统上常用的工具,用于安全地复制文件和目录。以下是使用这两种方法的示例: SCP是一种在两台服务器之间安全地复制

    2024年02月08日
    浏览(43)
  • linux两台服务器时间同步

    让Linux两台服务器时间同步,可以通过网络时间协议(NTP)来实现。NTP是一种可以在网络时间服务器和客户端之间同步时间的协议,通过使用NTP,可以保证网络中的所有计算机时间的准确性。 在服务器1上安装NTP服务: 编辑ntp配置文件/etc/ntp.conf,将server字段改为服务器1的IP地

    2024年02月09日
    浏览(47)
  • 云服务器部署项目环境

    以下是腾讯云和阿里云都有免费试用的活动,新用户均可申请试用,。 https://cloud.tencent.com/act/free/enterprise?from=17591 阿里云免费试用 https://free.aliyun.com/?spm=5176.19720258.J_2937333540.5.7b8176f4czVD57 以下以腾讯云为例,每到双11,618等大型购物节均有力度很大的优惠,本人买了一个 CPU

    2024年02月05日
    浏览(44)
  • Cenos7 搭建Minio最新版集群部署服务器(一)

                                                      ------      道 | 法 | 术 | 器 | 势     ------                             多台服务器间免密登录|免密拷贝 Cenos7 搭建Minio集群部署服务器(一) Cenos7 搭建Minio集群Nginx统一访问入口|反向动态代理(二)  Nginx正向代理与反向

    2024年02月12日
    浏览(39)
  • 部署 ssm 项目到云服务器上(购买云服务器 + 操作远程云服务器 + 服务器中的环境搭建 + 部署项目到服务器)

    推荐的做法:买一个云服务器。(主要是要有一个外网 IP) 好处:① 方便 (如果自己搭建,就比较麻烦)、② 便宜 (如果只是为了学习使用,最低配置的服务器完全够用,不到 50 元就能买一年使用权)、③ 有外网 IP ,可以部署项目(有了外网 IP,我们部署的项目,别人

    2024年02月11日
    浏览(70)
  • 如何在两台服务器之间传输文件

    问题描述: 实验室有两台服务器:240和53。 师兄的工作是在初始的240服务器上完成的,因此环境、数据集也保存在上面;当我尝试复现实验、跑通代码时,就面临这样一个问题:我的环境和代码均在新的53服务器上,而经过“清洗”的数据集却在以前的240服务器上面…然而,

    2024年02月04日
    浏览(60)
  • Centos7 x86服务器一键部署ES集群/单机shell

            由于日常的实施工作中经常用到单机或者集群的es,每次都手动部署感觉很麻烦,于是抽空写了一个一键部署脚本,通过简单指定集群名称、节点ip、端口等几个配置参数后自动部署es单机或者集群数据库 该安装包实现利用给定参数安装单机版或者集群版es数据库,指

    2023年04月11日
    浏览(85)
  • 华为云云耀云服务器L实例评测 | 实例使用教学之软件安装:华为云云耀云服务器环境下安装 RabbitMQ 集群

    华为云云耀云服务器L实例评测 | 实例使用教学之软件安装:华为云云耀云服务器环境下安装 RabbitMQ 集群 介绍华为云云耀云服务器 华为云云耀云服务器 (目前已经全新升级为 华为云云耀云服务器L实例) 华为云云耀云服务器是什么 华为云云耀云服务器和上一代的服务器对

    2024年02月07日
    浏览(90)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包