我完成了这个文档:
https://docs.docker.com/swarm/install-w-machine/
工作正常。
现在,我尝试按照以下文档设置此EC2实例:
https://docs.docker.com/swarm/install-manual/
我在步骤4.设置发现后端
我无法理解我需要做进一步的步骤。
我在EC2中创建了5个节点:manager0,manager1,consul0,node0,node1。现在我需要知道如何使用swarm设置服务发现。
在那个文档中,他们要求我们连接manager0和consul0然后ifconfig,然后将它们作为etc0实例给出。我不知道这是从哪里来的。
最终我需要知道运行此命令的位置(在哪个节点?):
$ docker run -d -p 8500:8500 --name=consul progrium/consul -server -bootstrap
对我的任何建议如何清除此步骤?
答案 0 :(得分:0)
Consul将在您创建的consul0服务器上运行。所以基本上你首先需要能够远程运行worker0和worker1上的docker,这是第3步。更好的方法是直接使用命令编辑守护进程:
sudo echo 'DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"' > /etc/default/docker`
然后重启docker。之后,您会发现可以使用以以下开头的docker命令从master0,master1或防火墙后面的任何其他实例远程运行docker:
docker -H $WORKER0_IPADDRESS:2375
例如,如果你的worker ip地址是1.2.3.4,这将远程运行docker ps命令:
docker -H 1.2.3.4:2375 ps
这就是swarm运行的地方。然后使用你想要运行的命令启动你的consul服务器,你就得到了那个,这就是你在consul0服务器上做任何其他事情,除了在运行你的swarm命令时使用它的IP地址。
因此,如果$ CONSUL0代表您的领事服务器的IP地址,那么您将如何设置其余的swarm。如果您在每个节点的本地计算机上运行它们中的每一个:
在consul0上:
docker run -d -p 8500:8500 --restart=unless-stopped --name=consul progrium/consul -server -bootstrap
在master0和master1上:
docker run --name=master -d -p 4000:4000 swarm manage -H :4000 --replication --advertise $(hostname -i):4000 consul://$CONSUL0:8500
在worker0和worker1上:
docker run -d --name=worker swarm join --advertise=$(hostname -i):2375 consul://$CONSUL0:8500/