Linux入门教程:管理swarm(12) – swarm实践 –使用swarm模式的routing mesh路由请求,所以的节点都参与到r
Linux入门教程:管理swarm(12) – swarm实践 –使用swarm模式的routing mesh路由请求,所以的节点都参与到r
Docker Engine的swarm模式使得服务发布端口让服务在swarm外部可用变得容易。所以的节点都参与到routing mesh中,意味着任何的节点(即使该节点没有服务在运行)都可以作为入口,都能路由请求。
为了能在swarm中使用ingress网络,你需要在节点之间开放如下端口:
当然你也必须在swarm节点之间和做任意外部资源(如外部负载均衡)之间开放published端口。
发布服务端口
在创建服务时使用–publish参数来发布一个端口:
$ docker service create \ --name <SERVICE-NAME> \ --publish <PUBLISHED-PORT>:<TARGET-PORT> \ <IMAGE>
例如,以下的命令是发布nginx容器内的80端口到swarm所有节点的8080端口:
当你访问任意节点的8080端口,swarm的负载均衡会把你的请求路由到一个任意节点的可用的容器上。routing mesh在swarm节点的所有IP上监听published端口。
你可以使用以下命令来为已存在的服务发布一个端口:
使用docker service inspect来查看服务的published端口。如:
$ docker service inspect --format="" my-web [{"Protocol":"tcp","TargetPort":80,"PublishedPort":8080}]发布一个TCP端口或UDP端口
默认情况下,以上发布的端口都是TCP端口。你可以指定发布一个UDP端口。当你TCP和UDP两个端口都发布时,Docker 1.12.2及更早版本要求你为TCP端口添加/tcp后缀。
只发布TCP端口
下面的两个命令是一样的。
$ docker service create --name dns-cache -p 53:53 dns-cache $ docker service create --name dns-cache -p 53:53/tcp dns-cache发布TCP和UDP端口
$ docker service create --name dns-cache -p 53:53/tcp -p 53:53/udp dns-cache只发布UDP端口
$ docker service create --name dns-cache -p 53:53/udp dns-cache配置一个外部负载均衡
你可以配置一个外部负载均衡来路由请求到swarm服务。例如,你可以配置HAProxy来路由请求到一个published端口为8080的nginx服务。
在这个示例中,在负载均衡和所有swarm节点之间需要开放8080端口。
你可以配置负载均衡负载请求到swarm的任何节点。例如HAProxy的配置文件/etc/haproxy/haproxy.cfg:
当你访问HAProxy负载均衡的80端口时,它会把你的请求转发到swarm节点。然后swarm节点的routing mesh把请求路由到一个可用的服务上。
评论暂时关闭