博主在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