我正在尝试使用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
但是,每当我运行基于群体的命令时,例如:
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吗?
语境
最佳答案
尝试包括以下端口号:
docker run swarm join --advertise=10.1.0.47:2375 etcd://10.1.0.44:2379/swarm
我有同样的问题,我认为 docker 会智能地从“etcd://”推断端口号-我错了。
关于docker - docker swarm-etcd群集不可用或配置错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34498480/