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

配置SSL的Redpanda容器与Python Kafka生产者通信失败排查

问题分析与解决方案

问题根源

Redpanda日志中显示的request size {369295621}是异常值,远超过默认的100MB上限,这说明Redpanda将客户端发送的SSL握手数据误判为了Kafka请求,本质是SSL配置存在错误,导致两端的TLS握手流程未正常完成。

排查与修复步骤

1. 校验Redpanda的TLS端口配置

检查/etc/redpanda/redpanda.yml中的kafka_api段,确保9093端口明确启用TLS,且证书路径、双向认证配置正确:

kafka_api:
  - address: 0.0.0.0
    port: 9092
  - address: 0.0.0.0
    port: 9093
    tls: true
    certificate_file: /path/to/broker.crt  # 替换为实际broker证书路径
    private_key_file: /path/to/broker.key   # 替换为实际broker密钥路径
    truststore_file: /path/to/ca.crt        # 双向认证时需指定CA证书
    require_client_auth: true               # 启用客户端证书认证时开启

配置完成后重启Redpanda容器:

docker restart <redpanda-container-name>

2. 修正Python生产者的SSL参数

确保kafka-python客户端的SSL配置完全匹配Redpanda的TLS要求,重点检查证书路径、协议类型:

from kafka import KafkaProducer

producer = KafkaProducer(
    bootstrap_servers=['redpanda:9093'],
    security_protocol='SSL',
    ssl_cafile='/path/to/ca.crt',          # 容器内CA证书路径
    ssl_certfile='/path/to/client.crt',    # 容器内客户端证书路径
    ssl_keyfile='/path/to/client.key',     # 容器内客户端密钥路径
    # 若客户端密钥设置了密码,需添加以下参数
    # ssl_password='your-key-passphrase'
)

注意:容器内证书文件需确保生产者进程有可读权限,可通过chmod 644调整权限。

3. 验证SSL握手有效性

利用已执行的OpenSSL测试结果判断证书与网络连通性:

  • 若执行openssl s_client -connect redpanda:9093 -CAfile /path/to/ca.crt -cert /path/to/client.crt -key /path/to/client.key后显示Verify return code: 0 (ok),说明SSL层面无问题,需检查Kafka客户端的额外配置(如是否指定了错误的端口、协议)。
  • 若握手失败,根据错误提示排查:证书是否过期、CA证书是否匹配客户端/服务端证书、密钥是否与证书对应。

4. 临时调整请求大小(仅用于排查)

若需进一步确认错误细节,可临时调大Redpanda的请求上限配置,添加至redpanda.yml:

kafka_api_max_request_bytes: 209715200  # 调整为200MB

重启后观察日志是否出现更明确的错误提示,但此操作仅为排查手段,核心解决仍需依赖SSL配置修正。

内容的提问来源于stack exchange,提问作者Frederick Yip

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 10:42:40