docker深入2-熟悉 ingress routing mesh 的工作方式

2017/9/22

1、目的
总所周知,service 通过 ingress load balancing 来发布服务,且 swarm 集群中所有 node 都参与到 ingress 路由网格(ingress routing mesh) 中,访问任意一个 node+PublishedPort 即可访问到服务。
其中负载均衡相关的原理是怎样的呢?
网络流量是怎样流动的呢?
让我们探索一下吧。

2、具体请参考博文,有空翻译一下。
How Docker Swarm Container Networking Works – Under the Hood
https://neuvector.com/blog/docker-swarm-container-networking/

3、划重点
docker 通过 iptables 转发流量,给流量打标签,最后通过 IPVS 模块来做4层负载均衡到后端容器上

主要查看的指令:
docker network inspect ingress
docker network inspect docker_gwbridge

cd /var/run
ln -s /var/run/docker/netns netns
    
ip netns exec ingress_sbox ip a

ip netns exec ingress_sbox iptables -nL -t nat
ip netns exec ingress_sbox iptables -nL -t mangle

ip netns exec ingress_sbox ipvsadm -ln

ZYXW、参考
1、数人云工程师手记 | Docker1.12服务发现,负载均衡和Routing Mesh
http://blog.shurenyun.com/shurenyun-docker-168/
2、How Docker Swarm Container Networking Works – Under the Hood
https://neuvector.com/blog/docker-swarm-container-networking/
3、doc
https://docs.docker.com/engine/swarm/key-concepts/#load-balancing
https://docs.docker.com/engine/swarm/networking/#customize-the-docker_gwbridge
https://docs.docker.com/engine/swarm/ingress/
时间: 2024-10-17 00:00:14

docker深入2-熟悉 ingress routing mesh 的工作方式的相关文章

神奇的 routing mesh - 每天5分钟玩转 Docker 容器技术(100)

接上一节案例,当我们访问任何节点的 8080 端口时,swarm 内部的 load balancer 会将请求转发给 web_server 其中的一个副本. 这就是 routing mesh 的作用. 所以,无论访问哪个节点,即使该节点上没有运行 service 的副本,最终都能访问到 service. 另外,我们还可以配置一个外部 load balancer,将请求路由到 swarm service.比如配置 HAProxy,将请求分发到各个节点的 8080 端口. ingress 网络 当我

09_use swarm mode routing mesh

docker engine swarm mode 可以简单的发布服务的端口,让集群外部可以访问到.所有的节点都在同一个路由网格中.路由网格使每个节点都能够接收到集群上面的任意服务的端口.即使该节点没有任务在跑.路由网格在所有可用的节点上面 路由所有的进入的请求到发布的端口的可用容器上面. 为了能够使用路由网格的功能,你需要在节点间开放以下的协议和端口: 端口 7946   TCP/UDP     容器网络发现 端口 4789   UDP              容器内部网络 在一个服务中发布一

ingress高可用--使用DaemonSet方式部署ingress-nginx

前言 为了配置kubernetes中的ingress的高可用,对于kubernetes集群以外只暴露一个访问入口,需要使用keepalived排除单点问题.需要使用daemonset方式将ingress-controller部署在边缘节点上. 边缘节点 首先解释下什么叫边缘节点(Edge Node),所谓的边缘节点即集群内部用来向集群外暴露服务能力的节点,集群外部的服务通过该节点来调用集群内部的服务,边缘节点是集群内外交流的一个Endpoint. 边缘节点要考虑两个问题 边缘节点的高可用,不能有

Docker容器跨主机通信之:直接路由方式

概述 就目前Docker自身默认的网络来说,单台主机上的不同Docker容器可以借助docker0网桥直接通信,这没毛病,而不同主机上的Docker容器之间只能通过在主机上用映射端口的方法来进行通信,有时这种方式会很不方便,甚至达不到我们的要求,因此位于不同物理机上的Docker容器之间直接使用本身的IP地址进行通信很有必要.再者说,如果将Docker容器起在不同的物理主机上,我们不可避免的会遭遇到Docker容器的跨主机通信问题.本文就来尝试一下. 方案原理分析 由于使用容器的IP进行路由,就

Docker swarm搭建(2)

什么是docker swarm? Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker 中,成为 Docker 的一个子命令.目前,Swarm 是 Docker 社区提供的唯一一个原生支持 Docker 集群管理的工具.它可以把多个 Docker 主机组成的系统转换为单一的虚拟 Docker 主机,使得容器可以组成跨主机的子网网络. Docker Swarm 是一个为 IT 运维团队提供集群和调度能力的编排工具

Ubuntu Docker介绍与安装使用

什么是Docker? docker是一个开源的应用容器引擎,系统级的轻量虚拟化技术. 应用程序的自动化部署解决方案,能够迅速创建一个容器,并在容器上部署和运行应用程序,并通过配置文件可以轻松实现应用程序的自动化安装.部署和升级. docker使用Go语言编写,用cgroup实现资源隔离,容器技术采用LXC,lxc是一种内核虚拟化技术,提供轻量级的虚拟化.lxc是linux内核一个特性,它允许进程或进程组运行在一块独立的空间,并能对其控制.并实现容器与宿主机资源共享. 优点? 1.轻量级资源,容器

Docker3之Swarm

Make sure you have published the friendlyhello image you created by pushing it to a registry. We'll be using that shared image here. Be sure your image works as a deployed container. Run this command, slotting in your info for username, repo, and tag

DockerSwarm 集群环境搭建

一.简介 1. 什么是docker swarm? Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker 中,成为 Docker 的一个子命令.目前,Swarm 是 Docker 社区提供的唯一一个原生支持 Docker 集群管理的工具.它可以把多个 Docker 主机组成的系统转换为单一的虚拟 Docker 主机,使得容器可以组成跨主机的子网网络. Docker Swarm 是一个为 IT 运维团队提供集群和调

lab2:完成一个简单的时间片轮转多道程序内核代码

李俊锋 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.实验目的 1.熟悉.理解Linux内核工作方式 2.尝试编写自己的内核 3.理解多进程时间片轮转的工作方式 二.实验步骤 1.编写时间片轮转程序. 2.运行程序 1 cd LinuxKernel/linux-3.9.4 2 qemu -kernel arch/x86/boot/bzImage 三.代码分析 3.1 myp