蚂蚁金服Docker网络技术实践

简介: 在2016云栖大会杭州峰会容器技术专场上,蚂蚁金服高级技术专家辺客分享了在docker网络技术领域的探索和实践。他从对于三种docker网络的分析入手,带领大家了解了docker网络插件的开发,最后分享了蚂蚁金服网络插件开发的实践经验,深入浅出地分享了docker网络插件的各种架构。

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


主要内容提纲
一、docker网络分析
二、docker网络插件开发
三、蚂蚁金服的网络插件实践


一、docker网络分析
主要介绍三种docker网络,Bridge网络、docker原生的Overlay网络以及Weave网络,在这里主要分享一下这些网络的架构或者说是结构。


docker Bridge网络
Bridge网络可能是大家最熟悉的网络,如下图所示,HostA和HostB是两个宿主机,docker运行起来就将在宿主机上创建docker0的网桥作为容器的开关。

bf8e91215ae1f05b6750dce9a40c1a64f647961f

在网桥建立完成之后,同一个宿主机上的不同容器之间就可以通过网桥的转发功能进行通信,但是位于不同宿主机器上的容器无法直接进行通信,他们可以通过iptables SNAT/DNAT和容器外网络进行通信。Bridge网络结构比较简单,但是缺点是不同宿主机之间的容器其实并不在一个共同的网络中,不同宿主机之间的容器无法进行直接的通信。


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

5be4fbd9c3d77ec96580b89eb8f62f244e196747

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

4ace1447d40248ceb3b41531f62a02b9df2430d6

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


docker Weave网络
Weave网络的易用性比较高,所以更容易上手,而且目前而言,Weave网络的产品系也是比较完善的。Weave网络有两种实现方式,一种是用户动态的封装实现,另外一种是内核态的封装实现,这里主要介绍内核态的封装实现。

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

e9899eefb2ef1d3518f9d99e9978aaca0a6e478e

小结
这三种网路有一些共同点,首先需求是共同的,都要满足容器的跨主机通信的需求,同时ARP的广播会增加网络负担,阿里云自己的产品上这一点就被解决了,这三种网络使用的Gossip协议的运维复杂度,而且无法适应多种docker网络环境,难以满足高性能的网络业务。


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

b2976df9df8e460e6ad28d7fc172aaa5e77e29de

在理解这三个概念之后,我们看一下这些概念是如何在流程中串联起来的。docker在启动起来时会起到Controller这样的角色,当创建Network的时候,就会调用newController函数,之后再调用newSandbox创建namespace,之后还会调用newEndpoint,使得插件自己处理如何去创建Endpoint,最后将调用join的方法,建立Sandbox和Endpoint的关系,这时候就相当于容器中有了网卡。

b889a876695e2f14062ac411925898f2f038a8cb

目前docker已经提供了开发“利器”,也就是docker官方提供的开发框架。大家在开发时只需要导入几个包,当容器运行起来,整个插件的服务也就开始运行了,后面需要实现的就是几个接口了。也就是相当于大家不用从零开始造轮子了。

524e0d2bf42aa622959e312b99e9f7690516dcbc

docker和plugin是如何通信有三种方式:.sock/.spec/.json。一般大家使用的都是sock的方式。目前蚂蚁金服使用的都是容器的方式,这样的方式既可以很方便地对它进行升级,也可以很方便地进行管理。


三、蚂蚁金服网络插件
VLAN Driver
VLAN Driver其实是最接近于现有物理网络的驱动插件。在这样的方案中,宿主机的管控流量和容器的流量被隔离在两个不同的VLAN中,采用了Ovs bridge,并且将容器接入到这个Ovs bridge中。为了避免ARP广播风暴并且缓解交换机PPS的巨大压力,采用了ARP带回的策略和大二层的策略,也避免了容器MAC地址表象对于交换机的影响。目前在大部分的企业都选择了VLAN的方式,因为它最适配现有物理网络,对业务影响最小。

d0ece23fae501a8d7e871f0abb7c0e4794a5166d

SRIOV Driver
SRIOV Driver本质上也是VLAN网络,但是目前没有采用Ovs。因为有一些像DB这样的业务对于网络的延迟有更高的要求,才产生了SRIOV Driver。具体的做法就是将VF虚化出来,直接塞到容器里面去,沿用现实场景中的Bonding模式,使用双活的Bonding模式使得PF和VF两边都可以结合起来。

02b00e1cacfced1d862cd17062b30519e5157202

VPC Driver
业务上云会有两种选择,一个是经典的云环境,另外就是VPC的环境。如果大家使用的是VPC环境,就可以采用我们的这种VPC Driver。其主要实现方式就是阿里云提供了自定义路由的方式,可以自定义VRouter上的路由,也就是自定义数据到达VRouter之后下一跳的路径,如果是利用专线就可以实现和用户中心的Docker互联。VPC Driver非常适用于在阿里云的VPC上使用docker。

cb9c0f1507ed2381786bcd47b5fab6d6f8fb8caa

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

975ac8ceb31e07fb64df0f6dae3c8dc242f343c2

Smart Nic Driver
之前提到的方式都是在Linux内核中完成的,所以消耗的是Linux主机的能力,在千兆网络环境下大家可能觉得不是问题,但是在万兆网络中,就会感觉到无法发挥出万兆网络真正的能力。由于没有SRIOV网络隔离,容器之间网络的影响还是比较大的,另外在各种业务整合的时候,需要做流量管控的时候又将是性能消耗点。

