看下面的例子:
1.创建用户定义的覆盖网络:
sudo docker network create overlay1 --driver overlay
9g4ipjn513iy overlay1 overlay swarm
2.运行具有公开端口和 3 个副本的服务:
sudo docker service create --name nginx --replicas 3 --publish 80:80 --network overlay1 nginx
你不必指定endpoint-mode
如果你要使用VIP
,其默认值。
sudo docker service ps nginx
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
dbz8b4jjfp6xg3vqunt1x8shx nginx.1 nginx dg1 Running Running 13 minutes ago
9d8zr6zka0sp99vadr8eqq2t2 nginx.2 nginx dg3 Running Running 13 minutes ago
cwbcegunuxz5ye9a8ghdrc4fg nginx.3 nginx dg3 Running Running 12 minutes ago
3.验证:
从节点之一测试暴露的端口:
administrator@dg1:~$ telnet localhost 80
Trying ::1...
Connected to localhost.
Escape character is '^]'.
测试来自外部主机的暴露端口:
user@externalhost /home/balrog% telnet dg1 80
Trying 172.30.135.101...
Connected to 172.30.135.101.
Escape character is '^]'.
从容器内部测试 DNS 查找:
sudo docker exec -it 05d05f934c68 /bin/bash
root@05d05f934c68:/# ping nginx
PING nginx (10.0.0.3): 56 data bytes
64 bytes from 10.0.0.3: icmp_seq=0 ttl=64 time=0.050 ms
64 bytes from 10.0.0.3: icmp_seq=1 ttl=64 time=0.121 ms
root@05d05f934c68:/# ping tasks.nginx
PING tasks.nginx (10.0.0.5): 56 data bytes
64 bytes from 10.0.0.5: icmp_seq=0 ttl=64 time=0.037 ms
64 bytes from 10.0.0.5: icmp_seq=1 ttl=64 time=0.149 ms
ElasticSearch具体建议:
Elasticsearch 有自己的集群,可以提供Failover
and Loadbalancing
特征。
您可以使用shards
and replicas
per index
在属于elasticsearch集群一部分的elasticsearch主机中。
话虽这么说,我建议你创建 3 个Services
with 1 replica
每个,然后加入一个elasticsearch集群,然后创建indexes
with 3 shards
and 3 replicas
。你将会拥有loadbalancing
and failover
在elasticsearch集群内。
阅读更多有关shards
, Use this https://www.elastic.co/guide/en/elasticsearch/reference/current/_basic_concepts.html.