Centos9 安装 RocketMQ5

环境:mac M4

Linux:虚拟机 centos9

1. 下载

官网下载地址链接

rocketmq-dashboard可视化界面下载链接

官网文档链接

2. 修改配置

修改两个.sh配置文件的目的仅仅是为了运行时占用的内存少一些,如果电脑配置够高,不修改也行

  1. 下载rocketmq-all-5.3.2-bin-release.zip后拷贝到centos中解压
bash 复制代码
unzip rocketmq-all-5.3.2-bin-release.zip
  1. 修改解压后/bin目录中的两个文件,将内存改小,目的是为了在虚拟机中好运行

runbroker.sh

  • 将原来的-Xms8g -Xmx8g改成-Xms2g -Xmx2g
bash 复制代码
JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g"

runserver.sh

  • 代码中有个判断语句if [ -z "$JAVA_MAJOR_VERSION" ] || [ "$JAVA_MAJOR_VERSION" -lt "9" ] ; then一个if判断,如果java版本小于9就会走上面的配置,大于9就会走else中的配置。
  • 将原来的-Xms4g -Xmx4g改成-Xms2g -Xmx2g
bash 复制代码
JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
  1. 修改/conf中的broker.conf配置文件

在最后追加3行代码

bash 复制代码
brokerClusterName = DefaultCluster
...
flushDiskType = ASYNC_FLUSH

namesrvAddr = 192.168.89.129:9876
autoCreateTopicEnable = true
brokerIP1 = 192.168.89.129
  • 这个配置文件是给mqbroker启动时的配置
  • namesrvAddr = 192.168.89.129:9876:当 Broker 启动时,会依据这个配置的地址和端口,主动连接 NameServer 并注册自身的信息
  • autoCreateTopicEnable = true:当生产者尝试向一个不存在的主题发送消息时,Broker 会自动创建这个主题,生产环境中,通常不建议开启此功能
  • brokerIP1 = 192.168.89.129:指定 Broker 对外暴露的 IP 地址。Broker 在向 NameServer 注册自身信息时,会把 brokerIP1 配置的 IP 地址一并注册上去。NameServer 再把这个 IP 地址提供给生产者和消费者,从而保证它们能够正确地连接到 Broker。
  • 在生产环境NameServer和Broker可能不在同一个服务器中,配置地址时需配置服务器提供的地址。
  • 在虚拟机中也不要配置127.0.0.1,rocketmq-dashboard有时会找不到,不知道是哪儿的bug

3. 启动

修改profile

bash 复制代码
vim /etc/profile

将rocketmq加入path中,启动和停止的时候不用使用路径了,省事

bash 复制代码
# 配置rocketmq
export ROCKETMQ_HOME=/root/rocketmq
export PATH=$ROCKETMQ_HOME/bin:$PATH
bash 复制代码
# 启动NameServer
[root@centoshost rocketmq]# mqnamesrv
The Name Server boot success. serializeType=JSON, address 0.0.0.0:9876
bash 复制代码
# 启动Bocker
[root@centoshost ~]# mqbroker -n 192.168.89.129:9876
# 中间有很多日志,可拷贝给ai看看
The broker[centoshost, 192.168.89.129:10911] boot success. serializeType=JSON and name server is 192.168.89.129:9876
  • mqbroker -n 192.168.89.129:9876:192.168.89.129:9876是NameServer的地址,我不配置这个mqbroker可以启动,但是rocketmq-dashboard看不到mqbroker,感觉是没有自动取加载conf配置文件

4. 安装rocketmq-dashboard

这里没有使用docker镜像,直接运行的jar包
修改yml文件

bash 复制代码
rocketmq:
  config:
    namesrvAddrs:
      - 192.168.89.129:9876
  • 在idea中运行测试一下,已经可以看到NameServer和Broker
  • 将jar包拷贝到虚拟机中运行,也可以在本地运行
bash 复制代码
# 启动 rocketmq-dashboard
[root@centoshost rocketmq-dashboard]# java -jar rocketmq-dashboard-2.0.1-SNAPSHOT.jar 

页面显示


5. Docker 部署 RocketMQ5

如果运行环境是mac主机、虚拟机安装centos,想使用docker镜像安装rocketmq行不通,因为他们的镜像是arm64的,不能用,需要重新编译,包括:rocketmq-dashboard、mqnamesrv、broker3个镜像都需要重新制作镜像,制作镜像的方法链接

参考文章[链接]

