You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot + Hazelcast + Kubernetes环境下缓存集群连接异常问题求助

解决Kubernetes环境中Hazelcast二级缓存的Unknown Protocol异常

从你提供的日志和配置来看,这个Unknown protocol: HTT警告的根源很明确:你的Hazelcast节点正在尝试连接到一个非Hazelcast集群端口(这里是9191),而这个端口运行的是HTTP服务,导致Hazelcast无法识别通信协议,最终断开连接。

问题分析

在你的HazelcastConfiguration配置类中,你启用了Kubernetes集群发现机制,但很可能存在以下问题之一:

  • 配置的SERVICE_DNS指向的Kubernetes Service,错误关联到了你的应用服务(而非Hazelcast专用服务),而应用服务的端口是9191(HTTP端口)
  • Hazelcast专用Service的端口映射配置错误,没有指向Hazelcast默认的集群通信端口5701

具体解决方案

1. 检查并修正Hazelcast Kubernetes Service配置

首先确保你有一个专属的Hazelcast Service,而不是复用应用的Service。以下是标准的Hazelcast无头Service配置(适合StatefulSet部署):

apiVersion: v1
kind: Service
metadata:
  name: hazelcast-cluster-service
  namespace: {{你的Hazelcast命名空间}} # 对应staticConfig.getHazelcastNamespace()的取值
spec:
  selector:
    app: hazelcast # 必须匹配Hazelcast Pod的标签
  ports:
    - protocol: TCP
      port: 5701       # Service暴露的端口
      targetPort: 5701 # 容器内Hazelcast监听的端口(默认5701)
  clusterIP: None      # 无头服务,确保Kubernetes DNS能解析到所有Hazelcast Pod

2. 调整Hazelcast发现配置

如果你的Hazelcast Service使用了非默认端口(不推荐,但如果必须的话),需要在Kubernetes发现配置中明确指定端口:

joinConfig.getKubernetesConfig().setEnabled(true)
        .setProperty(HazelcastConstants.NAMESPACE, staticConfig.getHazelcastNamespace())
        .setProperty(HazelcastConstants.SERVICE_DNS, staticConfig.getHazelcastServiceDns())
        .setProperty("service-port", "5701"); // 添加此行,指定集群通信端口

同时确认staticConfig.getHazelcastServiceDns()的值是Hazelcast专属Service的DNS(比如hazelcast-cluster-service.your-namespace.svc.cluster.local),而非应用服务的DNS。

3. 验证Pod端口监听

进入任意Hazelcast Pod,执行以下命令确认Hazelcast在正确端口监听:

netstat -tulpn | grep 5701

如果没有结果,说明Hazelcast启动时端口配置有误,需要检查Hazelcast核心配置。

4. 排除管理中心配置干扰

你的代码中初始化了ManagementCenterConfig但未配置具体URL,虽然这不会直接导致端口错误,但建议明确配置管理中心的地址(如果使用的话),避免和集群通信端口混淆:

config.setManagementCenterConfig(new ManagementCenterConfig()
        .setUrl("http://hazelcast-management-center:8080/hazelcast-mancenter")
        .setEnabled(true));

总结

这个问题本质是集群发现的目标端口错误,只要确保Hazelcast通过Kubernetes发现机制连接到同集群内其他Hazelcast节点的5701端口,就能解决这个协议不匹配的异常。

内容的提问来源于stack exchange,提问作者Keval Panchal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 16:12:38