docker swarm 路由网格

默北 容器docker swarm 路由网格已关闭评论10,028字数 1466阅读4分53秒阅读模式

使用swarm模式路由网格

  • swarm模式可以很容易的将服务端口发布到外部。
  • 所有节点都参入到ingress路由网格。
  • 路由网格使得集群中每个节点都能够接收集群中已发布的服务端口的连接,即使节点上没有运行该任务。
  • 路由网格将所有传入请求路由到发布端口的可用节点的可用容器上。

为了在集群中使用ingress网络,在启用swarm模式之前,集群节点之间需要开放下面端口:

  • 7946 TCP/UDP 用于容器网络发现
  • 4789 UDP 用于容器ingress网络

使用下面的命令来发布已有的服务端口文章源自运维生存时间-https://www.ttlsa.com/docker/docker-swarm-route-grid/

$ docker service update \
  --publish-add <PUBLISHED-PORT>:<TARGET-PORT> \
  <SERVICE>
  • <TARGET-PORT> 是容器监听的端口。
  • <PUBLISHED-PORT> 是集群使服务可用的端口。
# docker service create   --name web   --publish 8080:80   --replicas 2   nginx   
ofxkeuiriuv6za7fj8gxqxih4


# docker service ps web
ID            NAME   IMAGE         NODE      DESIRED STATE  CURRENT STATE               ERROR  PORTS
5ddy9gpri1ua  web.1  nginx:latest  worker2   Running        Running about a minute ago         
211s8s0r7fyg  web.2  nginx:latest  manager1  Running        Running about a minute ago   

当访问任何节点上的8080端口时,集群负载均衡将请求转发到活动的容器。文章源自运维生存时间-https://www.ttlsa.com/docker/docker-swarm-route-grid/

路由网格将发布的端口监听在节点的任何IP地址上。对于外部可路由IP地址,端口可用从主机外部使用。对于所有其他IP地址,仅可在主机内部访问。文章源自运维生存时间-https://www.ttlsa.com/docker/docker-swarm-route-grid/

docker文章源自运维生存时间-https://www.ttlsa.com/docker/docker-swarm-route-grid/

# docker service inspect --format="{{json .Endpoint.Spec.Ports}}" web   
[{"Protocol":"tcp","TargetPort":80,"PublishedPort":8080,"PublishMode":"ingress"}]
  • <TARGET-PORT> 来自容器。
  • <PUBLISHED-PORT> 节点监听服务请求。

配置外部负载均衡

可用配置外部负载均衡将请求路由到集群服务。例如,配置haproxy将请求到发布8080端口的nginx服务。 docker文章源自运维生存时间-https://www.ttlsa.com/docker/docker-swarm-route-grid/

可用配置负载均衡来平衡集群中的每个节点的请求,即使节点上没有该任务。文章源自运维生存时间-https://www.ttlsa.com/docker/docker-swarm-route-grid/

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端口时,会将请求转发到集群中的节点。集群路由网络将请求路由到活动的任务。由于任何原因需要将任务分配到不同的节点,无需更改负载均衡的配置。文章源自运维生存时间-https://www.ttlsa.com/docker/docker-swarm-route-grid/ 文章源自运维生存时间-https://www.ttlsa.com/docker/docker-swarm-route-grid/

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
默北
  • 本文由 发表于 08/05/2017 13:40:05
  • 转载请务必保留本文链接:https://www.ttlsa.com/docker/docker-swarm-route-grid/