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
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论