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端口没有问题,但是就是联不通。

PS:

另一个需要注意的点是rocketmq-proxy对外端口一定也要使用31943

更多推荐