Linux 下网络设备虚拟化的几种形式
为了完成虚拟机在同主机和跨主机之间的通信,需要借助某种“桥梁”来完成用户态到内核态(Guest 到 Host)的数据传输,这种桥梁的角色就是由虚拟的网络设备来完成,上面介绍了一个第三方的开源方案——OVS,它其实是一个融合了各种虚拟网络设备的集大成者,是一个产品级的解决方案。
但 Linux 本身由于虚拟化技术的演进,也集成了一些虚拟网络设备的解决方案,主要有以下几种:
(1)TAP/TUN/VETH
TAP/TUN 是 Linux 内核实现的一对虚拟网络设备,TAP 工作在二层,TUN 工作在三层。Linux 内核通过 TAP/TUN 设备向绑定该设备的用户空间程序发送数据,反之,用户空间程序也可以像操作物理网络设备那样,向 TAP/TUN 设备发送数据。
基于 TAP 驱动,即可实现虚拟机 vNIC 的功能,虚拟机的每个 vNIC 都与一个 TAP 设备相连,vNIC 之于 TAP 就如同 NIC 之于 eth。
当一个 TAP 设备被创建时,在 Linux 设备文件目录下会生成一个对应的字符设备文件,用户程序可以像打开一个普通文件一样对这个文件进行读写。
比如,当对这个 TAP 文件执行 write 操作时,相当于 TAP 设备收到了数据,并请求内核接受它,内核收到数据后将根据网络配置进行后续处理,处理过程类似于普通物理网卡从外界收到数据。当用户程序执行 read 请求时,相当于向内核查询 TAP 设备是否有数据要发送,有的话则发送,从而完成 TAP 设备的数据发送。
TUN 则属于网络中三层的概念,数据收发过程和 TAP 是类似的,只不过它要指定一段 IPv4 地址或 IPv6 地址,并描述其相关的配置信息,其数据处理过程也是类似于普通物理网卡收到三层 IP 报文数据。
VETH 设备总是成对出现,一端连着内核协议栈,另一端连着另一个设备,一个设备收到内核发送的数据后,会发送到另一个设备上去,这种设备通常用于容器中两个 namespace 之间的通信。
(2)Bridge
Bridge 也是 Linux 内核实现的一个工作在二层的虚拟网络设备,但不同于 TAP/TUN 这种单端口的设备,Bridge 实现为多端口,本质上是一个虚拟交换机,具备和物理交换机类似的功能。
Bridge 可以绑定其他 Linux 网络设备作为从设备,并将这些从设备虚拟化为端口,当一个从设备被绑定到 Bridge 上时,就相当于真实网络中的交换机端口上插入了一根连有终端的网线。
如下图所示,Bridge 设备 br0 绑定了实际设备 eth0 和 虚拟设备设备 tap0/tap1,当这些从设备接收到数据时,会发送给 br0 ,br0 会根据 MAC 地址与端口的映射关系进行转发。

虚拟机中的几种网络链接方式
桥接
HostOnly
NAT
云计算
Faas 函数即服务 Function as a Service
在IaaS篇中,我们主要是重于基础设施类的云服务,尤其是虚拟机、云磁盘、云网络等
服务。它们的特点是,和传统T基础设施往往有一个对应关系,所以被称为基础设施即服
(Infrastructure-as-a-Service)
·区域是云计算的顶层概念,云服务以区域为单位对外开放:
区域选择需要考虑多种因素,包括但不限于地理位置、服务丰富性、开服时间、资源成
本、可用区数量等:
可用区是区域之下的重要层级,代表独立的数据中心,一个区域内往往有多个可用区:
·妥善将资源分布到不同可用区,可实现故障隔离,提升架构的可用性。
存储与计算分离的设计思想

