【问题标题】:docker swarm - etcd cluster is unavailable or misconfigureddocker swarm - etcd 集群不可用或配置错误
【发布时间】:2016-04-02 14:17:36
【问题描述】:

我正在尝试使用 discovery backend 的 etcd 开始使用 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)。还针对 swarm1.programster.org 使用 Ubuntu 14.04 进行了测试。
  • Docker 版本 1.9.1,构建 a34a1d5
  • etcd 版本 2.2.2

【问题讨论】:

  • 您是否通过设置标志 --cluster-advertise--cluster-store 来启动您的 docker 守护进程?
  • @M.Auzias 我将DOCKER_OPTS="--cluster-store=consul://10.1.0.44:8500 --cluster-advertise=eth0:2376" 添加到我的swarm1.programster.org 的/etc/default/docker 文件中并运行sudo service docker restart,但仍然没有运气。我的配置基于this
  • @Programster ps aux|grep dockerdocker info 输出什么?如果您正在寻找多主机网络,我建议您看一下这个分步教程:auzias.net/en/docker-network-multihost(我计划将它添加到 Swarm 文档中——正如 Moxie 通过 twitter 接受的那样),同时,我认为(并希望)您能找到一些有用的信息。
  • @M.Auzias 谢谢。我会在那里挖掘,并首先尝试使用静态文件让一群人去看看这是否有效。

标签: docker etcd docker-swarm


【解决方案1】:

尝试像这样包含端口号:

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

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

【讨论】:

  • 因为没有想到这么简单的事情而自责。
猜你喜欢
  • 2017-11-05
  • 1970-01-01
  • 2017-06-14
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-01
相关资源
最近更新 更多