【发布时间】:2017-03-23 11:13:57
【问题描述】:
更新
我认为罪魁祸首是似乎没有在端口 7946 上监听的主节点。netstat 表明 7946 正在节点上监听,但不是主节点。当我检查节点的系统日志时,我看到以下错误
level=error msg="Failed to join memberlist [10.0.0.12] on retry: 1 error(s) occurred:\n\n* Failed to join 10.0.0.12: dial tcp 10.0.0.12:7946: getsockopt: connection refused"
原帖
我在 AWS 中运行一个三节点 Swarm Mode 集群;一名师傅和两名工人。这是 swarm 模式,不要与 1.12 之前的 docker swarm 混淆。
我使用 docker-machine 创建了所有服务。每台机器都运行 Ubuntu 15.10 和 Docker 1.12.3。
Linux swarm-master-01 4.2.0-42-generic #49-Ubuntu SMP Tue Jun 28 21:26:26 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
使用主节点,我创建了一个具有以下内容的服务
docker service create --replicas 1 --name myapp -p 3000 myapp
当我运行 docker service ps myapp 时,我得到以下输出
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
02awst8p9pezgpkfzqgz8z79t myapp.1 myapp:latest swarm-node-01 Running Running 19 minutes ago
正在运行的任务部署到 swarm-node-01。
我检查了公开发布的自动选择端口
$ docker service inspect myapp | jq .[].Endpoint.Ports[].PublishedPort
30000
外部组件(例如云负载平衡器)可以访问集群中集群中任何节点的 PublishedPort 上的服务,无论该节点当前是否正在运行该服务的任务。 swarm 中的所有节点将入口连接路由到正在运行的任务实例。
但是当我尝试卷曲没有运行任务的节点时,我得到connection refused。
$ curl $(docker-machine ip swarm-node-01):30000/stats
{"uptime":"2016-11-09T14:48:35Z","requestCount":7,"statuses":{"200":7},"pid":1,"open_db_conns":0}
$ curl $(docker-machine ip swarm-node-02):30000/stats
curl: (7) Failed to connect to [the IP] port 30000: Connection refused
注意:我清理了 node-02 的 IP
我的疑难解答:
- 节点都正确连接到集群
- 将服务扩展到 5 个(本质上将任务部署到每个节点)使 curl 在每个节点上工作,因为任务被部署到每个节点。
更新 1
我用
初始化了 swarmdocker swarm init --advertise-addr 10.0.0.12:2377 --listen-addr 10.0.0.12:2377
我从节点检查了系统日志,发现以下错误
level=error msg="Failed to join memberlist [10.0.0.12] on retry: 1 error(s) occurred:\n\n* Failed to join 10.0.0.12: dial tcp 10.0.0.12:7946: getsockopt: connection refused"
我检查了入口端口是否正在侦听,但似乎没有
ubuntu@swarm-master-01:~$ sudo lsof -i :7946
ubuntu@swarm-master-01:~$ cat < /dev/tcp/10.0.0.12/7946
-bash: connect: Connection refused
-bash: /dev/tcp/10.0.0.12/7946: Connection refused
ubuntu@swarm-master-01:~$ cat < /dev/tcp/0.0.0.0/7946
-bash: connect: Connection refused
-bash: /dev/tcp/0.0.0.0/7946: Connection refused
【问题讨论】:
-
你运行的是什么版本的 Docker?能否连接到节点 2 并检查
netstat -lnt以查看端口是否正在侦听? -
你用什么命令来发起和加入swarm?您使用的是什么操作系统?
-
我用我做过的其他事情更新了帖子
-
netstat -lnt 显示 7946 正在侦听节点,而不是主节点。节点系统日志显示
level=error msg="Failed to join memberlist [10.0.0.12] on retry: 1 error(s) occurred:\n\n* Failed to join 10.0.0.12: dial tcp 10.0.0.12:7946: getsockopt: connection refused" -
加入什么命令?什么操作系统? 30000 端口在监听吗?
标签: docker docker-swarm