本文提供以下实例连接相关的常见问题,供您参考。
说明
连接类问题建议遵循"先实例侧网络、后客户端 SDK"的原则逐层定位,缩小排查范围:
- 验证网络连通性:先参考 网络与接入配置(实例侧) 中的"如何测试实例的连通性",确保实例侧网络已打通。
- 排查客户端接入:若网络正常,依据 客户端接入与消费(SDK 侧) 中的对应报错(如域名校验失败、频繁 Rebalance 等)逐项排查。
- 联动消息侧定位:若表现为"poll 不到消息",且怀疑是消息本身未写入或已过期,可结合 消息收发与存储 FAQ 中的"为什么查询不到消息"一并确认。
创建实例后,不支持修改 VPC和子网。
支持修改实例连接地址的域名前缀,不支持修改端口号。
- 创建实例后,不支持修改实例的公网或私网接入点域名前缀。
- 不支持修改实例的私网 IP 地址或公网 IP 地址,但是可以关闭公网访问后再次开启公网访问,开启时绑定其他 EIP,也可以实现修改公网 IP 地址的效果。
Kafka 客户端访问实例时无需下载并手动配置 SSL 证书,旧证书到期时也无需手动替换新证书,所以您无需担心证书过期风险。通过 SASL_SSL 方式收发消息的流程请参考 Java SDK Demo 中提供的 SASL_SSL 接入点 PLAIN 机制收发消息。 此外,消息队列 Kafka版服务端会维护并定期更新 SSL 证书,保证 SSL 证书的长期可用性。
公网环境可以选择 SASL_SSL 接入点或 SASL_PLAINTEXT 接入点。
您可以根据是否需要 SSL 认证来选择接入点:
- SASL_SSL 接入点:通过 SSL 证书对消息进行鉴权和加密,保障数据传输过程的安全性,防止数据在网络传输过程中被截取或者窃听,相较于普通公网访问方式具备更高的安全性。目前支持客户端对服务端证书的单向认证。
- SASL_PLAINTEXT 接入点:无需 SSL 证书认证,Kafka 客户端代码配置简单便捷。
是否支持跨 VPC 或子网访问 Kafka 实例?
支持。
- 跨 VPC 访问 Kafka 实例可通过云企业网服务实现。您可以通过云企业网实现同账号同地域私有网络实例互通,或同账号跨地域私有网络互通,详细说明请参考快速入门。
- 同一个 VPC 内的子网默认可以进行通信。如果 Kafka 客户端所在的 ECS 实例与 Kafka 实例在同一 VPC 内,默认可以跨子网网段访问。
是否支持跨地域或跨可用区访问 Kafka 实例?
支持。
- 跨地域访问 Kafka 实例时,需要通过公网访问或者设立网络专线实现。
- 如果 Kafka 客户端所在的 ECS 实例与 Kafka 实例位于同一地域的不同可用区,则可以通过私有网络 VPC 或云企业网等方式实现通信。相关限制如下:
- ECS 实例的 IP 地址应在 Kakfa 实例绑定的白名单范围内。配置白名单的操作步骤,请参考创建白名单。
- 如果 ECS 实例与 Kafka 实例位于不同 VPC 内,则需要通过云企业网等方式实现网络互通,详细说明请参考快速入门。
暂不支持通过代理访问消息队列 Kafka 版实例。
您可以通过 Kafka 实例的接入点测试实例的连通性,推荐在同一地域的的 ECS 实例中通过 ping 或者 telnet 命令连接实例的 PLAINTEXT 接入点,测试实例的连通性。
说明
- 测试前,请确认 ECS 实例的 IP 地址在 Kafka 实例的白名单范围内。
- 如果通过公网访问 Kafka 实例的公网接入点,请确保客户端可以访问公网。
当 Kafka 客户端首次接入消息队列 Kafka版时,如果出现连接失败等异常,可参考以下步骤进行排查。
- 在客户端环境中连接 Kafka 实例的接入点,如果连接失败,表示客户端无法连接 Kafka 实例的服务端。该现象主要由以下原因造成:
- Kafka 客户端部署在 ECS 实例中,ECS 实例与 Kafka 实例不在同一个地域或 VPC。此时如果通过 PLAINTEXT 接入点连接实例,则会连接失败,应使用公网接入点进行连接。详细说明请参考使用 SASL_SSL 接入点连接实例。
- 客户端 IP 地址不在 Kafka 实例的白名单范围内。修改白名单的方式,请参考为白名单绑定实例。
说明
您可以参考查看接入点文档,了解不同的实例接入点对网络环境及认证方式的要求,选择正确的接入点进行接入。 - 推荐客户端使用与服务端 Kafka 版本号相匹配的版本。如果客户端的 Kakfa 版本过低,可能出现连接异常等现象。您可以在控制台的实例列表中查看指定实例对应的 Kakfa 版本,并更新对应的客户端版本。
- SASL_SSL 用户账号密码、用户权限等配置错误,也可能导致接入失败。您可以参考消息队列 Kakfa版提供的消息生产与消费 Demo,正确配置相关参数。
为什么私网环境使用 SASL_SSL 接入点连接实例时,报错域名校验失败?
在私网环境中,使用 SASL_SSL 接入点连接 Kafka 实例时,出现类似certificate verify failed的报错信息。
主要原因是在私网环境访问 Kafka 实例,实际是使用 IP 进行业务访问,而 IP 是一个可变的地址,无法在证书里面固定配置。
如果您坚持使用私网地址连接 Kafka 实例,需要在客户端配置ssl.endpoint.identification.algorithm=参数,以关闭证书域名校验。
当您需要使用 SASL_SSL 接入点连接 Kafka 实例时,我们建议您为 Kafka 实例开通公网访问,使用公网访问地址连接实例。如何开通公网访问,请参见配置公网访问。 为什么消费客户端频繁出现分区再均衡(Rebalance)现象?
对接消息队列 Kafka版之后,Consumer 频繁出现分区再均衡的现象,主要原因是 Consumer 没有通过独立线程维持心跳状态、未能及时发送心跳状态,导致 Consumer 超时并离开 Group,引发分区再均衡。
Kafka 客户端支持设置 max.poll.interval.ms 参数,用于指定 Consumer 两次 poll 的最大时间间隔。如果 Consumer 无法在指定的时间范围内消费完拉取的消息,并再次 poll 消息,Kafka 则判定该消费者存在问题,导致客户端主动离开队列,而引发分区再均衡。
您可以通过以下方式防止频繁出现分区再均衡现象:
- 提高客户端的消费速度,例如另外起一个线程用于处理消费逻辑。
- 合理设置 Group 订阅 Topic 的数量。
- 建议一个 Group 只订阅一个 Topic,或者订阅的 Topic 数量控制在 5 个以内。
Consumer poll 消息缓慢或 poll 不到消息
如果 Group 订阅的 Topic 中有消息,但是 Consumer 未消费到最新的消费位点,且 Consumer 从服务端 poll 消息缓慢或 poll 不到消息,可能的原因包括流量触发带宽限制、单个消息体过大、每次 poll 的消息量过大等。
您可以参考以下方案排查处理:
Kafka 支持通过以下参数设置 Consumer 每次 poll 的消息量。