docker群 – etcd群集不可用或configuration错误

我正在尝试开始使用etcd作为发现后端的 docker swarm。 我的etcd服务器位于etcd.programster.org(10.1.0.44),而我的docker节点位于swarm1.programster.org(10.1.0.47)。 所有机器都在本地networking(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 

我有没有错误地configuration我的etcd服务器,或者有一个networkingconfiguration,我需要先在docker节点上执行? 我还没有执行任何TLS身份validation,但为简单起见,但也许群没有这个工作将无法正常工作?

上下文

  • 所有的机器都运行Debian 8(3.16.0-4-amd64)。 还使用Ubuntu 14.04为swarm1.programster.org进行了testing。
  • Docker版本1.9.1,构builda34a1d5
  • etcd版本2.2.2

尝试包括像这样的端口号:

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

我有同样的问题,我认为docker会聪明地从“etcd://”推断端口号 – 我错了。