无法配置AWS MSK Kafka的advertised.listeners,寻求技术解决方案
解决AWS MSK Kafka代理NLB DNS配置报错问题
问题分析
你遇到的两个核心报错:
No security protocol defined for listener INTERNAL:未给自定义的INTERNAL和EXTERNAL监听器指定安全协议映射Invalid entity config: all configs to be added must be in the format "key=val":命令格式错误,shell解析时将配置中的逗号识别为命令分隔符,导致配置格式不合法
解决步骤及具体操作
1. 修正Broker配置命令(关键:给配置内容加引号)
针对Broker 1执行以下命令,注意将--add-config后的所有配置用双引号包裹,避免shell解析错误:
bin/kafka-configs.sh --bootstrap-server b-1.kaffka.6r40l0.c4.kafka.eu-central-1.amazonaws.com:9096 \ --entity-type brokers --entity-name 1 --alter --command-config client.properties \ --add-config "advertised.listeners=[INTERNAL://b-1.kaffka.6r40l0.c4.kafka.eu-central-1.amazonaws.com:9096,EXTERNAL://MSK-kafka-Loadbalancer-25831a7b958a5031.elb.eu-central-1.amazonaws.com:9094],listener.security.protocol.map=INTERNAL:SSL,EXTERNAL:SSL"
针对Broker 2执行同样格式的命令,注意去掉原命令末尾多余的逗号:
bin/kafka-configs.sh --bootstrap-server b-2.kaffka.6r40l0.c4.kafka.eu-central-1.amazonaws.com:9096 \ --entity-type brokers --entity-name 2 --alter --command-config client.properties \ --add-config "advertised.listeners=[INTERNAL://b-2.kaffka.6r40l0.c4.kafka.eu-central-1.amazonaws.com:9096,EXTERNAL://MSK-kafka-Loadbalancer-25831a7b958a5031.elb.eu-central-1.amazonaws.com:9095],listener.security.protocol.map=INTERNAL:SSL,EXTERNAL:SSL"
2. 验证配置是否生效
执行以下命令查看Broker的配置详情,确认advertised.listeners和listener.security.protocol.map已正确设置:
# 查看Broker 1配置 bin/kafka-configs.sh --bootstrap-server b-1.kaffka.6r40l0.c4.kafka.eu-central-1.amazonaws.com:9096 \ --entity-type brokers --entity-name 1 --describe --command-config client.properties # 查看Broker 2配置 bin/kafka-configs.sh --bootstrap-server b-2.kaffka.6r40l0.c4.kafka.eu-central-1.amazonaws.com:9096 \ --entity-type brokers --entity-name 2 --describe --command-config client.properties
3. 后续验证
通过NLB地址测试外部连接,比如列出主题:
bin/kafka-topics.sh --list --bootstrap-server MSK-kafka-Loadbalancer-25831a7b958a5031.elb.eu-central-1.amazonaws.com:9094 --command-config client.properties
注意事项
- 确保
client.properties文件中配置了正确的SSL认证信息(如信任库、密钥库路径及密码),因为监听器使用的是SSL协议 - 确认NLB已正确配置端口转发:9094指向Broker 1的对应端口,9095指向Broker 2的对应端口,且安全组允许相关流量
- 每个Broker的
EXTERNAL监听器端口需与NLB的转发端口一一对应,避免端口冲突
内容的提问来源于stack exchange,提问作者Nextil Men's Essentials
相关产品推荐
相关产品推荐