(https://blog.csdn.net/weixin_44606481/article/details/129758920)

bash 复制代码
# 拉取rocketmq
docker pull apache/rocketmq:5.3.2

部署nameServer

bash 复制代码
# 创建日志目录,脚本目录
mkdir /root/rocketmq/nameserver/logs -p
mkdir /root/rocketmq/nameserver/bin -p
bash 复制代码
# 修改文件权限
chmod 777 -R /root/rocketmq/nameserver/*
bash 复制代码
# 随便启动mqnamesrv,拷贝完文件就删除
docker run -d \
--privileged=true \
--name rmqnamesrv \
apache/rocketmq:5.3.2 sh mqnamesrv
bash 复制代码
# 复制容器内启动脚本到挂载目录
docker cp rmqnamesrv:/home/rocketmq/rocketmq-5.3.2/bin/runserver.sh /root/rocketmq/nameserver/bin/runserver.sh
bash 复制代码
# 删除容器
docker rm -f rmqnamesrv
bash 复制代码
# 启动nameServer
docker run -d \
--privileged=true \
--restart=always \
--name rmqnamesrv \
-p 9876:9876  \
-v /root/rocketmq/nameserver/logs:/home/rocketmq/logs \
-v /root/rocketmq/nameserver/bin/runserver.sh:/home/rocketmq/rocketmq-5.3.2/bin/runserver.sh \
-e "MAX_HEAP_SIZE=256M" \
-e "HEAP_NEWSIZE=128M" \
apache/rocketmq:5.3.2 sh mqnamesrv

部署Broker

bash 复制代码
# 创建需要的挂载目录
mkdir /root/rocketmq/broker/logs -p \
mkdir /root/rocketmq/broker/data -p \
mkdir /root/rocketmq/broker/conf -p \
mkdir /root/rocketmq/broker/bin -p
bash 复制代码
# 设置权限
chmod 777 -R /root/rocketmq/broker/*
bash 复制代码
# 创建Broker的配置文件
vi /root/rocketmq/broker/conf/broker.conf
bash 复制代码
# broker.conf

# 集群名称
brokerClusterName = DefaultCluster
# 节点名称
brokerName = broker-a
# broker id节点ID, 0 表示 master, 其他的正整数表示 slave,不能小于0 
brokerId = 0
# 在每天的什么时间删除已经超过文件保留时间的 commit log,默认值04
deleteWhen = 04
# 以小时计算的文件保留时间 默认值72小时
fileReservedTime = 48
# Broker角色
brokerRole = ASYNC_MASTER
# 刷盘方式
flushDiskType = ASYNC_FLUSH


# nameServer 地址多个用;隔开 默认值null
# 例:127.0.0.1:6666;127.0.0.1:8888 
namesrvAddr = 192.168.3.234:9876
# 是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# Broker服务地址,内部使用填内网ip,如果是需要给外部使用填公网ip
brokerIP1 = 192.168.3.234
bash 复制代码
# 启动Broker,用于拷贝文件
docker run -d \
--name rmqbroker \
--privileged=true \
apache/rocketmq:5.3.2 \
sh mqbroker
bash 复制代码
# 拷贝Broker里面的文件
docker cp rmqbroker:/home/rocketmq/rocketmq-5.3.2/bin/runbroker.sh /root/rocketmq/broker/bin/runbroker.sh
bash 复制代码
# 删除Broker容器
docker rm -f rmqbroker
bash 复制代码
# 启动Broker
docker run -d \
--restart=always \
--name rmqbroker \
-p 10911:10911 -p 10909:10909 \
--privileged=true \
-v /root/rocketmq/broker/logs:/root/logs \
-v /root/rocketmq/broker/store:/root/store \
-v /root/rocketmq/broker/conf/broker.conf:/home/rocketmq/broker.conf \
-v /root/rocketmq/broker/bin/runbroker.sh:/home/rocketmq/rocketmq-5.3.2/bin/runbroker.sh \
-e "MAX_HEAP_SIZE=512M" \
-e "HEAP_NEWSIZE=256M" \
apache/rocketmq:5.3.2 \
sh mqbroker -c /home/rocketmq/broker.conf

部署rocketmq-dashboard

bash 复制代码
# 拉取
docker pull apacherocketmq/rocketmq-dashboard:latest
bash 复制代码
# RocketMQ Dashboard启动
docker run -d \
--restart=always \
--name rmqdashboard \
-e "JAVA_OPTS=-Xmx256M -Xms256M -Xmn128M -Drocketmq.namesrv.addr=192.168.3.234:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 9875:8080 \
apacherocketmq/rocketmq-dashboard:latest

6. 使用 docker-compose部署

创建yml文件,文件位置随意

bash 复制代码
vim /root/docker-compose
  • 拷贝以下代码,使用了RocketMq 5.2
bash 复制代码
services:
  rmqnamesrv:
    image: apache/rocketmq:5.2.0
    container_name: rmqnamesrv
    restart: always
    privileged: true
    ports:
      - "9876:9876"
    volumes:
      - /root/rocketmq/nameserver/logs:/home/rocketmq/logs
      - /root/rocketmq/nameserver/bin/runserver.sh:/home/rocketmq/rocketmq-5.2.0/bin/runserver.sh
    command: sh mqnamesrv

  rmqbroker:
    image: apache/rocketmq:5.2.0
    container_name: rmqbroker
    restart: always
    privileged: true
    ports:
      - "10911:10911"
      - "10909:10909"
    volumes:
      - /root/rocketmq/broker/logs:/root/logs
      - /root/rocketmq/broker/store:/root/store
      - /root/rocketmq/broker/conf/broker.conf:/home/rocketmq/broker.conf
      - /root/rocketmq/broker/bin/runbroker.sh:/home/rocketmq/rocketmq-5.2.0/bin/runbroker.sh
    command: sh mqbroker -c /home/rocketmq/broker.conf
    depends_on:
      - rmqnamesrv

  rmqdashboard:
    image: apacherocketmq/rocketmq-dashboard:latest
    container_name: rmqdashboard
    restart: always
    environment:
      - JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.3.234:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false
    ports:
      - "9875:8080"
    depends_on:
      - rmqnamesrv
      - rmqbroker

启动

c 复制代码
docker-compose up -d

7. docker-compose的基本命令

docker-compose.yml 是 Docker Compose 的配置文件,用于定义和管理多个 Docker 容器的应用程序。以下是使用 docker-compose.yml 的基本步骤:

  1. 安装 Docker Compose:首先,确保你已经安装了 Docker Compose。下载的docker中一般已经包含了Compose
bash 复制代码
[root@centos9 ~]# docker-compose --version
Docker Compose version v2.35.1
  1. 创建 docker-compose.yml 文件 :在随意一个目录中创建一个名为 docker-compose.yml 的文件。这个文件使用 YAML 格式来定义你的应用程序的服务、网络和卷等。

  2. 定义服务 :在 docker-compose.yml 文件中,使用 services 关键字来定义你的应用程序的各个服务。每个服务都有一个名称,并且可以指定以下属性:

    • image:指定服务使用的 Docker 镜像。
    • ports:指定服务暴露的端口。
    • volumes:指定服务使用的卷。
    • environment:指定服务的环境变量。
    • depends_on:指定服务之间的依赖关系。

例如,以下是一个简单的 docker-compose.yml 文件,定义了一个 Web 服务和一个数据库服务:

yaml 复制代码
services:
  web:
    image: nginx
    ports:
      - "80:80"
    volumes:
      -./html:/usr/share/nginx/html
  db:
    image: mysql
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=mydatabase
    volumes:
      -./data:/var/lib/mysql

在这个例子中,web 服务使用了 Nginx 镜像,并将容器的 80 端口映射到主机的 80 端口。web 服务还使用了一个卷,将主机的 ./html 目录挂载到容器的 /usr/share/nginx/html 目录。db 服务使用了 MySQL 镜像,并设置了一些环境变量。db 服务也使用了一个卷,将主机的 ./data 目录挂载到容器的 /var/lib/mysql 目录。

  1. 启动服务:在目录中打开终端,运行以下命令来启动服务,在终端显示日志,退出则会关闭容器:
bash 复制代码
docker-compose up

这个命令会读取 docker-compose.yml 文件,并启动其中定义的所有服务。你可以使用 -d 选项来在后台运行服务:

bash 复制代码
docker-compose up -d
  1. 管理服务 :使用 docker-compose 命令来管理服务。例如,你可以使用以下命令来停止服务:
bash 复制代码
docker-compose down

你还可以使用以下命令来重启服务:

bash 复制代码
docker-compose restart
  1. 查看服务状态 :使用 docker-compose ps 命令来查看服务的状态。这个命令会列出所有正在运行的服务及其状态。

  2. 查看服务日志 :使用 docker-compose logs 命令来查看服务的日志。这个命令会显示所有服务的日志输出。

  3. 扩展服务 :使用 docker-compose scale 命令来扩展服务。例如,你可以使用以下命令来将 web 服务扩展到 3 个实例:

bash 复制代码
docker-compose scale web=3
相关推荐
计算机毕设定制辅导-无忧学长4 小时前
ActiveMQ 与其他 MQ 的对比分析:Kafka/RocketMQ 的选型参考(一)
kafka·rocketmq·activemq
岳麓丹枫0016 小时前
CentOS Linux 环境二进制方式安装 MySQL 5.7.32
linux·mysql·centos
keenx18 小时前
centos7.0无法安装php8.2/8.3
centos·php
阿俊仔(摸鱼版)20 小时前
CentOS上搭建 Python 运行环境并使用第三方库
linux·python·centos
-273K2 天前
39.RocketMQ高性能核心原理与源码架构剖析
架构·rocketmq
KingCruel2 天前
Linux CentOS 7 安装Apache 部署html页面
linux·centos·apache
今天努力了吗??2 天前
Centos 7安装 NVIDIA CUDA Toolkit
linux·运维·centos
Waitccy2 天前
CentOS 7 磁盘阵列搭建与管理全攻略
linux·运维·缓存·centos
遇见火星2 天前
CentOS NFS共享目录
linux·运维·centos·nfs·共享目录