docker swarm - etcd 集群不可用或配置错误
docker swarm - etcd cluster is unavailable or misconfigured
我正在尝试开始使用 docker swarm,将 etcd 用于 discovery backend。我的 etcd 服务器位于 etcd.programster.org (10.1.0.44),而我的 docker 节点位于 swarm1.programster.org (10.1.0.47)。所有机器都在我本地网络 (10.1.0.x) 上的 Virtualbox 实例上 运行ning。
我设法让我的 etcd 服务器 运行 如下:
MY_IP="10.1.0.44"
./etcd \
-name infra0 \
-initial-advertise-peer-urls http://$MY_IP:2380 \
-listen-peer-urls="http://0.0.0.0:2380,http://0.0.0.0:7001" \
-listen-client-urls="http://0.0.0.0:2379,http://0.0.0.0:4001" \
-advertise-client-urls="http://$MY_IP:2379" \
-initial-cluster-token etcd-cluster-1 \
-initial-cluster infra0=http://$MY_IP:2380 \
-initial-cluster-state new
我可以使用 curl 和 etcd 从 swarm1.programster.org 设置和检索键值。
# setting key with etcdctl
./etcdctl --peers http://etcd.programster.org:4001 set etc://etcd.programster.org/mykey "test"
# setting key with curl
curl -L \
http://etcd.programster.org:4001/v2/keys/mykey \
-XPUT -d value="test"
# retrieving key with etcdctl
./etcdctl --peers http://etcd.programster.org:4001 get etc://etcd.programster.org/mykey
# retrieving key with curl
curl -L http://etcd.programster.org:4001/v2/keys/mykey
但是,每当我 运行 基于群的命令时,例如:
docker run swarm list etcd://10.1.0.44/
或
docker run swarm join --advertise=10.1.0.47:2375 etcd://10.1.0.44/
我总是收到以下错误消息:
[timestamp] client: etcd cluster is unavailable or misconfigured
我是否错误地配置了我的 etcd 服务器,或者我可能需要先在 docker 节点上执行网络配置?为了简单起见,我还没有执行任何 TLS 身份验证,但如果没有这个,swarm 可能无法工作?
上下文
- 所有机器都是 运行ning Debian 8 (3.16.0-4-amd64)。还针对 swarm1.programster.org.
使用 Ubuntu 14.04 进行了测试
- Docker 版本 1.9.1,构建 a34a1d5
- etcd 版本 2.2.2
尝试像这样包含端口号:
docker run swarm join --advertise=10.1.0.47:2375 etcd://10.1.0.44:2379/swarm
我有同样的问题,我假设 docker 会智能地从 "etcd://" 推断端口号 - 我错了。
我正在尝试开始使用 docker swarm,将 etcd 用于 discovery backend。我的 etcd 服务器位于 etcd.programster.org (10.1.0.44),而我的 docker 节点位于 swarm1.programster.org (10.1.0.47)。所有机器都在我本地网络 (10.1.0.x) 上的 Virtualbox 实例上 运行ning。
我设法让我的 etcd 服务器 运行 如下:
MY_IP="10.1.0.44"
./etcd \
-name infra0 \
-initial-advertise-peer-urls http://$MY_IP:2380 \
-listen-peer-urls="http://0.0.0.0:2380,http://0.0.0.0:7001" \
-listen-client-urls="http://0.0.0.0:2379,http://0.0.0.0:4001" \
-advertise-client-urls="http://$MY_IP:2379" \
-initial-cluster-token etcd-cluster-1 \
-initial-cluster infra0=http://$MY_IP:2380 \
-initial-cluster-state new
我可以使用 curl 和 etcd 从 swarm1.programster.org 设置和检索键值。
# setting key with etcdctl
./etcdctl --peers http://etcd.programster.org:4001 set etc://etcd.programster.org/mykey "test"
# setting key with curl
curl -L \
http://etcd.programster.org:4001/v2/keys/mykey \
-XPUT -d value="test"
# retrieving key with etcdctl
./etcdctl --peers http://etcd.programster.org:4001 get etc://etcd.programster.org/mykey
# retrieving key with curl
curl -L http://etcd.programster.org:4001/v2/keys/mykey
但是,每当我 运行 基于群的命令时,例如:
docker run swarm list etcd://10.1.0.44/
或
docker run swarm join --advertise=10.1.0.47:2375 etcd://10.1.0.44/
我总是收到以下错误消息:
[timestamp] client: etcd cluster is unavailable or misconfigured
我是否错误地配置了我的 etcd 服务器,或者我可能需要先在 docker 节点上执行网络配置?为了简单起见,我还没有执行任何 TLS 身份验证,但如果没有这个,swarm 可能无法工作?
上下文
- 所有机器都是 运行ning Debian 8 (3.16.0-4-amd64)。还针对 swarm1.programster.org. 使用 Ubuntu 14.04 进行了测试
- Docker 版本 1.9.1,构建 a34a1d5
- etcd 版本 2.2.2
尝试像这样包含端口号:
docker run swarm join --advertise=10.1.0.47:2375 etcd://10.1.0.44:2379/swarm
我有同样的问题,我假设 docker 会智能地从 "etcd://" 推断端口号 - 我错了。