docker swarm - etcd群集不可用或配置错误

时间:2015-12-28 18:06:21

标签: docker etcd docker-swarm

我尝试使用etcd为discovery backend开始使用docker swarm。我的etcd服务器位于etcd.programster.org(10.1.0.44),而我的docker节点位于swarm1.programster.org(10.1.0.47)。所有计算机都在我的本地网络(10.1.0.x)上的Virtualbox实例上运行。

我设法使用以下内容运行我的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

但是,每当我运行基于swarm的命令时,例如:

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将无法运行吗?

上下文

  • 所有机器都在运行Debian 8(3.16.0-4-amd64)。还使用Ubuntu 14.04对swarm1.programster.org进行了测试。
  • Docker版本1.9.1,构建a34a1d5
  • etcd version 2.2.2

1 个答案:

答案 0 :(得分:3)

尝试包含如下端口号:

docker run swarm join --advertise=10.1.0.47:2375 etcd://10.1.0.44:2379/swarm

我有同样的问题,我假设docker会智能地从“etcd://”推断出端口号 - 我错了。