无法为Snowflake Kafka Connector执行Curl命令并创建REST API,分布式连接时出现路由不可达错误
从你提供的进程列表来看,ConnectDistributed已经正常启动,这个错误的核心是curl默认尝试通过IPv6地址(::1)连接Kafka Connect,但你的Connect服务可能只监听了IPv4地址,或者系统IPv6配置存在异常。下面是具体的排查和修复步骤:
1. 先尝试强制curl使用IPv4连接
这是最快的验证方法,直接在curl命令中指定IPv4地址:
curl -4 http://localhost:8083/connectors
或者直接使用127.0.0.1替代localhost:
curl http://127.0.0.1:8083/connectors
如果这个命令能正常返回结果,说明问题确实出在IPv6的解析或监听配置上。
2. 检查并修正Kafka Connect的监听配置
打开你的Connect分布式配置文件(从你的启动路径~/kafka_2.13-2.8.0/bin来看,通常路径是../config/connect-distributed.properties),找到listeners配置项,确保它设置为监听所有IPv4地址:
listeners=http://0.0.0.0:8083
0.0.0.0表示监听服务器上所有可用的IPv4接口,这样无论是用localhost还是127.0.0.1都能正常访问。如果之前配置的是http://::1:8083,那服务只会监听IPv6地址,自然会导致IPv4的curl请求失败。
修改配置后,需要重启ConnectDistributed服务:
# 根据进程号停止服务 kill 1616 # 重新启动分布式Connect ./connect-distributed.sh ../config/connect-distributed.properties
3. 验证Connect服务的实际监听状态
用ss或netstat命令检查8083端口的监听情况,确认服务是否在正确的地址上监听:
# 查看8083端口的监听详情 ss -tulpn | grep 8083
如果输出显示127.0.0.1:8083或0.0.0.0:8083,说明IPv4监听正常;如果只有::1:8083,则证明服务只监听了IPv6,需要调整配置。
4. 调整系统IPv6配置(可选)
如果你的服务器不需要使用IPv6,可以临时禁用它来测试:
# 临时禁用IPv6(需要root权限) sysctl -w net.ipv6.conf.all.disable_ipv6=1 sysctl -w net.ipv6.conf.default.disable_ipv6=1
执行后再尝试curl命令,应该会自动使用IPv4连接。如果需要永久禁用IPv6,可以将上述配置添加到/etc/sysctl.conf文件中,然后执行sysctl -p生效。
内容的提问来源于stack exchange,提问作者Austin Jackson




