阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

使用Docker Swarm模式路由网格

199次阅读
没有评论

共计 2844 个字符,预计需要花费 8 分钟才能阅读完成。

版本说明信息

  • 文档来源:Use swarm mode routing mesh
  • 文档由 garyond 翻译和整理

目录

  1. 概述
  2. 发布服务端口
  3. 仅发布 TCP 端口或仅发布 UDP 端口
  4. 配置外部负载均衡

1. 概述

Docker 引擎 Swarm 集群模式使得可以轻松地发布服务端口,使其可用于集群外的资源。所有节点都参与进入路由网。路由网格使得 Swam 集群中的每个节点能够接受在 Swarm 集群中运行的任何服务中已发布端口上的连接,即使节点上没有任何任务正在运行。路由网络将所有接入请求路由到可用节点上的已发布端口到活动容器中。

为了在 Swarm 集群中使用接入网络,在启用 Swarm 集群模式之前,你需要在 Swarm 集群节点之间打开以下端口:

  • 7946 端口,主要用于容器网络发现;
  • 4789 端口,主要用于容器接入发布网络。

你还需要在 Swarm 集群节点和任意外部资源之间打开发布端口,例如外部负载均衡应用,以便于它们能够访问所需要的端口。

2. 发布服务端口

当你创建一个服务时,你可以使用 --publish 参数来发布端口。

# docker service create \
  --name <Service-Name> \
  --publish <Publish-Port>:<Target-Port> \
  <Docker Image>

< 目标端口 > 为 Docker 容器中所监听的端口,< 发布端口 > 为 Swarm 集群中使得服务可以访问的端口。

例如,在 Swarm 集群中发布 Nginx 应用服务,将容器中的 80 端口映射为 Swarm 集群的 8080 端口。

$ docker service create \
  --name my-web \
  --publish 8080:80 \
  --replicas 2 \
  nginx

当你在任何节点上访问 8080 端口时,Swarm 集群的负载均衡会将您的请求路由至活动容器中。

Swarm 集群的路由网络在发布的端口上监听分配给该节点的任何 IP 地址。对于外部可路由的 IP 地址,端口可从主机外部获得。对于其他的 IP 地址,只能从主机中访问。

Ingress Network

使用以下命令可以为已经发布的服务发布端口:

$ docker service update \
  --publish-add <PUBLISHED-PORT>:<TARGET-PORT> \
  <SERVICE>

使用 docker service inspect 查看服务端口。

# docker service inspect --format="" nginx-service

3. 仅发布 TCP 端口或仅发布 UDP 端口

默认情况下,所发布的端口一般为 TCP 端口。你可以专门指定发布 UDP 端口,而不是 TCP 或之外的端口。当发布 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-cahce -p 53:53/udp dns-cache

4. 配置外部负载均衡

可通过配置外部负载均衡实现 Swarm 集群的服务路由。例如,使用 HAProxy 实现已发布端口 8080 的 Nginx 服务的负载均衡。

Load Balance

在这种情况下,必须在 Swarm 集群节点和 HAProxy 之间打开 8080 端口,Swarm 集群节点可以驻留在代理服务器可以访问的专用网络上,但不能公开访问。

我们可以将负载均衡配置为 Swarm 集群中的每个节点之间的请求平衡,即使该 节点上没有计划任务。例如,我们可以在 /etc/haproxy/haproxy.cfg 中配置 HAProxy 的负载均衡。

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

当您在端口 80 上访问 HAProxy 负载均衡服务时,它会将请求转发到 Swarm 集群中的节点。Swarm 集群路由网络将请求路由到活动任务中。如果由于任何原因 swarm 调度程序将任务分派给不同的节点,则不需要重新配置负载均衡。

更多 Docker 相关教程见以下内容

Docker 安装应用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm 

Ubuntu 16.04 服务器上配置使用 Docker  http://www.linuxidc.com/Linux/2017-06/145176.htm 

Ubuntu 15.04 下安装 Docker  http://www.linuxidc.com/Linux/2015-07/120444.htm 

Docker 安装实例 http://www.linuxidc.com/Linux/2017-04/142666.htm 

Docker 创建基础镜像  http://www.linuxidc.com/Linux/2017-05/144112.htm 

在 Ubuntu 15.04 上如何安装 Docker 及基本用法 http://www.linuxidc.com/Linux/2015-09/122885.htm 

Ubuntu 16.04 上 Docker 使用手记 http://www.linuxidc.com/Linux/2016-12/138490.htm 

使用 Docker 分分钟启动常用应用  http://www.linuxidc.com/Linux/2017-04/142649.htm 

Ubuntu 16.04 下 Docker 修改配置文件不生效解决办法  http://www.linuxidc.com/Linux/2017-05/143862.htm 

Docker 的详细介绍:请点这里
Docker 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-11/148370.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2844字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中