rocketmq docker集群_阿里云&kubernetes&微服务生产实践-3:rocketmq生产主从容器化

微信公众号:千里行走

头条技术号:实战架构

交流邮箱:hpy253215039@163.com

欢迎关注,一起交流,学习,提高。

本文主要讲述:

rocketmq主从架构的生产级实践,并提供rocketqmq的master-slave结构的生产级容器化配置。

(1).rocketmq生产级镜像制作

(2).rocketmq生产级镜像制作注意事项

(3).rocketmq-console-ng生产级镜像

(4).kubernetes容器化rocketmq生产级主从集群

1.容器化配置文件说明

2.本例配置文件用于生产环境需要的改动

(5).压测容器化rocketmq集群

(附1).相关资源

(附2).rocketmq生产实践相关文章

(1).rocketmq生产级镜像制作

使用rocketmq的master-slave结构。

笔者提供了一个step by step的完整制作流程,位于:

https://github.com/hepyu/rocketmq-docker-image

以rocketmq4.3.2为例:

下载rocketmq4.3.2的二进制包:

wget http://dist.apache.org/repos/dist/release/rocketmq/4.3.2/rocketmq-all-4.3.2-bin-release.zip

git clone https://github.com/hepyu/rocketmq-docker-image.git

解压后的文件夹重命名为rocketmq,放到目录:

rocketmq-docker-image/image-build

然后执行脚本完成镜像制作:

cd sh ./image-build

sh build-4.3.2.sh

(2).rocketmq生产级镜像制作注意事项

1.本镜像基于centos:7, java-1.8.0-openjdk-devel.x86_64制作。

2.镜像名称格式为:rocketmqinc/rocketmq:${ROCKETMQ_VERSION}

如果想修改为其他格式,请执行docker tag tagId newName重新命名,tagId指镜像标识。

3.由于broker集群通过序号标识,所以需要容器化前通过脚本自动的识别当前启动的broker的序号和角色(master/slave)。

修改image-build/scripts/mqbroker,增加:

sh ${ROCKETMQ_HOME}/bin/rewrite-broker-config.sh

在kubernetes容器化时,配置configmap时,配置文件rewrite-broker-config.sh,目的是在broker容器启动前先行修改broker-config配置文件,根据statefulset的pod序号确认brokerName的序号,同时根据pod序号的奇偶数来确定当前container的角色(master/slave)。

0787433576724d9691357fcaae7f499a

上述脚本文件位于:

https://github.com/hepyu/k8s-app-config/blob/master/product/standard/rocketmq-pro/rocketmq-ms-cluster-pro/rocketmq-broker-configmap.yaml

(3).rocketmq-console-ng生产级镜像

使用官方镜像:styletang/rocketmq-console-ng

位于:

https://hub.docker.com/r/styletang/rocketmq-console-ng

https://github.com/apache/incubator-rocketmq-externals/tree/master/rocketmq-console

(4).kubernetes容器化rocketmq生产级主从集群

同样,笔者提供了生产级的yaml配置,位于:

https://github.com/hepyu/k8s-app-config/tree/master/product/standard/rocketmq-pro/rocketmq-ms-cluster-pro

git clone后进入目录直接执行:

kubectl apply -f .

但要注意需要执行两遍,因为namespace刚开始可能还没有初始化,会报错。

本地配置ingress宿主机的host,即可访问rocketmq-console控制台:

Ip pro-rocketmq-c4-k8s.inc.com

f26f1888e1204af081a934ee61fe852b

1.容器化配置文件说明

ea058194f343466a93ebbaea00e329f8

2.本例配置文件用于生产环境需要的改动

修改为2master-2slave-2namesrv的结构。

be9ab31e711344be9926a20a0153264e

(5).压测容器化rocketmq集群

由于之前独立部署rocketmq时已经做过完备的压力测试,所以这里的容器化测试只是看看大概数据而已,并非严格压力测试(资源也不允许),benchmark都是在namesrv上跑的,没有单独划分资源。但是保证cpu和内存和我们独立部署的rocketmq集群是一致的,再次确保生产环境正常。

被压rocketmq集群资源:

a.broker-containers:

2master-2slave共4个container,分布在4个pod,每个container的资源如下:

limits=requests,cpu=4,memory=8G;jvm内存开启,-Xms4g -Xmx4g -Xmn2g

b.namesrv-containers:

共2个container,分布在2个pod,每个container的资源如下:

limits=requests,cpu=1,memory=4G;jvm内存开启,-Xms3g -Xmx3g -Xmn1g

c.console-container:

忽略,不影响压测。

使用rocketmq自带的benchmark压测:

/producer.sh --w=1 --s=1024 --n=rocketmq-c4-namesrv-prod-server-0.rocketmq-c4-namesrv-prod-server.coohua.svc.cluster.local:9876;rocketmq-c4-namesrv-prod-server-0.rocketmq-c4-namesrv-prod-server.coohua.svc.cluster.local:9876

57e4cd5a0cf04bf3b7d80e5494f2a929
94a9888829f74697b5ee532a195abb16

由于我们生产环境用的是阿里云的nas存储,都是SSD,所以效果比我们之前独立部署的非容器化集群要好(用的是物理磁盘);成本也不会增加,严格来讲是减少,因为rocketmq正常情况下不需要很大磁盘空间,而且nas存储是根据实际使用量来计算费用(即使你的PV声明了2TB也是按照使用量来计算),综合下来是更划算些。

测试期间worknode各资源耗费情况:

e461e410405f4326baefd82f25cb824e

(6).TODO LIST

1.重制镜像,增加oracle-jdk8的镜像制作文件,同时集成mysql-client, redis-client和arthas。openjdk坑的一点是没有jstat等各种调试工具。

(附1).相关资源

1.官方rocketmq镜像与容器化

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

2.笔者rocketmq镜像制作

https://github.com/hepyu/rocketmq-docker-image

3.笔者oracle-jdk生产级镜像,包含redis-cli, mysql-cli等基本组件。

https://github.com/hepyu/oraclejdk-docker-image

4.笔者oracle-jdk-skywalking生产级镜像,包含redis-cli, mysql-cli等基本组件,同时集成了链路追踪skywalking-agent。

https://github.com/hepyu/oraclejdk-skywalking-docker-image

(附2).rocketmq生产实践相关文章

rocketmq-1:集群主要结构和监控,性能测试与成本控制

rocketmq-2:性能测试方案&压测&选型&结论

rocketmq-3:rocketmq流控,重试机制与应对

rocketmq-4:线上rocketmq slave节点的ECS宕机恢复实记

rocketmq-5:生产级rocketmq集群部署

a190850ccbc749339f665b12bb849ca6
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值