蚂蚁金服Docker网络技术实践

  • 时间:
  • 浏览:0
  • 来源:uu快3规律_uu快3下载地址_窍门

小结

这五种 网路有其他同时点,首先需求是同时的,不是满足容器的跨主机通信的需求,同时ARP的广播会增加网络负担,阿里云当时人的产品上你你你这个点就被防止了,这五种 网络使用的Gossip协议的运维僵化 度,其他无法适应多种docker网络环境,难以满足高性能的网络业务。

在下图中Weave Router含有另二个 的二个 插件,你你你这个插件主要实现了二个 功能,二个 是帮助与其他的宿主机建立gossip协议的链接,从而建立集群的拓扑关系。另外其他就说 帮助跨宿主机的容器通过datapath和VXLAN隧道进行通信。

目前docker之前 提供了开发“利器”,也就说 docker官方提供的开发框架。我们都 在开发时只前要导入有几个包,当容器运行起来,整个插件的服务也就之前 开始运行了,上边前要实现的就说 有几个接口了。也就说 大概我们都 我不要 从零之前 开始造轮子了。

docker和plugin是如可通信有五种 办法 :.sock/.spec/.json。一般我们都 使用的不是sock的办法 。目前蚂蚁金服使用的不是容器的办法 ,另二个 的办法 既可不能否 很方便地对它进行升级,也可不能否 很方便地进行管理。

一、docker网络分析

主要介绍五种 docker网络,Bridge网络、docker原生的Overlay网络以及Weave网络,在这里主要分享一下哪此网络的架构之前 说是形状。

这里简单提一下VXLAN协议,下图中的Inner Enthernet Frame是由容器发出的报文,在经过报文一层层封装之前 ,最后以UDP的办法 发送出去。

在Overlay网络中,每个容器会有两张网卡,其中一张网卡用于与内部内部结构网络进行通信,向内部内部结构网络传输的数据会经由eth1网卡,并通过docker_gwbridge发送出去。之前 是不同宿主机之间的容器你要通信句子,数据之前 通过eth0发送出去。每个overlay网络有独立namespace和br0网桥,在节点组件集群进行通讯时,采用的使用gossip协议来管理节点成员关系、其他通过广播L3Miss防止二层ARP的交互。而不同网桥上的VXLAN设备的作用就说 帮助不同宿主机的容器通过VXLAN隧道直接通信。

VPC Driver

业务上云会有五种 选取,二个 是经典的云环境,另外就说 VPC的环境。之前 我们都 使用的是VPC环境,就可不能否 采用我们都 的你你你这个VPC Driver。其主要实现办法 就说 阿里云提供了自定义路由的办法 ,可不能否 自定义VRouter上的路由,也就说 自定义数据到达VRouter之前 下一跳的路径,之前 是利用专线就可不能否 实现和用户中心的Docker互联。VPC Driver非常适用于在阿里云的VPC上使用docker。

在网桥建立完成之前 ,同二个 宿主机上的不同容器之间就可不能否 通过网桥的转发功能进行通信,其他趋于稳定不同宿主机器上的容器无法直接进行通信,我们都 可不能否 通过iptables SNAT/DNAT和容器外网络进行通信。Bridge网络形状比较简单,其他缺点是不同宿主机之间的容器实在无须在二个 同时的网络中,不同宿主机之间的容器无法进行直接的通信。

VXLAN Driver

VXLAN Driver适用于在阿里云经典云环境上边进行构建应用的场景。你你你这个方案是比较完善的,它将SLB,以及对内和对外的因素都考虑进去了。VXLAN Driver具有独立的IPAM,支持Subnet,进行了MACNAT和ARP带回,什么都有有有在容器上边都看的所有容器的MAC地址不是一样的。比较适用于在阿里云经典VM中运行多docker。

高性能网络实在要做的就说 例如一张智能网卡,用网卡对于协议报文进行加解封装,其他将协议报文直接送到容器上边,宿主机性能没人任何消耗,其他另二个 对于智能网卡功能的扩展也非常容易,就说 会影响宿主机。实现了无论网卡如可,保证容器底层的网络最优。

主要内容提纲

一、docker网络分析

二、docker网络插件开发

三、蚂蚁金服的网络插件实践

Smart Nic Driver

之前 提到的办法 不是在Linux内核中完成的,什么都有有有消耗的是Linux主机的能力,在千兆网络环境下我们都 之前 实在不是疑问,其他在万兆网络中,就会感觉到无法发挥出万兆网络真正的能力。之前 没人SRIOV网络隔离,容器之间网络的影响还是比较大的,另外在各种业务整合的之前 ,前要做流量管控的之前 又将是性能消耗点。

docker Bridge网络

Bridge网络之前 是我们都 最熟悉的网络,如下图所示,HostA和HostB是二个 宿主机,docker运行起来就将在宿主机上创建docker0的网桥作为容器的开关。

docker Weave网络

Weave网络的易用性比较高,什么都有有有更容易上手,其他目前而言,Weave网络的产品系也是比较完善的。Weave网络有五种 实现办法 ,五种 是用户动态的封装实现,另外五种 是内核态的封装实现,这里主要介绍内核态的封装实现。

SRIOV Driver

SRIOV Driver本质上也是VLAN网络,其他目前没人采用Ovs。之前 有其他像DB另二个 的业务对于网络的延迟有更高的要求,才产生了SRIOV Driver。具体的做法就说 将VF虚化出来,直接塞到容器上边去,沿用现实场景中的Bonding模式,使用双活的Bonding模式使得PF和VF两边都可不能否 结合起来。

三、蚂蚁金服网络插件

VLAN Driver VLAN Driver实在是最接近于现有物理网络的驱动插件。在另二个 的方案中,宿主机的管控流量和容器的流量被隔离在二个 不同的VLAN中,采用了Ovs bridge,其他将容器接入到你你你这个Ovs bridge中。为了防止ARP广播风暴其他缓解交换机PPS的巨大压力,采用了ARP带回的策略和大二层的策略,也防止了容器MAC地址表象对于交换机的影响。目前在大每种的企业都选取了VLAN的办法 ,之前 它最适配现有物理网络,对业务影响最小。

二、docker网络插件架构和开发

在介绍阿里云的插件构建之前 ,先给简单我们都 介绍docker网络插件架构和开发通用的CNM模型。如下图所示,这里有二个 docker容器,这里主要有二个 概念Sandbox、Endpoint和Network。Sandbox可不能否 理解为docker内部内部结构运行的namespace,也就说 隔离的网络配置环境;Endpoint实在是虚拟的网卡,它隶属于某二个 network的通讯端口,多个Endpoint也可不能否 在二个 Sandbox中共存;而NetWork就说 所有接在节点上边的Endpoint,也就说 二个 唯一的、可识别的endpoint组。在同二个 Network中的endpoint可不能否 相互通讯,其他其他你创建二个 Frontend和Backendnetwork,其他你你这个个 network是完全隔离的。

在理解你你这个个 概念之前 ,我们都 看一下哪此概念是如可在流程中串联起来的。docker在启动起来不是起到Controller另二个 的角色,当创建Network的之前 ,就会调用newController函数,之前 再调用newSandbox创建namespace,之前 不是调用newEndpoint,使得插件当时人防止如可去创建Endpoint,最后将调用join的办法 ,建立Sandbox和Endpoint的关系,这之前 就大概容器含有了网卡。

docker Overlay网络

对于应用而言,之前 要部署在docker中,基本上都前要面对跨主机互联的疑问,docker提供了原生的Overlay网络,对docker具有良好的支持性。

以下内容根据演讲PPT以及现场分享分发而成。