Linux bashrc配置全局代理导致etcd连接失败问题及解决
作者:LorraineWen
作者在Ubuntu上通过Docker安装etcd时,由于在~/.bashrc中设置了全局代理,导致etcd连接失败,因为代理不会转发内部流量,etcd容器无法正常通信和选举Leader
Linux bashrc配置全局代理导致etcd连接失败
博主在Ubuntu上面通过Docker安装了etcd,结果一直连接失败:

问题排查
最后发现竟然是clash代理导致的问题。
由于博主在~/.bashrc中设置了全局代理,通过export命令将环境变量(如HTTP_PROXY)写入当前 shell 环境。
这会导致所有通过该 shell 启动的进程,包括etcd服务端和客户端,都会继承这些代理设置,也就是说这些环境变量会被Docker 继承,除非在docker run或docker-compose.yml中明确覆盖或删除它们。
etcd 容器内部会尝试通过这些代理地址访问集群节点(包括localhost、127.0.0.1、容器 IP),但代理根本不会转发这些内部流量,于是就会出现问题:
- 客户端连接超时
- 节点间通信失败
- 集群无法选举 Leader
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
