09_use swarm mode routing mesh
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了09_use swarm mode routing mesh相关的知识,希望对你有一定的参考价值。
docker engine swarm mode 可以简单的发布服务的端口,让集群外部可以访问到。所有的节点都在同一个路由网格中。路由网格使每个节点都能够接收到集群上面的任意服务的端口。即使该节点没有任务在跑。路由网格在所有可用的节点上面 路由所有的进入的请求到发布的端口的可用容器上面。
为了能够使用路由网格的功能,你需要在节点间开放以下的协议和端口:
端口 7946 TCP/UDP 容器网络发现
端口 4789 UDP 容器内部网络
在一个服务中发布一个端口
--publish
$ docker service create --name <SERVICE-NAME> --publish <PUBLISHED-PORT>:<TARGET-PORT> <IMAGE>
示例:
把内部容器nginx 的80端口发布到外部的8080端口
$ docker service create --name my-web --publish 8080:80 --replicas 2 nginx
当你访问swarm 集群的8080端口,swarm会把你的请求负载均衡到所有可用的容器上面。
路由网格监听分配给节点的任意IP的发布端口。如果是外部的路由IP地址,端口即对外也可以访问。其他的IP地址的访问只对该主机可用。
你可以在一个存在的服务中发布一个端口
$ docker service update --publish-add <PUBLISHED-PORT>:<TARGET-PORT> <SERVICE>
通过以下命令查看发布的端口 $ docker service inspect --format="{{json .Endpoint.Spec.Ports}}" my-web [{"Protocol":"tcp","TargetPort":80,"PublishedPort":8080}]
发布一个单独的TCP端口或者是UDP端口
默认发布的端口是TCP端口,如果你要定义一个UDP端口,可以通过以下配置
只定义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来均衡所有的请求到nginx的外部端口8080
在这种情况下,8080端口必须在负载均衡器和swarm集群之间是开放的。
swarm节点能够存在与一个私有的网络,只能通过代理服务器访问,无法直接对外提供访问。
即使在该节点上面没有任务,你也可以配置负载均衡器均衡所有的请求到每个节点。
例如:如下配置的HAproxy的配置
/etc/haproxy/haproxy.cfg: global log /dev/log local0 log /dev/log local1 notice ...snip... # Configure HAProxy to listen on port 80 frontend http_front bind *:80 stats uri /haproxy?stats default_backend http_back # Configure HAProxy to route requests to swarm nodes on port 8080 backend http_back balance roundrobin server node1 192.168.99.100:8080 check server node2 192.168.99.101:8080 check server node3 192.168.99.102:8080 check
当你访问HAproxy 负载均衡器的80端口,它会转发请求到swarm集群的节点。swarm路由网格会路由请求到可用的节点上面。如果swarm scheduler 调度任务请求到不同的节点上面,你不需要重新配置负载均衡器。
你可以配置任何一种类型的负载均衡器来路由swarm节点的请求。
本文出自 “清风柳絮” 博客,请务必保留此出处http://binuu.blog.51cto.com/801317/1942439
以上是关于09_use swarm mode routing mesh的主要内容,如果未能解决你的问题,请参考以下文章
10_How swarm mode works-How nodes work
Docker Swarm 和Swarm mode 是两个概念!
centos7下安装docker(25docker swarm---replicated mode&global mode)