在docker下安装rocketmq【docker-compose】方式安装
- Docker
- 时间:2022-10-18 12:01
- 3907人已阅读
🔔🔔🔔好消息!好消息!🔔🔔🔔
有需要的朋友👉:联系凯哥
最近学习使用 rocketmq,需要搭建 rocketmq 服务端,本文主要记录 rocketmq 搭建过程以及这个过程踩到的一些坑。
准备工作
在搭建之前,我们需要做一些准备工作,这里我们需要使用 docker 搭建服务,所以需要提前安装 docker。此外,由于 rocketmq 需要部署 broker 与 nameserver ,考虑到分开部署比较麻烦,这里将会使用 docker-compose。
1:先创建rocketmq的booker配置文件
文件放置到 /opt/rocketmq/conf
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 文件,配置如下:
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容器中。
docker exec -it 9e874be84d55 bash
注意:修改容器id为自己的。
因为默认没有vim命令。安装vim
yum install supervisor yum clean all yum makecache yum -y install vim
进入到rocketmq-4.4.0中。
我们可以看到这个值很大的。修改-Xms2048m -Xmx2048m -Xmn10248m
修改runserver.sh
vim runserver.sh
修改这三个值:
修改完成之后,我们基于这个修改的制作一个新镜像
这个命令是在宿主机中执行的。
制作新镜像命令模板:
docker commit -m“提交内容” -a“制作人” 容器id 镜像:TAG
实战命令:
docker commit -m "broker xms xmx xmn update" -a "kaigejava" 9e874be84d55 rocketmqinc/rocketmq:xms256
我们重新查看制作的镜像:
我们把当前运行的容器都删除。
docker rm -f $(docker ps -qa)
我们重新制作docker-compose.yml
新建一个文件夹
mkdir newcompose cp ../docker-compose.yml docker-compose.yml
重新编辑compose文件:
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