• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
思想人生从关注生活开始
博客园    首页    新随笔    联系   管理    订阅  订阅

rabbitmq对外服务端口有那些?在同一k8s节点部署多个rabbitmq服务如何处理

在Kubernetes (k8s) 中部署 RabbitMQ 时,可以通过不同的方式来暴露服务。

RabbitMQ 通常使用以下端口:

- **4369**: 用于 Erlang 分布式节点间的通信(EPMD - Erlang Port Mapper Daemon)。
- **5672/5671**: AMQP 0-9-1 和 1.0 协议的客户端连接端口,其中 5671 用于 TLS 加密连接。
- **15672**: HTTP API 和管理界面的端口。
- **25672**: 节点间通信端口。
- **61613/61614**: STOMP 协议的客户端连接端口,其中 61614 用于 TLS 加密连接。
- **1883/8883**: MQTT 协议的客户端连接端口,其中 8883 用于 TLS 加密连接。

对外服务端口

在 Kubernetes 中,可以通过 `Service` 资源来定义如何将外部流量路由到 RabbitMQ 实例。通常情况下,您会创建一个或多个 `Service` 来公开 RabbitMQ 的不同端口。例如,您可以创建一个 `NodePort` 类型的服务来公开 5672 和 15672 端口,这样外部用户就可以通过这些端口访问 RabbitMQ 的消息队列功能和管理界面了。

 在同一节点部署多个 RabbitMQ 服务

如果您需要在同一节点上运行多个 RabbitMQ 服务实例,那么需要注意避免端口冲突。这里有几种方法可以解决这个问题:

使用不同的端口号:

每个 RabbitMQ 实例可以配置为监听不同的端口。例如,第一个实例可以使用默认端口,而第二个实例则使用一组不同的端口(如 5673, 15673 等)。这需要在启动 RabbitMQ 时指定不同的配置文件或环境变量。

使用 Kubernetes 的 Service 资源:

即使每个 RabbitMQ 实例在内部使用相同的端口,Kubernetes 的 `Service` 可以将外部请求映射到正确的内部端口。例如,两个 `NodePort` 服务可以分别映射到同一个节点上的两个不同 RabbitMQ 实例,每个服务使用不同的 NodePort。

使用 StatefulSet:

对于需要运行多个相同应用实例的情况,使用 `StatefulSet` 是一种常见的做法。`StatefulSet` 为每个 Pod 提供稳定的网络标识符,这意味着即使 Pod 被重新调度,它的网络身份也不会改变。这对于像 RabbitMQ 这样的有状态应用特别有用,因为它们可能需要相互之间进行通信。

通过上述方法,您可以在 Kubernetes 集群中有效地管理和部署多个 RabbitMQ 服务实例,同时确保它们不会因端口冲突而影响正常工作。

posted @ 2024-11-04 10:52  JackYang  阅读(326)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3