33. docker swarm 集群服务通信 之 RoutingMesh - Ingress 网络

Posted zonehoo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了33. docker swarm 集群服务通信 之 RoutingMesh - Ingress 网络相关的知识,希望对你有一定的参考价值。

1.作用

  当在 任何 一个 swarm 节点去访问 端口服务的时候 会通过 本节点 的 IPVS ( ip virtual service ) 到 真正的 swarm 节点上

  当访问 docker host 3 的 端口 8080 时, 会把 请求转发到 另外两台host 上去 , 然后把 响应返回给用户

技术图片

 

2. 功能

  外部访问的均衡负载

  服务端口被暴露到哥哥swarm节点

  内部通过 IPVS 进行均衡负载

3. 实验

  创建 一个 名为 demo 的 overlay 网络 另外 创建 client service 和 whoami service 服务

    docker network create -d overlay demo

    docker service create --name whoami -p 8000:8000 --network demo -d jwilder/whoami

    docker service create --name client -d --network demo busybox sh -c ‘while true; do sleep 3600; done‘

  将 whoami 服务拓展为 两个容器

    docker service scale whoami=2

  查看 whoami 的运行情况 

    docker service ps whoami

技术图片

  curl 访问 whoami 容器  无论在哪台服务器上

    curl 127.0.0.1:8000技术图片

  查看 iptables 转化的规则  发现 通过 tcp udp 访问 8000 端口 时 转发到 172.18.0.2

    sudo iptables -nL -t nat

技术图片

  在 docker host (任意服务器都行) 上 查看 ip 发现  

技术图片

  查看  docker_gwbridge 的 interface (查看 docker_gwbridge 的 网桥)

    brctl show 

  查看 docker_gwbridge 内 所包含的 容器 (发现 外部请求的数据 发到 ingress-sbox 内了)

    docker network inspect docker_gwbridge

技术图片

  查看并进入 ingress_sbox

    sudo ls /var/run/docker/netns    (查看 ingress 位置)

技术图片

    sudo nsenter --net=/var/run/docker/netns/ingress_sbox  (进入 ingress_sbox)

技术图片

  在 ingress_sbox 内 查看 iptables 

    iptables -nL -t mangle    可看出 发送到 该 ip 地址下的8000 端口的请求被均衡负载掉了 (红框的 MARK 内为负载均衡)

技术图片

  

 

4. 演示 ipvs

  在 docker host 安装 ipvsadm

    sudo yum install -y ipvsadm

  进入 ingress_sbox

    sudo nsenter --net=/var/run/docker/netns/ingress_sbox

  使用 ipvsadmin 查看 请求到 的 有效 ip 地址 及 权重 等信息

技术图片

  查看 docker-node2 内的 whoami 的 网络地址

    docker ps  查询 container id

    docker exec [container id] ip a

技术图片

技术图片

  可以看出 与 ipvsadm ls 能对应上

 

5.总体流程

技术图片

 

    

以上是关于33. docker swarm 集群服务通信 之 RoutingMesh - Ingress 网络的主要内容,如果未能解决你的问题,请参考以下文章

Docker之swarm v1集群创建

docker swarm 集群服务编排部署指南(docker stack)

"三剑客”之Swarm集群架构集群管理 服务管理

Docker 三剑客之 Docker Swarm

Docker集群实验环境布署--swarm3 注册服务监控与自动发现组件--consul

docker——三剑客之Docker swarm