这是博主工作闲时的一些日常学习记录,有些之前很熟悉的,但工作中不常用,慢慢就遗忘了,在这里记录,也是为了激励自己坚持复习,如果有能帮到你,那我将感到非常的荣幸~
快速到达↓↓↓
IaaS篇
>>区域和可用区
云计算中最顶层的概念,就是区域 (Region)了。在大家的日常认知中,它当然是一个地理概念。而在云计算行业中,区域对应的则是云计算厂商在某个地理位置提供的所有云服务的组合,是厂商对外提供云服务的基本单位和容器。常见的区域,我们一般以国家或地区命名,也经常辅以城市和序号予以区分。比如,阿里云的华北 1 区(青岛)、华北 2 区(北京)...
云厂商在选址 时一般会有两种思路:
一种是考虑放在人口稠密的中心城市,离用户和商业更近,以提供较快的接入体验;
另一种则是在相对偏远的地区,当地往往能够提供良好的气候条件、充足的建设空间,以及较低的电力、带宽等运营维护成本。
有时这样的搭配被称为"前店后厂"模式。
作为用户如何选择云上'区域'呢?
- 首选区域的地理位置 本身。如果场景中需要本地数据中心与云端进行互联,也就是混合云 架构,那么同样也需要事先注意云区域的地理位置选择。混合云的专线接入,一般以同城或短距离接入为主。
- 第二点非常重要而又容易被忽视,那就是区域之间云服务的差别。是指同一个云在不同的区域,所能提供的服务和规模可能是不同的。
- 第三个区域选择的考量因素,则是成本因素。即便是同一种服务的价格,在不同区域也往往是不相同的。 (ps:需要注意的是区域的流量费用。如果把区域作为一个有边界范围的实体圈起来,这个流量可以分为三类:入站流量、出站流量和内部流量。一般会倾向于让入站流量和内部流量免费或接近免费,而出站流量则单独收费。)
多区域框架
-
物理上,各区域之间建设有网络互联专线,一般称为骨干网(Backbone)。骨干网的存在使得同一个云在不同区域间的通信,能够有较高的带宽和较低的延时。
-
软件层面,允许位于不同区域的虚拟网络跨区域进行互联,使得多区域的私有内网能够借助自有骨干网无缝高速打通。
-
DNS 解析层面,通常会提供就近解析和智能路由能力,将分布广泛的 C 端流量引流到最近的数据中心,以获得最快的响应速度。
可用区
可用区是区域的下级概念,是指一个具备完整而独立的电力供应、冷却系统、网络设施的数据中心单元。一个区域通常由多个可用区高速互联组成。区域内的可用区一般位于同一个城市,之间相距往往在一百公里以内。
为什么有多个可用区?
- 了解决区域内高可用性问题
- 区域本身有扩展的需求(可用区的数量也可以成为一个衡量区域规模的重要指标)
>>云虚拟机-攒机
云虚拟机,顾名思义,是在云端虚拟出的服务器。这个服务器你可以完全地控制它,从底层操作系统到安装上层应用。
云虚拟机的体系结构,用一句话来概括一下,就是全面解耦的计算存储分离的设计思想。
-- 传统的虚拟化,往往是对单一物理机器资源的纵向切割,计算、存储、网络等各方面的能力都是一台物理机的子集。
-- 云虚拟机的组成则有所不同。除了核心的 CPU 与内存部分仍属于一台宿主机外,它的网络、硬盘等其他部分,则可以超脱于宿主机之外,享受云端其他基础设施的能力。
各家厂商的云虚拟机服务的名称会略有不同,阿里云称为云服务器 ECS (Elastic Compute Service),AWS 称为 EC2 (Elastic Compute Cloud),Azure 就叫 Virtual Machine ,腾讯云则叫做云服务器 CVM(Cloud Virtual Machine)等等。
为什么云厂商还要推出自己的 Linux 版本呢?我们什么时候才应该考虑使用它们呢?
首先,厂商的 Linux 版本,在理论上会和自己云上的硬件有更好的适配,这样能够更充分地发挥相关硬件的性能。一般来说,厂商也会在自己的云上进行充分的测试和验证。
其次,在内核和基础组件的选择上,厂商专有操作系统往往会根据自己的需求判断,来进行一些取舍和裁剪,所以一般会有一个相对苗条的身材,占用比较小的磁盘空间,同时启动速度更快。这是一种更适合云环境的选择,尤其是当你的虚拟机集群规模较大时,就能够显出规模经济效应了。
再次,厂商操作系统会预装和云的使用操作方面的一些软件包和 SDK,能够为你提供便利。比如说,厂商一般会预装该云的命令行工具(CLI,Command Line Interface),像是 AWS CLI 等。
另外,当然也有云厂商出于"自主可控"方面的考虑,想拥有自己能完全控制的操作系统,不但技术上可以自主演化,还能防范一些商务合作上的风险。厂商自家的 PaaS 服务,它的底层也一般是使用自己的操作系统。
什么是网络安全组?
网络安全组(Network Security Group, 简称 NSG)如果配置不当,就会直接影响虚拟机的使用,也常常会造成无法远程连接登录的情况。
它能够控制虚拟机入站、出站的流量,并能根据协议、端口、流向等所设定的规则,来决定是否允许流量通过。
它与防火墙的区别:网络安全组并不工作在操作系统层面,而是在操作系统层之外,是额外的一层防护。非法流量在尚未到达 OS 的网络堆栈之前,就已经被它阻断了。所以 NSG 的一个优点在于,它不会影响 VM 的性能。
另外,网络安全组是一种可复用的配置。如果你有大量虚拟机适用于同样的网络控制规则,那么,你就能够很方便地让它们使用同一个网络安全组,这样你管理起来会非常方便。
网络安全组是绝大多数云都支持和实现了重要特性,它体现了云计算中软件定义网络的特点。网络安全组非常灵活,你可以随时更改,规则也会动态生效。
>>云虚拟机-虚拟机型号
怎样选择虚拟机?
-
第一个维度,就是虚拟机的"类型",或者说"系列"。
一般来讲,云厂商会提供通用均衡型、计算密集型、内存优化型、图形计算型 等常见的虚拟机类型。这些类型对应着硬件资源的某种合理配比或针对性强化,方便你在面向不同场景时,选择最合适的那个型号。
而 vCPU 数和内存大小(按 GB 计算)的比例,是决定和区分虚拟机类型的重要指征之一。
通用均衡型的比例通常是 1:4,如 2 核 8G,这是一个经典的搭配,可用于建站、应用服务等各种常见负载,比如作为官网和企业应用程序的后端服务器等。
如果 vCPU 和内存比是 1:2 甚至 1:1,那就是计算密集型的范畴,它可以用于进行科学计算、视频编码、代码编译等计算密集型负载。
比例为 1:8 及以上,一般就会被归入内存优化型了,比如 8 核 64G 的搭配,它在数据库、缓存服务、大数据分析等应用场景较为常见。
图形计算型很好理解,就是带有 GPU 能力的虚拟机,一般用于机器学习和深度学习模型的训练和推理。随着 AI 的火热,这类机器也越来越多地出现在各种研发和生产环境中。
-
第二个重要的维度,是虚拟机的"代"(Generation),用来标识这是该系列下第几代的机型。
由于虚拟机所采用的物理 CPU 在不断更新,所以云上虚拟机的单核性能未必相同。云虚拟机的换代更新并不仅仅只在 CPU 等硬件配置层面,很多时候也伴随着底层软硬件架构的更新和提升,尤其是虚拟化技术的改进。
总的来说,我们消费电子产品时的"买新不买旧",在云端同样适用。新一代的型号,往往对应着全新的特制底层物理服务器和虚拟化设施,能够给我们提供更高的性能价格比。
-
第三个重要的维度,就到了我们所熟知的实例大小(Size),也就是硬件计算资源的规模。
可以大致这样记忆:标准 large 对应的是 2vCPU 的配备,xlarge 则代表 4 个 vCPU,而更高的配置一般用 nxlarge 来表达,其中 n 与 xlarge 代表的 4vCPU 是乘法关系。比如,8xlarge 就说明这是一台 8*4=32vCPU 的机器。
虚拟机命名规则:类型、代别和实例大小 [类型名][代别][后缀(可选)].[规格]
比如,对于 r5.4xlarge 这个型号,我们会很快想到,这首先是一个 R 类型的第 5 代的内存型机器,它应该有 4×4=16 个 vCPU,内存大小则是 16×8=128G(内存型机器的 CPU 内存比一般为 1:8)
>>云虚拟机-成本
怎么控制成本?
-
包年包月机型
优点:更优惠
缺点:资源配置不够灵活;续费麻烦,有资源被销毁的风险。
-
使用竞价实例
优点:把云数据中心上闲置的机器资源拿出来,进行公开的拍卖,价高者得。适合:后台批量计算、爬虫、性能测试等等。这些无持久化状态、可打断的工作。
缺点:可能会被随时回收,失去了稳定性。
-
使用突发性能类型
优点:突发性能实例和相同配置的通用机型相比,其折扣大约可以达到六折或更低。适合:在负载具有时效性的情况下酌情选用。
原理:采用的是积分制,其积分会随着时间的推移匀速累加,也会随着算力的输出而被不断消耗。
缺点:积分制有上限,同时也需要累计,牺牲了部分性能。
-
使用 ARM 实例
优点:根据厂商的测算,输出相同性能的 ARM 机型,能够帮助用户节省 30%~40% 的成本,这当然也是得益于 ARM 处理器的高性价比特点。
缺点:在生态和兼容性方面存在一些限制。
ARM:它最初是由 Acorn Computers 在 1980 年代开发的一种微处理器架构。ARM 架构采用了精简指令集计算(RISC)原理,其设计目标是提供高性能、低功耗的处理器解决方案。华为在 2019 年发布了基于 ARM 的鲲鹏 920 处理器,性能十分强大,也达到了世界领先水平。与之匹配,华为云也推出了搭载鲲鹏处理器的 KC1 系列的虚拟机。
>>云硬盘-云上IO
什么是云硬盘?
云硬盘 ,又叫做"云盘 "或者"云磁盘 ",就是云虚拟机上可以挂载和使用的硬盘。这里,它既包含了用于承载操作系统的系统盘,也包括了承载数据的数据盘。
有时,还会把云端磁盘服务叫做块存储 (Block Storage),因为它们与 Linux 操作系统中的块设备相对应,是云上提供的"裸盘",可以格式化并且施加文件系统。
云硬盘与传统磁盘的真正差异在于,绝大多数的云硬盘都是远程的 。我们都知道,在经典计算机的体系结构中,硬盘是通过本地机器内部主板的高速总线 ,与 CPU、内存等部件相连接;而在云端,你的硬盘则很可能并不在宿主机上,而是在专用的磁盘服务器阵列中,两者是通过数据中心内部的特有 IO 线路 进行连接。没错,这也正是计算存储分离架构的一种体现。
而有些云上的"IO 优化实例"(AWS 上称为 EBS-Optimized)是指的是指云虚拟机与云硬盘之间的网络传输,进行了软硬件层面的优化,这样可以充分地发挥所挂载磁盘的性能。
云硬盘性能等级?
要考虑如何根据应用场景 ,选择合适介质的硬盘等级,同时权衡好相应的成本。
-
是基于传统 HDD 硬盘 构建而成的。这类云盘的性能一般,最高 IOPS 大概在数百左右。在很多的云上,已经不把它作为推荐的选择了。但它并非一无是处,成本低就是它的最大优势,在不注重性能的测试环境,或者是个人自用的服务器,它就是一个很好的选择。
-
是基于混合硬盘,也就是结合 HDD 和 SSD 硬盘构建的云硬盘。它会综合发挥 SSD 的性能优势和 HDD 的容量优势。比如它可以用 SSD 部分来承载热点区域数据,或是作为缓存,来提高响应性能。在这个等级下,典型的 IOPS 为数千左右,是很多云上创建硬盘的默认选项,比较适合像是操作系统启动盘这样的常规负载。
-
它的存储介质就是纯 SSD 硬盘了。云硬盘能够提供非常稳定的 IO 能力,IOPS 通常能够上万,也有相当不俗的吞吐量和较低的访问延时。可以用它来承载生产环境中重要的关键业务应用,或是各类数据库等 IO 密集型应用。
-
优化增强的最新 SSD 云盘。它一般会采用更新一代的企业级闪存硬件 ,配合自研或改进后的底层传输协议 ,和虚拟化技术栈 的优化来提供服务。因此它能够达到惊人的性能水平,满足我们最为苛刻的性能场景需求,比如承载 SAP HANA(SAP 的高性能计算平台)、高并发 OLTP 数据库等等。这类 SSD 云盘的 IOPS 通常能够突破十万以上。
影响云盘性能的重要因素还有云硬盘的容量。往往越大的容量,性能会更好。
这里主要通过 IOPS 来进行衡量。事实上,衡量 IO 性能还有吞吐量 、访问延时等其他的重要指标。
除此之外还有本地磁盘(选择宿主机上的有硬盘的),优点是具有相对高性能和低成本,但缺点也很显著就是,本地磁盘本质上是易失性(Ephemeral)的存储,当机器关机或删除,以及出现硬件故障时,本地磁盘上的数据就可能损坏或丢失(云上磁盘有备份)。
>>云上虚拟网络
什么是虚拟私有网络?
虚拟私有网络 (Virtual Private Cloud,简称 VPC),是云计算网络端最重要的概念之一,它是指构建在云上的、相互隔离的、用户可以自主控制的私有网络环境。有时也称为专有网络 (阿里云)或虚拟网络(Virtual Network 或 VNet,Azure 的叫法)。
虚拟私有网络麻雀虽小,但五脏俱全。在传统数据中心里,经典网络架构中的概念和组件,在虚拟网络中你几乎都能找到对应。这里比较重要的一些概念包括:
网段 ,私有网络的内部 IP 区段,通常用 CIDR 形式来表达,如 192.168.0.0/16。
子网 ,私有网络的下级网络结构,一个私有网络可以划分多个子网,这和通常意义上的子网也是对应和一致的。 阿里云中把子网形象地称为"交换机"。
路由表 ,用于定义私有网络内流量的路由规则,决定着数据包的"下一跳"去向何方。每个子网都必须有一张关联的路由表,通常情况下,系统会自动帮你创建一个默认的路由表。
网关 ,是对进出私有网络的流量进行把守和分发的重要节点,根据用途的不同,有多种类型,后面我们还会讲到。
安全组,私有网络里虚拟机进出流量的通行或拦截规则,可以起到虚拟机网络防火墙的作用。
VPC 属于局域网,按照 RFC 规范,能够使用的 IPv4 区段必须为 192.168.0.0/16、172.16.0.0/12、10.0.0.0/8 这三个或它们的子集。
私有网络中的虚拟机
虚拟机和专有网络的连接点是哪里呢?
在于虚拟机的网卡 ,又称弹性网卡(Elastic Network Interface, 简称 ENI)。
虚拟机的网卡一方面是和虚拟机的本体 进行绑定,另一方面则嵌入某个私有网络的子网,也会拥有至少一个私网 IP。
云上的网卡,之所以被称为"弹性"网卡,是因为它具备以下特征:
- 一个虚拟机可以绑定多块网卡,有主网卡和辅助网卡之分;
- 一块网卡隶属于一个子网,可以配置同一子网内的多个私有 IP;
- 辅助网卡可以动态解绑,还能够绑定到另一台虚拟机上。
这再次体现了云计算的解耦特征。
在绝大多数的云上,创建虚拟机 时都会有一个选项,问你"是否同时为虚拟机分配一个公网 IP 地址 "。如果你选择"是",会依赖这个自动生成的公有 IP。因为它本质上是一个从公有云的 IP 池中临时租用给你的 IP。如果你的机器关闭或重启,下次获得的 IP 可能就完全不同了。
这时,我们真正应该用到的是弹性 IP(Elastic IP) ,有些云称为 eIP。弹性 IP 一旦生成,它所对应的 IP 是固定、不会变化的,而且完全属于你所有。它所谓的弹性,其实是指可以非常自由地解绑和再次绑定到任意目标,还可以动态按需切换。
所以,当你有一个域名,需要让 DNS 服务解析到某个外部 IP,你就应该建立一个弹性 IP,绑定到相关资源后,让域名解析到这个弹性IP。
如何让私有网络对外"开口子"?
云虚拟机没有公有IP,是不能访问外网,但如果希望内网的机器和外界并不完全隔离,一些互联网流量需要有序地引进来,一些内网机器也需要访问外网。
可以使用前面提到的弹性 IP ,绑定到相关虚拟机上。不过,如果我们需要访问外网的虚拟机数量有很多,这种办法就需要很多弹性 IP,管理上就太麻烦了,成本也不划算,而且必须是双向访问。
如何允许多台没有公有 IP 的虚拟机访问外网?
这时需要使用到的网关叫做 NAT (Network Address Translation)网关,是一种常见的用来给 VPC 开口的手段。过程中需要添加的 SNAT 条目。SNAT 是"源地址转换"的意思,它非常适合让私有网络的主机共享某个公网 IP 地址接入 Internet。注意,这是一种从内向外的、单向的连通形式。
还有一种网关被称为 VPN 网关 ,也可以帮助外界连接到 VPC,它本质上是基于你所熟知的 VPN 技术。由于 VPN 能够基于互联网提供私有加密的通信,因此非常适合用来从任意其他私有设施安全地连接到 VPC。这些私有设施可以小到一台个人电脑或手机终端,也可以大到是你本地的数据中心,还可以是另一个 VPC。
多网连接有哪些方式?
公有云上是允许你同时使用多个 VPC 的,这样你可以构建更加复杂的网络架构,实现模块隔离和跨区域扩展等高级需求。
1. 对等连接:
如果是云端 VPC 和 VPC 的互联,首先推荐的就是对等连接(VPC Peering)的方式。它能够在不添加额外设备的情况下,让两个 VPC 无缝地互联起来,而且操作非常简单,对等连接甚至还能够支持跨区域的私有网络互联。当然,对等连接的实施前提,是这两个 VPC 的网段没有交集,不存在冲突。
需要注意对等连接的一个特点,就是它不具备传递性。也就是说,如果 A 和 B 建立了对等连接,B 和 C 建立了对等连接,那么 A 和 C 是不相通的。这是对等连接的一个局限。
2. 专用网络设施:
如果你真的需要多个 VPC 间任意路径的互联互通,那么可以考虑使用比对等连接更为复杂和强大的专用网络设施,比如 AWS 的 Transit Gateway,和阿里云的云企业网,它们能够帮助搭建更为复杂的多 VPC 网络拓扑结构,也允许进行更精细的路由设置。
3. 混合云架构:
公有云中的私有网络,还可以和企业本地数据中心进行互联,形成混合云架构。你可以先考虑使用 VPN 这种轻量的方式,通过公网线路为两边建立连接渠道。但如果应用场景要求保证延迟和带宽,一般就需要专线进行连接了。绝大多数的云厂商,都提供了云端区域和本地数据中心进行高速互联的服务和解决方案,比如 AWS 的 Direct Connect、Azure 的 ExpressRoute 和阿里云的"高速通道"(云下 IDC 专线接入)等等。一般专线还会和 VPN 一起组合使用,来保证通道的高可用性。