在docker下安装rocketmq【docker-compose】方式安装

2022-12-16 18:48:37 浏览数 (1)

最近学习使用 rocketmq,需要搭建 rocketmq 服务端,本文主要记录 rocketmq 搭建过程以及这个过程踩到的一些坑。

准备工作

在搭建之前,我们需要做一些准备工作,这里我们需要使用 docker 搭建服务,所以需要提前安装 docker。此外,由于 rocketmq 需要部署 broker 与 nameserver ,考虑到分开部署比较麻烦,这里将会使用 docker-compose。

1:先创建rocketmq的booker配置文件

文件放置到 /opt/rocketmq/conf

代码语言:javascript复制
vim borker.conf
# 消费模式,默认集群
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
# 清除未被消费消息时间,凌晨四点
deleteWhen = 04 
#消息保留时间
fileReservedTime = 48 
#broker角色,默认为异步MASTER
#刷盘策略,异步刷盘
brokerRole = ASYNC_MASTER
#broker文件地址
flushDiskType = ASYNC_FLUSH 
brokerIP1 = 192.168.1.2 
#是否允许自动创建topic
autoCreateTopicEnable=true

需要注意:borkerIp1需要写成自己服务的ip

在创建如下文件夹:/opt/rocketmq/logs/opt/rocketmq/store,最后创建 docker-compose.yml 文件,配置如下:

代码语言:javascript复制
version: '3'
services:
  namesrv:
    image: rocketmqinc/rocketmq
    container_name: rmqnamesrv
    ports:
      - 9876:9876
    volumes:
      - /opt/rocketmq/logs:/home/rocketmq/logs
      - /opt/rocketmq/store:/home/rocketmq/store
    command: sh mqnamesrv
  broker:
    image: rocketmqinc/rocketmq
    container_name: rmqbroker
    ports:
      - 10909:10909
      - 10911:10911
      - 10912:10912
    volumes:
      - /opt/rocketmq/logs:/home/rocketmq/logs
      - /opt/rocketmq/store:/home/rocketmq/store
      - /opt/rocketmq/conf/broker.conf:/opt/rocketmq/conf/broker.conf
    command: sh mqbroker -n namesrv:9876 -c /opt/rocketmq/conf/broker.conf
    depends_on:
      - namesrv
    environment:
      - JAVA_HOME=/usr/lib/jvm/jre
  console:
    image: styletang/rocketmq-console-ng
    container_name: rocketmq-console-ng
    ports:
      - 8087:8080
    depends_on:
      - namesrv
    environment:
      - JAVA_OPTS= -Dlogging.level.root=info   -Drocketmq.namesrv.addr=rmqnamesrv:9876 
      - Dcom.rocketmq.sendMessageWithVIPChannel=false

注意点

这里需要注意 rocketmq broker 与 rokcetmq-console 都需要与 rokcetmq nameserver 连接,需要知道 nameserver ip。使用 docker-compose 之后,上面三个 docker 容器将会一起编排,可以直接使用容器名代替容器 ip,如这里 nameserver 容器名 rmqnamesrv。

配置完成之后,运行 docker-compose up 启动三个容器,启动成功后,访问 ip:8087,查看 mq 外部控制台,如果可以看到以下信息,rocketmq 服务启动成功。

因为rocker默认需要的xmn、xms、xmx都是比较大的。我们基于当前运行的:rocketmqinc/rocketmq 来把这三个参数设置小

进入到 rmqbroker也就是rocketmqinc/rocketmq容器中。

代码语言:javascript复制
docker exec -it 9e874be84d55 bash

注意:修改容器id为自己的。

因为默认没有vim命令。安装vim

代码语言:javascript复制
yum install supervisor
yum clean all
yum makecache
yum -y install vim

进入到rocketmq-4.4.0中。

我们可以看到这个值很大的。修改-Xms2048m -Xmx2048m -Xmn10248m

修改runserver.sh

代码语言:javascript复制
vim runserver.sh

修改这三个值:

修改完成之后,我们基于这个修改的制作一个新镜像

这个命令是在宿主机中执行的。

制作新镜像命令模板:

代码语言:javascript复制
docker commit -m“提交内容” -a“制作人” 容器id 镜像:TAG

实战命令:

代码语言:javascript复制
docker commit -m "broker xms xmx xmn update" -a "kaigejava" 9e874be84d55 rocketmqinc/rocketmq:xms256

我们重新查看制作的镜像:

我们把当前运行的容器都删除。

代码语言:javascript复制
docker rm -f $(docker ps -qa)

我们重新制作docker-compose.yml

新建一个文件夹

代码语言:javascript复制
mkdir newcompose
cp ../docker-compose.yml docker-compose.yml

重新编辑compose文件:

代码语言:javascript复制
version: '3'
services:
  namesrv:
    image: rocketmqinc/rocketmq
    container_name: rmqnamesrv
    ports:
      - 9876:9876
    volumes:
      - /opt/rocketmq/logs:/home/rocketmq/logs
      - /opt/rocketmq/store:/home/rocketmq/store
    command: sh mqnamesrv
  broker:
    image: rocketmqinc/rocketmq:xms256
    container_name: rmqbroker
    ports:
      - 10909:10909
      - 10911:10911
      - 10912:10912
    volumes:
      - /opt/rocketmq/logs:/home/rocketmq/logs
      - /opt/rocketmq/store:/home/rocketmq/store
      - /opt/rocketmq/conf/broker.conf:/opt/rocketmq/conf/broker.conf
    command: sh mqbroker -n namesrv:9876 -c /opt/rocketmq/conf/broker.conf
    depends_on:
      - namesrv
    environment:
      - JAVA_HOME=/usr/lib/jvm/jre
  console:
    image: styletang/rocketmq-console-ng
    container_name: rocketmq-console-ng
    ports:
      - 8087:8080
    depends_on:
      - namesrv
    environment:
      - JAVA_OPTS= -Dlogging.level.root=info   -Drocketmq.namesrv.addr=rmqnamesrv:9876 
      - Dcom.rocketmq.sendMessageWithVIPChannel=false

在新目录下重启docker-compose up -d

0 人点赞