《弹性计算产品》系列,共包含以下文章:
😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点赞 🧡、关注 💛、收藏 💚)!!!您的支持 💖💖💖 将激励 🔥 博主输出更多优质内容!!!
十多年前,弹性计算产品家族第一款产品 云服务器 上市之后,整个弹性计算的产品体系一直保持着高速的产品迭代和积极的市场响应。在经历了整个业界对于应用架构、部署、运维、管理等方面的演进后,弹性计算也从最初仅面向站长和个人用户推出的几 vCPU、几 GB 内存,总计不超过 10 个种类的云主机产品,进化到当下覆盖云服务器、容器服务和无服务器计算等多个大的领域、IaaS + 和 PaaS 的完整的计算解决方案家族。
即使是云服务器这一 “十三年陈” 的产品,在产品形态上与十年前也已截然不同:产品丰富度大大提高,在线主售实例规格数量超过 300 种,面向的应用场景完整覆盖互联网架构和传统企业应用架构所需的各类型计算资源需求;存储具有 云盘 + 本地盘 + 共享盘 的产品组合,满足不同应用负载对存储的性能、数据可靠性和特殊功能的要求。产品全线从过去的 “经典网络” 过渡到 “虚拟专有网络”,更好地适应了多租户大型企业的网络需求。丰富的产品选择,提升了用户业务搭建在云端的场景适应度和性价比。而所有这一切背后的动力,都是为了持续更好地满足用户需求、降低用户成本、优化用户体验,使产品具有更广泛的适用性,给用户提供更高的价值。
虚拟化技术 是支撑整个云计算行业发展最重要的基础技术。
在虚拟化技术出现前,用户对于应用的运维主要是面向物理机的。资金并不充裕的用户会选择把多个业务所需的应用部署在一台服务器上运行。比如,把企业所需的 DHCP 服务器、DNS 域名解析服务器、Web 应用服务器都部署在一台服务器上;把 SAP 应用和企业办公的 OA 系统部署在另一台服务器上,这样可以节省服务器,减少服务器的电力、机位、网络设备成本。但弊端也相当明显,不仅应用使用的端口可能冲突,而且共享的文件读写也会不可避免地产生冲突。另外,如果应用所依赖的系统库是共享的,那么系统库版本问题又会让管理维护人员 “发疯”。运维工程师无时无刻不处于神经紧绷状态,一旦哪个应用崩溃,很可能会引发连锁反应,导致整个系统的宕机。当管理维护人员需要重新启动计算机时,这台服务器上所有运行的业务系统都会一起被连带着中断。
资金充裕的用户虽然可以为每一个业务系统都配置一台甚至多台服务器,但会造成服务器资源极大的浪费,每一台服务器负载都很低,绝大多数时间都在机架上 “吃灰”。另外,每一台服务器所产生的电力、网络、机柜费用,也是极大的浪费;同时,基础系统的维护,包括几十台、甚至上百台的服务器系统的升级系统、打补丁、升级应用等,所需耗费的工作量会大幅增加。
虚拟化技术 的成熟很好地解决了上述问题,Intel 和 AMD 在各自出品的 CPU 中加入虚拟化指令,Windows / Linux 也相继提供了内核虚拟机,使虚拟机(虚拟服务器)可以更大地发挥物理硬件的性能。通过 Hypervisor,在一台物理服务器上可以同时运行多台虚拟机。每台虚拟机都可以独立安装不同的操作系统,并能够独立运行、重启或关机,相互之间不受影响。虚拟机配给的硬件资源是由管理者调配的,对硬件资源的占用只要在配额之内,即使某个系统负载过高而宕机,也不影响其他虚拟机的工作。使用虚拟机可以让创建、撤销相关资源都在软件管理层面上完成。以往在升级服务器硬件时是需要断电拆机的,而在虚拟机上,扩展资源配给可以直接通过管理软件界面设定来做到热生效,销毁服务器与之同理。迁移、备份也更加方便,虚拟机的运行系统和环境对应的是物理服务器上的一个镜像文件,以前迁移服务器到异地机房时需要先下架后再小心翼翼地长途托运,生怕摔碰;而虚拟机的迁移只需拖动一个文件即可。
由于虚拟化层的存在,无论是热迁移应用,还是用快照做在线备份、恢复数据,都变得极其顺畅。如果用户操作有误,可以随时回滚。而在物理系统上遇到这种情况时可能就得重做系统了。以前一台祼机从安装系统到部署业务平均耗时为 12 小时,而今在虚拟机上可以提前准备好各种模板,需要时仅使用模板克隆一次就能快速完成。传统服务器和虚拟服务器的差别如下图所示。
现在,在企业内部或互联网上,主流公共云服务商提供的云服务(例如云服务器、数据库服务、VPC、负载均衡等)绝大多数都是基于虚拟机的。可以说,正是有了这种 “软件定义服务器” 的能力,云上的资源 按需使用、按量付费、分钟交付 才成为可能,用户对于集群中所有虚拟机的运行情况都能及时掌握和按需调配。因此,当下整个云计算行业盛行及高速发展,虚拟化技术功不可没。
云服务器是所有云服务的基础,也是使用最普遍、用户接受度最高的弹性计算产品。因为虚拟化继承了 x86 的标准硬件体系结构和操作系统标准应用界面的双重标准,所以,用户完全可以从过去使用物理机平滑过渡到使用云服务器,从而对底层物理资源的运维这一 “脏活、累活” 则被云服务提供商的自动化、大规模集中运维给取代了。
现在,云服务器的计算、存储、网络、系统环境部件已变得非常复杂,每一个侧面都需要大量的研发人员在背后持续优化,使云服务器的性能没有 “短板”,成为一个发展均衡的 “木桶”。
1.ECS 实例
在云产品,尤其是 IaaS 类产品中,实例 是一个常见的概念,特指虚拟计算环境。一台云服务器(为行文方便,以下简称为 ECS)实例等同于一台虚拟机,包含 CPU、内存、操作系统、网络、磁盘等基础计算组件。
根据业务场景和使用场景,ECS 实例可分为多个规格族。以阿里云产品为例:
- 对于 通用的 x86 计算密集型 应用场景,C 系列规格族是最合适的产品;
- 对于 大数据 场景,D 系列规格族的性价比最高;
- 而对于 异构计算 场景,性价比最高的则是 GN 系列规格族。
在同一业务场景下,也可以选择多个不同的规格族。在同一个规格族里,根据 CPU 和内存的配置,可以分为多种不同的规格。ECS 实例规格定义了实例的 CPU 和内存的配置(包括 CPU 型号、主频等,部分规格还包括特殊的异构计算部件或者本地存储)。下图为 ECS 实例规格族图谱。
一个 规格族 包括若干实例规格(简称 规格),对应产品的大中小不同配置。以计算型 C6 规格族为例,规格 ecs.c6.large
代表 C6 规格族内的最小实例规格 2 vCPU 4GB 内存的虚拟机配置,而规格 ecs.c6.2xlarge
代表 C6 规格族内的实例规格 8 vCPU 16GB 内存的虚拟机配置。每一个实例规格除了直观地描述采用什么配置的虚拟机,还定义了其对应的存储云盘性能、内网性能等参数。这些是保障在实例使用过程中各方面性能稳定、可预期的关键,也就是云服务器产品的 QoS 能力,这一点对于企业用户尤其重要。
QoS(
Quality of Service
)即 服务质量。 它是指网络为特定流量提供更高优先服务的同时控制抖动和延迟的能力,并且能够降低数据传输丢包率。 当网络过载或拥塞时,QoS 能够确保重要业务流量的正常传输。 QoS 是网络中管理数据流的可用带宽、延迟、抖动以及分组丢失的技术集合。
随着多媒体、机器学习、科学计算领域的快速发展,云上对于异构计算的需求被快速地激发出来,实例不仅需要实现过去普通的 x86 虚拟化,还要能够支持异构计算部件的虚拟化或直通透传,使得在虚拟机内的应用可以将 GPU 或 FPGA 这一类部件利用起来,像普通 x86 云服务器一样配置灵活、可调整。
在实例内,存储和网络是必不可少的两个功能。在云服务器诞生之初,实例读写所需要的存储多为本地存储(即虚拟机所在物理机本地的磁盘),本地存储的优点是服务器内部访问、效率高、成本低,但缺点也极其明显:容量空间有限、本地失效概率高、服务器宕机数据有丢失风险、无法立刻恢复业务、需要等待维修。这些都为后续发展云盘提供了明确的方向:存储和计算分离能够带来更高的可扩展性,数据丢失风险以 N 个数量级的幅度降低。实例的存储绝大多数已经使用云盘来实现,也就是下面要介绍的 “弹性块存储”。本地存储仅在少数场景下才会使用,如极高存储性能、极低单 GB 存储成本、对数据可靠性没有强诉求等场景。
对于实例来说,网络性能中的数据收发功能和在此之上的访问隔离与互通灵活控制功能是基础,而这些都是依靠虚拟网络来实现的。每一个实例都有其对应的网络功能和存储功能的描述。
2.弹性块存储
虚拟化实例对于计算资源的充分利用和简化运维有非常大的帮助作用,但仅仅依靠计算虚拟化,并没有很好地解决数据块存储方面的问题。因为云服务器所持有的持久化数据,如操作系统、应用、用户数据等,既不丢失、不能出错,同时要保证数据的访问性能足够高,以满足多种场景的诉求。另外,还要具备云计算架构的优势,比如可以对存储容量或磁盘物理容量动态扩容、保证计算实例和数据的解耦合,降低计算或存储单方面运维的复杂度等。云上的 弹性块存储(Elastic Block Storage
)的应用场景和产品特点都是基于以上业务需求发展起来的。经过长久的发展,云上的弹性块存储系统和传统的计算机存储系统一样,已成为云服务器系统中既重要又有挑战的子系统之一。
弹性块存储是弹性计算家族中数据块级别的块存储产品,简称 云盘,具有 低时延、高性能、持久性、高可靠 等特点。云盘采用分布式三副本机制,为 ECS 实例提供 99.9999999 % 99.9999999\% 99.9999999%(9 个 9)的数据可靠性保证,支持在可用区内自动复制数据,防止意外硬件故障导致的数据不可用,保护业务,免于受组件故障的威胁。就像硬盘一样,用户可以对挂载到 ECS 实例上的云盘做分区、格式化、创建文件系统等操作,并对数据进行持久化存储。
弹性块存储按照用户需要的存储使用场景和特点,可以划分为以下几个阶段:
- 最早一代的云盘(普通云盘)是具备高可靠性、一般随机读写性能的云盘产品。这一代产品从根本上解决了本地存储的可靠性和可用性问题,但性能与本地盘相比,仍具有较大的差距。
- 随着技术的演进,以及更新、更合理的硬件架构的出现,普通云盘逐渐演进成了具有更优 I/O 性能的 SSD 云盘和高效云盘。这一代产品最高可以达到数万 IOPS 和 Gbps 级别的数据吞吐能力。其性能已经比较接近本地盘了。
- 最新一代 ESSD 云盘产品达到了百万量级 IOPS 和数十 Gbps 的数据吞吐能力,在性能方面基本等同于本地存储。
无论普通的块存储还是云盘存储,都是单节点挂载、单节点读写访问的产品,随着更多的传统企业上云,传统 IDC 中多服务器共享访问同一块存储的场景需求也在云上产生。在典型的集群架构中,多个计算节点通常需要访问同一份业务数据。为防止一个或多个计算节点发生故障而导致业务中断,共享块存储可以保证集群对外提供业务访问的持续性和高可用性。用户可将重要的业务数据存储在共享块存储上,并通过集群文件系统对共享块存储进行统一管理。当多个前端计算节点并发地读写数据时,共享块存储能保证数据在多个计算节点间的一致性。
回望过去,云盘在保持着高可靠性和免运维的前提下不断优化性能,走的是一条使产品在性能上越来越符合本地盘业务需求的道路。当然,本地盘存储并没有被完全抛弃,随着互联网和移动互联网的广泛应用,企业数据以前所未有的速度积累,而基于大数据的应用,不论离线分析还是在线计算,都被越来越多的企业所采纳。大数据的典型场景对物理介质的可靠性并无更高要求,因为在应用层已经通过分布式存储将数据打散存储在多计算节点上,所以高性能和低成本(应对海量数据)是这个场景的核心诉求,而本地弹性块存储正是针对这个场景的产品而设计的,它基于云服务器 ECS 所在物理机(宿主机)上的本地硬盘设备,为 ECS 实例提供本地存储访问性能,是为那些对存储 I/O 性能和海量存储性价比有极高要求的业务场景而设计的产品。
3.虚拟网络
网络的高速联通是所有用户需要的,也是越来越多的集群类应用在互联互通时的要求。另外,云上自带多租户环境的属性,而多租户的隔离性和特殊场景下的互通性是大规模云上运营的基础。这一切都是依靠 虚拟网络 实现的,可以说虚拟网络对于云计算来说,就如同一座城市的道路规划一样重要,是基础中的基础。借助虚拟网络技术的互联互通功能,弹性计算的数据得以高效流转,多台云服务器得以协同工作,保障弹性计算能够构建丰富多样的上层业务和应用系统。虚拟网络的基础功能包括网络的安全隔离、可自定义、高性能、高可用和易管理,基于虚拟网络的基础功能,再加上各种业务场景下的业务需求,进一步衍生出了一系列的网络产品。
-
虚拟专有网络(
Virtual Private Cloud
,VPC
)是用户基于云平台构建的一个隔离的网络环境,专有网络之间在逻辑上是彻底隔离的。用户可以自定义 VPC 的拓扑和 IP 地址,相当于用户自己构建了一个数据中心网络,有自己的路由、交换机和访问策略。用户可以通过操作 VPC 实现内网互通、公网访问、连接专线网络、访问云服务等多个场景的互联互通功能。 -
弹性网卡(
Elastic Network Interface
,ENI
)是云服务器的网卡设备,可以热插拔。实际上,ENI 还承载了大量的网络属性和功能,具备如 Metadata、DHCP 等功能,是云服务器和虚拟网络相互连接的一个桥梁。 -
弹性 IP 地址 是虚拟网络完成流量转发的实体,支持 IPv4 和 IPv6 两种协议,允许多租户之间使用重叠的私网地址,便于搭建超大规模和灵活自定义的私有网络。私网 IP 地址承载 VPC 内网流量,只在 VPC 内部可见,和外部网络之间是完全隔离的。如果用户需要访问公网,可以使用弹性 IP 地址,在公网网关上构建私网 IP 地址和公网 IP 地址的映射关系,外部可见的是弹性 IP 地址,VPC 内部实际依然使用私网 IP 地址进行通信。弹性 IP 地址可以在多台云服务器之间切换,只需进行简单的解绑和再绑定操作即可。
-
安全组和安全访问策略(
ACL
)是 VPC 提供的安全隔离策略,一个安全组内可以有多台云服务器,同一个安全组组内是默认互通的,不需要额外的授权。用户可以通过安全组配置统一的 ACL。安全组的一份配置可以对组内所有的成员生效,这个功能极大地简化了用户的网络配置操作,可以帮助用户完成大规模的云服务器运维管理工作。 -
通过操作 VPC 路由表,使得用户具备网络管理运维能力,可以实现 VPC 对等连接、专线访问策略、自建 NAT 网关、自建防火墙、自建 VPN 网关等。通过子网路由(多路由表),用户可以进行更加灵活的业务流量编排。
虚拟网络的相关产品和传统 IDC 里面的路由器、交换机、防火墙配置十分类似,都是为了解决路由联通,以及隔离、外网互通、内网互通等一系列问题,并且可以兼顾安全可控等特性而产生出来的。
4.镜像
用户使用云服务器最终使用的是一种 “应用环境”,可以把镜像理解为应用环境配置的一个典型配置组合。用户在构建完自己的应用所需要的基础环境后,可以将环境保存成镜像,并基于此镜像快速启动运行更多的实例,这样所有的实例即可具有相同的软件配置。通过镜像,用户可以启动以该软件配置为环境的实例。从镜像的供给者来看,镜像的大体分类如下。
- 公共镜像:云服务提供商官方提供的镜像,皆为正版授权,安全性好、稳定性高。公共镜像包含 Windows Server 系统镜像和主流的 Linux 系统镜像。这些镜像是云平台负责维护的 “官方版本” 镜像,一般新用户上云的镜像选择皆出自公共镜像。
- 镜像市场:镜像市场的镜像根据供应商不同,可分为两种 :由云平台官方账号提供的镜像和由第三方服务商(
Independent Software Vendor
,ISV
)通过云市场授权提供的镜像。镜像市场的镜像包括操作系统和预装软件等,均经过服务商与云服务提供商的严格测试,以保证镜像内容的安全。 - 自定义镜像:用户使用 ECS 实例或快照创建出的镜像,或从本地导入的自定义镜像。只有自定义镜像的创建者可以使用、共享、复制和删除该镜像。自定义镜像是云上用户深度使用云资源并将自己的应用调优之后的必经之路。用户可以将 官方镜像 + 自定义配置 + 应用 形成自定义镜像,并以此作为环境的基础副本进行使用。
- 共享镜像:其他账号共享给用户的镜像。当多个账号之间有可共享资源时,可以通过这种方式获得其他账号已有的资源,加速应用部署。
镜像是所有用户基本都会使用的功能。弹性计算云服务器的镜像不仅在丰富度、功能上给用户提供了最大的帮助,更在启动效率、性能优化、安全防护等方面投入了大量精力,使用户能够在云平台上获得基础运行环境以外更好的体验和技术回馈。
5.快照
上云后,用户最关心的无疑是数据的可靠性,虽然弹性块存储从底层能力上极大地解决了用户担心的数据丢失问题(可靠性为 99.9999999 % 99.9999999\% 99.9999999%),但还有一系列问题有待解决,如应用是否会将数据写乱;是否会有病毒导致数据被改写,使其变得不可用;是否会有 0.0000001 % 0.0000001\% 0.0000001% 的可能性,数据丢失了怎么办;是否会有黑客修改数据,导致数据无法使用。
快照就是解决这一系列问题的一个关键产品。它是某一时间点一块云盘或共享块存储的数据状态文件,常用于数据备份、数据恢复和制作自定义镜像等。作为一种便捷高效的数据保障手段,用户一般在以下业务场景中使用快照。
- 容灾备份:为某块云盘创建快照,将数据作为其他云盘的基础数据,实现同城容灾和异地容灾。
- 版本回退:当升级版本后出现系统问题时,用户能使用快照回滚云盘实现版本回退。
- 环境复制:如果用户希望新购实例与已有实例有完全相同的环境,则可以使用快照创建自定义镜像,再使用自定义镜像创建实例。
- 数据开发:通过对生产数据创建快照,可以为数据挖掘、报表查询和开发测试等应用提供近实时的真实生产数据。
- 提高操作容错率:如果团队成员不慎在云盘上存储了错误的数据,ECS 实例被误释放,应用错误导致数据错误,或者黑客利用应用漏洞恶意读写数据,则用户可以使用快照将云盘上的数据恢复到期望状态。
- 周期性备份:利用快照定期备份云盘上重要的业务数据,以应对误操作、攻击和病毒等导致的数据丢失风险。
- 重要操作前备份:在更换操作系统、升级应用软件或迁移业务数据等重大操作前,成熟的云服务器运维人员会创建一份或多份快照。一旦升级或者迁移过程中出现问题,就通过快照及时恢复到正常的系统数据状态。
如今,快照已不是一个新产品,随着用户使用量的不断增加,在 ESSD 云盘使用场景下,弹性块存储提供了秒级制作快照的能力,对于数据的备份、恢复效率有了质的提升。基于这样的产品能力,用户可以在更多的场景下依赖快照完成对数据的保护。
6.专有宿主机
在典型的云场景下,一台物理机经过虚拟化后,上面的虚拟计算资源可以被售卖给多个租户;而在一些特定场景下,比如金融场景出于合规的要求,用户需要保证物理机的独占特性,这时,用户需要将整台物理机上的所有虚拟资源都买走,进而对虚拟资源进行按需划分(前提依然是所有资源都属于一个租户),这就是 专有宿主机(Dedicated Host
,DDH
)。它是云计算平台专为企业用户定制的解决方案,具有物理资源独享、部署更灵活、配置更丰富、性价比更高等特点,可以有效地降低企业上云的总拥有成本(Total Cost of Ownership
,TCO
)。专有宿主机与普通 ECS 实例的购买方式从技术栈角度来看并无差别,两者的区别仅在于整台物理机的资源是否都归属单一租户,以使用户在特定业务场景下获得最优的性价比,如下图所示。