【发布时间】: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 docker和docker info输出什么?如果您正在寻找多主机网络,我建议您看一下这个分步教程:auzias.net/en/docker-network-multihost(我计划将它添加到 Swarm 文档中——正如 Moxie 通过 twitter 接受的那样),同时,我认为(并希望)您能找到一些有用的信息。 -
@M.Auzias 谢谢。我会在那里挖掘,并首先尝试使用静态文件让一群人去看看这是否有效。
标签: docker etcd docker-swarm