青云QingCloud 为基于 VM 部署的容器应用提供了一套简便易行的网络配置方案——SDN 网络直通服务 (SDN Passthrough)。相比于传统方案,SDN网络直通服务将大幅提升容器应用的网络性能,并降低配置与维护的操作难度。
众所周知,网络对于容器来说至关重要。但容器并没有解决好自身的网络问题。早期,容器只有单机的网络解决方案,在 1.19 版本之后才引入原生的 Overlay 网络解决方案。
下面,我们以基于虚拟主机部署Docker为例,看看传统网络方案中的问题所在。
首先,在虚拟主机的网络之上,Docker 系统还需要自己实现如下两点:
在虚拟主机内部实现虚拟网络,以联通各 Docker 实例。
常用的实现方式是通过使用 Docker 提供的 Bridge 和 Overlay 网络插件,前者通过地址转换和路由连通私有网络,后者通过 Vxlan 隧道方式,构建一层 Overlay network。
实现一些复杂的网络功能。
除了联通 Docker 实例,还需要向 Docker 实例提供公网 IP,负载均衡器和防火墙等功能,这些都需要自主实现,而无法复用云平台提供的相应功能。
其次,通过以上这种方式部署 Docker,虽然可以实现基本的功能,但是存在两个重要挑战:
性能差。
这种使用 Docker Overlay 的方案会带来近 3/4 的性能损耗,如果算上对外提供服务所需要的地址转换带来的性能损失,整体性能损失将更为巨大。
PS:测试环境中,虚拟主机之间: 带宽 9Gbps,而虚拟主机内使用 Docker overlay 插件的 Docker 实例之间,带宽下降为 2.3Gbps 。
部署复杂。
目前主流的 Docker 管理平台,比如 K8S,使用者如果想构建一套网络方案,需要精通Linux提供的各种高级网络功能,这也为用户设置了较高的技术门槛。特别是对专注于业务开发的 Docker 用户而言,这类操作往往显得过于复杂。
所以,虽然容器技术正在逐步被大家认可与应用,但其网络性能以及配置的复杂程度一直都在被大家所诟病。
其实,上述问题的根源在于云平台和 Docker 平台都有自己的虚拟化网络实现方案,二者功能重叠,使用时会相互嵌套。
那么,『SDN 网络直通服务』是如何解决性能以及部署复杂性的问题呢?
简单来说,SDN 网络直通就是让用户的 Docker 直接使用云平台的 SDN 能力,避免两层网络嵌套,从而达到提高性能,和简化配置的效果。
其包含两大组件:「网卡」管理和「Hostnic」插件。
网卡管理。
通过提供网卡接口,让虚拟主机能够挂载多个网卡。这些网卡可以属于相同或者不同的网络,同时每个网卡能够管理自己的私网 IP,公网 IP,负载均衡器和防火墙等功能。
Hostnic 插件。
这是青云QingCloud 自主开发的一款 Docker 网络插件。在启动 Docker 实例的时候,通过该插件,可以将虚拟主机上的绑定的多个网卡一一挂载到 Docker 实例上, 并可以配置 IP 地址和路由。启动之后,Docker 实例就加入了云平台 SDN 提供的网络,能够使用云平台所有的网络功能。
PS:希云cSphere 也开源了一款基于 QingCloud SDN 网络直通方案的插件,qingcloud-docker-network,相比 Hostnic,这款插件整合了 QingCloud API,可以在启动 Docker 的时候,自动创建并挂载网卡,使用起来更方便。 地址:http://github.com/nicescale/qingcloud-docker-network
当用户选择使用 SDN 网络直通服务时,能够实现 Docker 直接使用云平台的 SDN,避免两层网络的重叠,从而达到提高性能和简化配置的效果,并支持独立挂载 EIP、独立配置防火墙策略(SG)、及挂载为负载均衡 (LB)后端,提升对复杂网络架构的支持能力。
本文转载自:https://zhuanlan.zhihu.com/p/24902370?refer=qingcloud
网友评论