官方方法安装RocketMQ集群(docker-compose)

网上有很多第三方的写法,其实官方本来提供了一个项目,只是年代有点久远,不过(经过简单修改)还是可以用的,地址如下

https://github.com/apache/rocketmq-docker

1.构建镜像

以下指令均为root账号下执行,并且安装好docker环境

#下载
wget -O rocketmq-docker.zip https://github.com/apache/rocketmq-docker/archive/refs/heads/master.zip

#解压
unzip rocketmq-docker.zip

按照项目首页说明,先要进行 Image Build
后面两个参数是需要构建的MQ版本,使用的基础镜像(centos, alpine)

cd rocketmq-docker-master/image-build
sh build-image.sh 4.8.0 alpine

期间会下载镜像,也会下载主程序,有点慢,等吧。
漫长的等待....

看到类似信息就完成了

Successfully built d8d1c5e4f5e4
Successfully tagged apacherocketmq/rocketmq:4.8.0-alpine

以下指令可以验证以下

docker images | grep rocketmq
apacherocketmq/rocketmq                         4.8.0-alpine   d8d1c5e4f5e4   47 seconds ago   145MB

#只有一个镜像,namesvr和broker 是通过不同指令来启动的

2.构建Stage(部署方案?)

上面执行完之后,可以获取一个可用镜像,现在需要生成各种部署方案

##按项目首页说明是提供以下4中部署方案,这里选取第二种【集群模式,docker】部署
1. Single Node
2. Cluster with docker-compose
3. Cluster on Kubernetes
4. Cluster of Dledger storage

生成各种部署方案

sh stage.sh 4.8.0

以下为输出
Stage version = 4.8.0
mkdir /home/darin/rocketmq-docker-master/stages/4.8.0
staged templates into folder /home/darin/rocketmq-docker-master/stages/4.8.0

进入目录
cd stages/4.8.0/templates
ls
大概能看到以下内容
data            kubernetes        play-docker-compose.sh  play-docker.sh      play-kubernetes.sh  ssl
docker-compose  play-consumer.sh  play-docker-dledger.sh  play-docker-tls.sh  play-producer.sh

上述的sh文件分别各个部署方案的启动文件

3.调整部署文件

在 docker-compose 目录内能看到 docker-compose.yml,分别定义了

  • namesrv
  • broker
  • broker1

做如下调整

  • 调整镜像版本号(原来的是错误,4.8.0 --> 4.8.0-alpine)
  • 为方便查看,把broker 改名 broker-a, broker1 改名 broker-b
  • 为区分数据,data目录给 namesrv 使用,broker-a 对应 data-a, broker-b 对应 data-b
  • 修改相关配置文件(让broker识别主机ip,修改broker-b默认端口)

调整后如下

version: '2'
services:
  #Service for nameserver
  namesrv:
    image: apacherocketmq/rocketmq:4.8.0-alpine
    container_name: rmqnamesrv
    ports:
      - 9876:9876
    volumes:
      - ./data/namesrv/logs:/home/rocketmq/logs
    command: sh mqnamesrv

  #Service for broker
  broker-a:
    image: apacherocketmq/rocketmq:4.8.0-alpine
    container_name: rmqbroker-a
    links:
      - namesrv
    ports:
      - 10909:10909
      - 10911:10911
      - 10912:10912
    environment:
      - NAMESRV_ADDR=namesrv:9876
    volumes:
      - ./data-a/broker/logs:/home/rocketmq/logs
      - ./data-a/broker/store:/home/rocketmq/store
      - ./data-a/broker/conf/broker.conf:/opt/rocketmq-4.8.0/conf/broker.conf
    command: sh mqbroker -c /opt/rocketmq-4.8.0/conf/broker.conf

  #Service for another broker -- broker1
  broker-b:
    image: apacherocketmq/rocketmq:4.8.0-alpine
    container_name: rmqbroker-b
    links:
      - namesrv
    ports:
      - 10809:10809
      - 10811:10811
      - 10812:10812
    environment:
      - NAMESRV_ADDR=namesrv:9876
    volumes:
      - ./data-b/broker/logs:/home/rocketmq/logs
      - ./data-b/broker/store:/home/rocketmq/store
      - ./data-b/broker/conf/broker.conf:/opt/rocketmq-4.8.0/conf/broker.conf
    command: sh mqbroker -c /opt/rocketmq-4.8.0/conf/broker.conf

修改stages/4.8.0/templates/docker-compose里的目录

mv data1 data-a
cp -r data-a data-b

相应地,play-docker-compose.sh里prepare_dir也需要做对应修改

dirs=("docker-compose/data/namesrv/logs" "docker-compose/data-a/broker/logs" "docker-compose/data-a/broker/store" "docker-compose/data-b/broker/logs" "docker-compose/data-b/broker/store")

修改配置文件,目的主要是

  • 让broker识别出主机ip,用于上报到namesrv
  • 修改broker-b的启动端口,避免上报时候信息出错
#data-a
#/data-a/broker/conf/broker.conf
#增加一行
brokerIP1 = 192.168.10.97

#/data-b/broker/conf/broker.conf
#修改broker name(因为是copy回来的 需要改名)
brokerName = broker-b
#增加
brokerIP1 = 192.168.10.97
#Broker 对外服务的监听端口
listenPort = 10811
#haService中使用
haListenPort=10812
#主要用于slave同步master
fastListenPort=10809

执行启动脚本

./play-docker-compose.sh
#看到类似输出则启动成功
Removing RocketMQ Container...
35fb42d81419
bae114ad9858
9584de98563e
Creating rmqnamesrv ... done
Creating rmqbroker-b ... done
Creating rmqbroker-a ... done

#验证
docker ps | grep rocket
0917c71a77c3   apacherocketmq/rocketmq:4.8.0-alpine         "sh mqbroker -c /opt…"   3 minutes ago   Up 3 minutes    9876/tcp, 0.0.0.0:10929->10909/tcp, 0.0.0.0:10931->10911/tcp, 0.0.0.0:10932->10912/tcp   rmqbroker-b
494a1091445c   apacherocketmq/rocketmq:4.8.0-alpine         "sh mqbroker -c /opt…"   3 minutes ago   Up 3 minutes    0.0.0.0:10909->10909/tcp, 9876/tcp, 0.0.0.0:10911-10912->10911-10912/tcp                 rmqbroker-a
d61cf9077851   apacherocketmq/rocketmq:4.8.0-alpine         "sh mqnamesrv"           3 minutes ago   Up 3 minutes    10909/tcp, 0.0.0.0:9876->9876/tcp, 10911-10912/tcp

#同时,现在也可以直接用docker-compose去操作了
docker-compose -f docker-compose.yml restart

安装rocketmq-console

docker run -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.10.97:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 18080:8080 -t  -d styletang/rocketmq-console-ng 

安装完成后可以访问 主机IP:18080,至此,部署结束

本部署方案为开发环境部署,线上环境请部署多个namesrv做集群,另外,文中多次出现192.168.10.97为主机IP,请按实际情况修改

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容