kubesphere是青云开源的k8s管理工具,用户可以方便的通过页面进行k8s部署的部署,rocketmq则是阿里开源的一款mq平台,现在版本为5.1.3版本,较比4.x版本的rocketmq有比较大的调整:比如客户端的轻量化(统一通过proxy组件)间接向rocketmq broker发送数据,以及开源任意时间维度的延迟(4.x版本支持指定时间维度的延迟,任意时间维度则需要使用商业版本)。
使用rocketmq面临的最大问题就是文档的匮乏,不看源码都不知道有时怎么实现对应的功能。本文使用rocketmq-docker的rocketmq-k8s-helm为基础部署的rocketmq服务。很简单的helm package进行打包,然后上传到kubesphere即可。纯k8s只需要通过helm install使用上一步打包的压缩包即可实现rocketmq部署。
接下来就是需要将proxy地址暴露在外部了,否则会k8s外部使用会有问题。下面简单介绍下proxy如何暴露端口。
修改proxy的json文件,将grpcServerPort设置为对外暴露端口,k8s常见的30000+端口,示例json如下所示:
{
"enableFlowControl": true,
"enableFlowLimitAction": true,
"grpcClientProducerBackoffInitialMillis": 5,
"grpcClientProducerBackoffMaxMillis": 1000,
"grpcClientProducerBackoffMultiplier": 5,
"longPollingReserveTimeInMillis": 1000,
"maxMessageGroupSize": 64,
"maxMessageSize": 4194304,
"maxUserPropertySize": 16384,
"metricCollectorMode": "proxy",
"namesrvAddr": "rocketmq-nameserver:9876",
"rocketMQClusterName": "DefaultCluster",
"transactionHeartbeatBatchNum": 1,
"userPropertyMaxNum": 128,
"grpcServerPort": 31943
}
这里需要注意的是设置为grpcServerPort端口后,需要同步调整proxy部署的端口,不再是8081,而是设置程31943,如下图所示:
这个地方一定要特别注意,否则无法联通proxy对应服务的,因为监听的grpc端口是31943,否则你telnet 31943端口没有问题,但是就是联不通。