所以,云虚拟机,与其说是由一台宿主机虚拟而成的,不如说是云数据中心中的不同部分一
起协作,“拼凑”而成的一台机器。这样虚拟出来的机器,我们在使用感受上其实与传统服
务器并无不同,但在可扩展性和故障隔离方面,它就具有很大的优势了。
云硬盘与传统磁盘的真正差异在于,绝大多数的云硬盘都是远程的。我们都知道,在经典计
算机的体系结构中,硬盘是通过本地机器内部主板的高速总线,与CPU、内存等部件相连
接:而在云端,你的硬盘则很可能并不在宿主机上,而是在专用的磁盘服务器阵列中,两者
是通过数据中心内部的特有O线路进行连接。没错,这也正是计算存储分离架构的一种体
现
那么下面,我们就分别来看一看主流云硬盘的不可性能等级,以及它们对应的磁盘类型和存
储介质。
第一个等级的云硬盘,是基于传统DD硬盘构建而成的。这类云盘的性能一般,最高
1OPS大概在数百左右。在很多的云上色经不把它作为推荐的选择了。但它并非一无是
处,成本低就是它的最大优势在不注重性能的测试环境,或者是个人自用的服务器,它就
是一个很好的选择
第二个等级,往往是基于混合硬盘,也就是结合HDD和SSD硬盘构建的云硬盘。它会综
合发挥SSD的性能优势和HDD的容量优势。比如它可以用SSD部分来承载热点区域数
据,或是作为缓存,来提高响应性能。在这个等级下,典型的OPS为数千左右,是很多云
上创建硬盘的默认选项,比较适合像是操作系统启动盘这样的常规负载。
第三个等级的云硬盘,它的存储介质就是纯SSD硬盘了。虽然贵一些,但一分价钱一分
货,这个等级下的云硬盘能够提供非常稳定的IO能力,OPS通常能够上万,也有相当不
俗的吞吐量和较低的访问延时。你可以用它来承载生产环境中重要的关键业务应用,或是各
类数据库等O密集型应用。
第四个等级,也是当下业界的最高等级,就是进一步优化增强的最新SSD云盘。它一股会
采用更新一代的企业级闪存硬件,配合自研或改进后的底层传输协议,和虚拟化技术栈的优
化来提供服务。因此它能韵够达到惊人的性能水平,满足我们最为苛刻的性能场景需求,比如
承载SAP HANA(SAP的高性能计算平台)、高并发OLTP数据库等等。这类SSD云盘
的1OPS通常能够突破十万以上
·云硬盘是云虚拟机的主要特久化存储,与宿主机往往是分离的:
云硬盘支持动态添加和删除,使用起来灵活方便:
云硬盘一般提供多种性能等级,最终性能会受存储介质和容量大小的共同影响:
部分虚拟机型号会自带高性能的本地磁盘,在可以容忍数据丢失风险时,是你值得考虑
的一个选择。
通用均衡型的比例通常是1:4,如2核8G,这是一个经典的搭配,可用于建站、应用服务
等各种常见负载,比如作为官网和企业应用程序的后端服务器等。如果你对未来工作负载的
特征还没有经验和把握,那你也可以先使用通用型实例,等程序运行一段时间后再根据资源
占用情况按需调整。
如果vCPU和内存比是1:2甚至1:1,那就是计算密集型的范畴,它可以用于进行科学计
算、视频编码、代码编译等计算密集型负载。
比例为1:8及以上,一般就会被归入内存优化型了,比如8核64G的搭配,它在数据库
缓存服务、大数据分析等应用场景较为常见。
图形计算型很好理解,就是带有GPU能力的虚拟机,一般用于机器学习和深度学习模型的
训练和推理。随着A!的火热,这类机器也越来越多地出现在各种研发和生产环境中,
·包年包月的付费方式是最常见的降低虚拟机使用成本的方法,它通过栖性采购的灵活性
来换取折扣。
·竞价实例的机制让云端的闲置资源对外开放,基于市场竞拍的定价方式,常常能够让我
们获得很大的折扣。这种方法主要是通过牺牲稳定性,来换取成本上的节约。
突发性能实例是一种特殊的使用CPU积分制的机型,相对标准机型成本较低,适合工作
负载存在较大波动的场景。它主要牺牲的是性能。
基于ARM的虚拟机实例已陆续走向市场,随若生态的不断成熟,也将成为低成本机型
中非常具有竞争力的选择,这种方法主要在生态和兼容性方面存在一些限制.
·网段,私有网络的内部1P区段,通常用CIDR形式来达,如192.168.0.0/16。
子网,私有网络的下级网络结构,一个私有网络可以划分多个子网,这和通常意义上的
子网也是对应和一致的。阿里云中把子网形象地称为“交换机”。
路由表,用于定义私有网络内流量的路由规则,决定着数据包的“下一跳”去向何方。
每个子网都必须有一张关联的路由表,通常情况下,系统会自动帮你创建一个默认的路
由表。
·网关,是对进出私有网络的流量进行把守和分发的重要节点,根运用途的不同,有多种
类型,后面我们还会讲到。
安全组,私有网络里虚拟机进出流量的通行或拦载规则可以起到虚拟机网络防火墙的
作用,我们曾经在P第2讲中提到过它。
答案就在于虚拟机的网卡,又称弹性网卡(Elastic Network Interface,简称ENl)。虚
拟机的网卡一方面是和虚拟机的本体进行绑定,另一方面则嵌入某个私有网络的子网,也会
拥有至少一个私网P。
云上的网卡,之所以被称为“弹性”网卡,是因为它具备以下特征:
1.一个虚拟机可以绑定多块网卡,有主网卡和辅助网卡之分;
2一块网卡隶属于一个子网,可以配置同一子网内的够个私有代门
3.辅助网卡可以动态解绑,还能够绑定到另一台虚拟机
弹性IP
公网IP
我们这里讨论一个常见的场景,即如何允许多台没有公有1P的虚拟机访问外网。这时需要
使用到的网关叫做NAT(Network Address Translation)网关,是一种常见的用来给
VPC开口的手段。
SNAT条目,两个维度
(1)某一个交换机对应的IP网段;
(2)某一台VM
还有一种网关被称为VPN网关,也可以帮助外界连接到VPC,它本质上是基于你所熟知
的VPN技术。由于VPN能够基于互联网提供私有加密的通信,因此非常适合用来从任意
其他私有设施安全地连接到VPC,这些私有设施可以小到一台个人电脑或手机终端,也可
以大到是你本地的数据中心,还可以是另一个VPC。
如果是云端VPC和VPC的互联,我首先推荐的就是对等连接(VPC Peering)的方式,
它能够在不添动加额外设备的情况下,让两个VPC无缝地互联起来,而且操作非常简单,对
等连接甚至还能够支持跨区域的私有网络互联。当然,对等连接的实施前提,是这两个
VPC的网段没有交集,不存在冲突。
这里你需要注意对等连接的一个特点,就是它不具备传递性,也就是说,如果A和B建立
了对等连接,B和C建立了对等连接,那么A和C是不相通的,这是对等连接的一个局限,
虚拟机的排布看似是一个黑盒,但其实在公有云上是有办法来对虚似机的物理分配施加干
预,让它们实现分散分布,隔开一段距离的。这一特性,在
AWS称为置放群组
(Placement Group),Azure称为可用性集(Availabillty Set),阿里云对应的服务则
是部署集。比如说,我们对阿里云同一个可用区内的虚拟机,在创建时选择同一个部署集,
就可以保证相当程度的物理分散部署
以而最犬限度地保证它们不同时出现故障了。
今天我们的主角PaaS(Platform-as-a-Service),则是指云计算提供的平台类服务,在
这些平台的基础上,用户可以直接开发、运行、管理应用程序,而无需构建和维护底层的基
础设施。
第二个维度,是PaaS服务存在的位置和范围,以及给予你的控制粒度.
另一方面,这个维度也反映了你对这个服务的掌控程度,你会知道它是否能够和你现有的架
构进行深度集成。比如说,你很可能要求数据库PaaS服务必须位于你指定的VPC内,这
样查询流量就能走内网通信,避免对公网暴露数据库。
这里,我要给你介绍一些检查PaaS限制的方法,也是考察评估PaaS服务成熟度的重要思
路,你需要好好参考和把握。
功能屏蔽:和自建服务柏
你需要研究PaaS的封装是否带来了某项功能、部分选
项,还有扩展机制的屏蔽或者缺失,以及这些功能对你而言是否重要。
版本选择你需要查PaS所提供的软件或运行环境的版本是否丰富,最早和最新的
版本各是2
还有版本粒度是香足够细致等等。我就曾经遇到过,因为所需数据库版
本在PaaS上不存在,只能选择虚拟机进行部署的情况。
性能极限:确认PaaS服务所能够提供的性能极值,包括算力和存储的上限,
你要和自
己的需求量预测结合起来,避免“上车”后骑虎难下。
。
更新频率:直看PaaS服务的更新日志,了解云商和相应团那队在这个PaaS服务上,是
否还在继续做投入,是否在跟进一些最新的技术趋势。
成本陷阱:实际地通过POC实验,对PaaS服务进行试运行,注意要达到一定的量级,
然后仔细查看它对应的账单,看看相关支出是香合理,你能否长期承受
COS 对象存储
应用托管服务—- WEB应用
云数据库
RDS (Relational Database Service) VS 传统数据库
第一代云原生数据库

云上大数据

云上容器
docker容器、k8s