1cc3c81f86a1b64c6d70d819809068de31faa12c

高性能网络其实要做的就是类似一张智能网卡,用网卡对于协议报文进行加解封装,然后将协议报文直接送到容器里面,宿主机性能没有任何消耗,而且这样对于智能网卡功能的扩展也非常容易,也不会影响宿主机。实现了无论网卡如何,保证容器底层的网络最优。



相关文章
|
5月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
941 108
|
4月前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1924 10
|
4月前
|
缓存 安全 Linux
优化Docker镜像大小的多阶段构建实践
优化Docker镜像大小的多阶段构建实践
353 99
|
8月前
|
机器学习/深度学习 自然语言处理 数据可视化
基于图神经网络的自然语言处理:融合LangGraph与大型概念模型的情感分析实践
本文探讨了在企业数字化转型中,大型概念模型(LCMs)与图神经网络结合处理非结构化文本数据的技术方案。LCMs突破传统词汇级处理局限,以概念级语义理解为核心,增强情感分析、实体识别和主题建模能力。通过构建基于LangGraph的混合符号-语义处理管道,整合符号方法的结构化优势与语义方法的理解深度,实现精准的文本分析。具体应用中,该架构通过预处理、图构建、嵌入生成及GNN推理等模块,完成客户反馈的情感分类与主题聚类。最终,LangGraph工作流编排确保各模块高效协作,为企业提供可解释性强、业务价值高的分析结果。此技术融合为挖掘非结构化数据价值、支持数据驱动决策提供了创新路径。
536 6
基于图神经网络的自然语言处理:融合LangGraph与大型概念模型的情感分析实践
|
3月前
|
监控 负载均衡 安全
WebSocket网络编程深度实践:从协议原理到生产级应用
蒋星熠Jaxonic,技术宇宙中的星际旅人,以代码为舟、算法为帆,探索实时通信的无限可能。本文深入解析WebSocket协议原理、工程实践与架构设计,涵盖握手机制、心跳保活、集群部署、安全防护等核心内容,结合代码示例与架构图,助你构建稳定高效的实时应用,在二进制星河中谱写极客诗篇。
WebSocket网络编程深度实践:从协议原理到生产级应用
|
9月前
|
存储 SQL 运维
中国联通网络资源湖仓一体应用实践
本文分享了中国联通技术专家李晓昱在Flink Forward Asia 2024上的演讲,介绍如何借助Flink+Paimon湖仓一体架构解决传统数仓处理百亿级数据的瓶颈。内容涵盖网络资源中心概况、现有挑战、新架构设计及实施效果。新方案实现了数据一致性100%,同步延迟从3小时降至3分钟,存储成本降低50%,为通信行业提供了高效的数据管理范例。未来将深化流式数仓与智能运维融合,推动数字化升级。
467 0
中国联通网络资源湖仓一体应用实践
|
7月前
|
Docker 容器
Docker网关冲突导致容器启动网络异常解决方案
当执行`docker-compose up`命令时,服务器网络可能因Docker创建新网桥导致IP段冲突而中断。原因是Docker默认的docker0网卡(172.17.0.1/16)与宿主机网络地址段重叠,引发路由异常。解决方法为修改docker0地址段,通过配置`/etc/docker/daemon.json`调整为非冲突段(如192.168.200.1/24),并重启服务。同时,在`docker-compose.yml`中指定网络模式为`bridge`,最后通过检查docker0地址、网络接口列表及测试容器启动验证修复效果。
1276 39
|
10月前
|
Ubuntu 关系型数据库 MySQL
容器技术实践:在Ubuntu上使用Docker安装MySQL的步骤。
通过以上的操作,你已经步入了Docker和MySQL的世界,享受了容器技术给你带来的便利。这个旅程中你可能会遇到各种挑战,但是只要你沿着我们划定的路线行进,你就一定可以达到目的地。这就是Ubuntu、Docker和MySQL的灵魂所在,它们为你开辟了一条通往新探索的道路,带你亲身感受到了技术的力量。欢迎在Ubuntu的广阔大海中探索,用Docker技术引领你的航行,随时准备感受新技术带来的震撼和乐趣。
424 16
|
10月前
|
缓存 边缘计算 安全
阿里云CDN:全球加速网络的实践创新与价值解析
在数字化浪潮下,用户体验成为企业竞争力的核心。阿里云CDN凭借技术创新与全球化布局,提供高效稳定的加速解决方案。其三层优化体系(智能调度、缓存策略、安全防护)确保低延迟和高命中率,覆盖2800+全球节点,支持电商、教育、游戏等行业,帮助企业节省带宽成本,提升加载速度和安全性。未来,阿里云CDN将继续引领内容分发的行业标准。
583 7
|
10月前
|
人工智能 运维 监控
领先AI企业经验谈:探究AI分布式推理网络架构实践
当前,AI行业正处于快速发展的关键时期。继DeepSeek大放异彩之后,又一款备受瞩目的AI智能体产品Manus横空出世。Manus具备独立思考、规划和执行复杂任务的能力,其多智能体架构能够自主调用工具。在GAIA基准测试中,Manus的性能超越了OpenAI同层次的大模型,展现出卓越的技术实力。

热门文章

最新文章