上一篇文章面向公有云:快速上云实践(1)选区与规格中,笔者为大家介绍了在公有云上如何选择合适的地区和服务器规则。其中特意指出计算、存储、网络是云上资源的三驾马车,而服务器的规则其实代表云上计算资源能力。本文将继续为大家公有云上存储和网络资源的相关内容。
云盘-块存储篇
云硬盘,即云虚拟机上可以挂载和使用的硬盘,又叫做“云磁盘”或者“云盘”。云盘是云上提供的“裸盘”,可以格式化并且施加文件系统,既包含了用于承载操作系统的系统盘,也包括了承载数据的数据盘。在云计算的领域,也习惯叫云端磁盘服务叫做块存储(Block Storage)或者弹性块存储(EBS, 与弹性计算ECS相对应),
块存储的名字,是因为它与 Linux 操作系统中的块设备(理解Linux操作系统中的块设备 - 知乎)相对应,如果熟悉liunx IO的同学应该会很熟悉这个概念。
既然是硬盘,当然是带有数据持久化功能的,也就是说写入的数据不会丢失。即便所在虚拟机重启、关机甚至下线删除,这块云硬盘只要还存在,其中的数据也并不会被擦除。不仅如此,云厂商对于云盘在会保障数据的顺利写入的同时,还实现了在存储端同步和保留至少三份副本的数据,保证数据不丢失。
目前的云行业中,存储成本是很低的,因为云厂商通常把很多过保的机器用于存储副本数据,这些过保的机架虽然单个节点的计算资源(CPU和内存)可靠性达不到云厂商的SLA,但是存储资源还是却是可以被充分利用的。更何况三副本数据只要有一个节点的数据正常,上面的数据就不会丢失,这又大大降低了存储故障的风险,因此,作为块存储资源是过保机器的一个重要的利用场景,大大降低了存储的成本。
云盘资源都是远程的,即计算资源和存储资源两者是通过数据中心内部的特有 IO 线路进行连接,也就是我们前篇提到的“计算存储分离”架构的一种体现。我们在购买云上服务器的时候,会有“IO 优化实例”(AWS 上称为 EBS-Optimized)选项,它就是指云虚拟机与云硬盘之间的网络传输,进行了软硬件层面的优化,这样可以充分地发挥所挂载磁盘的性能。现在较新型号的云服务器都是自动启用了IO优化。
云盘还支持热挂载特性,让它使用起来特别灵活方便,支持动态添加和删除,而且大小性能任你调度。挂载后的云硬盘真正使用起来,和你熟悉的硬盘操作也并没有什么两样。
云盘性能分级
97150c100ba7b7d25dd5750e1c01ad13云盘的性能,可谓“一分钱一分货”,但不是越贵越好,根据自身情况,够用就行。
云盘的性能可以分为如上图的几个等级:
- 普通云盘,是基于传统 HDD 硬盘构建而成的。 性能一般,IOPS 在几百左右,成本很低,适用于工业测试环境或者个人使用。
- 高效云盘,往往是结合 HDD 和 SSD 硬盘构建的云硬,性能在 IOPS 几百到数千,性能比普通云盘高,但是价格有可以接受,一般是默认选项。
- SSD云盘,它的存储介质就是纯 SSD 硬盘,IOPS 通常能够上万,也有相当不俗的吞吐量和较低的访问延时。用它可以来承载生产环境中重要的关键业务应用,或是各类数据库等 IO 密集型应用。
- ESSD云盘,最高等级,采用更新一代的企业级闪存硬件,配合自研或改进后的底层传输协议,和虚拟化技术栈的优化来提供服务。因此它能够达到惊人的性能水平,满足我们最为苛刻的性能场景需求,比如承载 SAP HANA(SAP 的高性能计算平台)、高并发 OLTP 数据库等等。这类 SSD 云盘的 IOPS 通常能够突破十万以上。但是库存有效价格也比较贵,只适合特定的场景。
云盘大小与性能
需要大家注意,云盘的容量影响云盘的性能,也就是说同等级的云盘下,云盘空间越大性能就越好。所以在某些时候,你可能需要刻意地增大所申请的云硬盘的容量,以获取更高的性能,即便这些额外的空间不一定能被用上。虽然有些反常规,但是这是由于云盘特性造成的,云盘底层是由许多大容量磁盘组成的,某一块大盘里面切出一小块,就是我们购买的云盘,也会相应地在这块大盘的读写总通道中按照比例分给一部分给我们的云盘作为IO能力。所以,自然是容量越大,分到的比例越高,IO能力越强。
云上使用本地盘
当一些应用软件系统本身考虑到了硬件的不可靠性,设计了上层的存储冗余机制时,你就可以考虑采用本地磁盘。因为这种情况下,本地磁盘的可靠性缺陷得到了弥补,它的相对高性能和低成本就成为了优势。比如,你要在云上用虚拟机自己搭建一个经典的 Hadoop 集群,要用虚拟机的磁盘组合成 HDFS(Hadoop 的分布式文件系统),并希望使用 MapReduce 或 Spark 等支持数据本地性(Data Locality)的计算框架。这时,你就应该考虑使用带有本地磁盘的机型了。
不过,虽然本地盘可以提高性能,但是当机器关机或删除,以及出现硬件故障时,本地磁盘上的数据就可能损坏或丢失,因此使用门槛较高。
省钱心得
云硬盘的付费模式,同样有按量付费和包年包月之分。在很多的云上,你能够为一块云盘启用包年,长期租用的确定性也能够给你带来折扣,这和虚拟机资源的包年包月是一样的。因为相比计算资源,存储资源成本较低,所以可以把计算资源和存储资源分开购买,比如购买长期生效的云盘,等有计算需求的时候再购买ECS云服务器,然后热挂载你长期购买的云盘保存数据,等计算需求过去,释放器云服务,但是你的数据在云盘上不会丢失。
网络-VPC篇
何为VPC
云上的VM的网络有个专有名词,叫虚拟私有网络(Virtual Private Cloud,简称 VPC) ,也被称为专用网络或者弹性网络。所谓私有网络就是一张私有的内部网络。内网之内的服务器和设备,可以比较自由地互相通信,与外界默认是隔离的。如果外部互联网,或者其他虚拟网络需要连接,则需要额外的配置。
VPC全称是Virtual Private Cloud,翻译成中文是虚拟私有云。但是在有些场合也被翻译成私有网络或者专有网络等。这里其实就有些让人迷惑,VPC究竟是指云还是网络?答案是,VPC即是一种云,也是一种网络模式,不过应该从服务和技术的角度分别来看。
首先从服务的角度来看,VPC指的是一种云(Cloud),这与它的字面意思相符。对于基础架构服务(IaaS),云就是指资源池,是一种运行在公有云上,将一部分公有云资源为某个用户隔离出来,给这个用户私有使用的资源的集合。VPC是这么一种云,它由公有云管理,运行在公共资源上,但是保证每个用户之间的资源是隔离,用户在使用的时候不受其他用户的影响,感觉像是在使用自己的私有云一样。
从技术角度来看,VPC是用户专属的一个二层网络。
imgAWS的网络产品,在VPC之前称为EC2-Classic,也就是经典网络。之前@左耳朵耗子的热帖 《关于阿里云经典网络的问题》说的就是这两种网络模式:Classic和VPC。他们之间最核心的区别是:经典网络提供的是多用户共享的网络,而VPC提供的是用户专属的网络。
这里的网络就是指二层网络,经典网络模型本身有很多问题,其中最大的问题就是安全问题。除非加了特定的防火墙规则去拦截,二层网络内的所有设备默认是可以通信的。这就好比大家都挤在一个房间里,彼此的隐私很难保障一样。稍有不慎,云主机就可能被同网络的其他用户恶意攻击。而VPC能够为每个用户一个专属独立的二层网络。这样相当于给每个用户分了个房间,用户的隐私更容易得到保障。就算有恶意攻击,一般也要走到网关或者VPN设备,在这些集中的设备上,网络流量更可控。
另一个方面,由于每个用户都有专属的二层网络,那说明VPC模式下的可用二层网络的数量是远超经典模式的。虽然各家都没有公布自己的实现细节,但是这里有点类似VXLAN和VLAN的关系。VXLAN可以有1600万个二层网络,VLAN只有4000多个二层网络。公有云与私有云的区别在于用户数量巨大。如果采用VLAN,每个用户一个二层网络,那最多只能带4000多个用户,公有云许多用户还是只有1-2个云主机那种,那必然不能满足公有云的需求,所以在早期的经典网络模式下,不得不让多个用户挤在一个网络里面。而如果采用VXLAN之类的技术,则可以保证在一个region里面为1600万个用户每人分到一个二层网络。
因为VPC是一个用户专属的网络,用户可以任意定义VPC内云主机的IP地址。二层隔离了,IP地址想怎么玩就怎么玩。而在经典网络模式下,大家挤在一个二层网络里面,IP地址首先要保证不要重合,这对用户和服务商来说都不是一件心情愉快的事情。
VPC组成
imgVPC作为私有网络,也是局域网一样由如下几个部分组成:
- 网段,私有网络的内部 IP 区段,通常用 CIDR 形式来表达,如 192.168.0.0/16。
- 子网,私有网络的下级网络结构,一个私有网络可以划分多个子网,这和通常意义上的子网也是对应和一致的。阿里云中把子网形象地称为“交换机”。
- 路由表,用于定义私有网络内流量的路由规则,决定着数据包的“下一跳”去向何方。每个子网都必须有一张关联的路由表,通常情况下,系统会自动帮你创建一个默认的路由表。
- 网关,是对进出私有网络的流量进行把守和分发的重要节点,根据用途的不同,有多种类型,后面我们还会讲到。
- 安全组,私有网络里虚拟机进出流量的通行或拦截规则,可以起到虚拟机网络防火墙的作用,我们曾经在第 2 讲中提到过它。
我们可以建立跨可用区,也就是跨同区域内不同数据中心的私有网络.
如果在没有 VPC 的情况下直接创建虚拟机,公有云一般都会为你自动生成 VPC, 强烈地建议读者不要让系统自动建立 VPC,而是先自行建立好 VPC,配置好子网和网段等重要参数,然后再创建云虚拟机“入住”。因为这样,使用者会事先让自己有一个明确的网络规划,对整个 VPC 的把控和理解也会更强。
VM & 网卡
虚拟机的网卡,又称弹性网卡(Elastic Network Interface, 简称 ENI)。虚拟机的网卡一方面是和虚拟机的本体进行绑定,另一方面则嵌入某个私有网络的子网,也会拥有至少一个私网 IP。
- 一个虚拟机可以绑定多块网卡,有主网卡和辅助网卡之分;
- 一块网卡隶属于一个子网,可以配置同一子网内的多个私有 IP;
- 辅助网卡可以动态解绑,还能够绑定到另一台虚拟机上。
这再次体现了云计算的解耦特征,在某些场景下是非常有用的。比如,有一台服务线上流量的机器,而且线上流量导向的是它的辅助网卡,那么当这台机器因故无法正常工作时,你在排查问题的同时可以考虑这样一个应急的办法:将这台机器的辅助网卡迅速解绑,并重新绑定到待命的备用机上。这样就能够比较快地先恢复对外服务。
img弹性IP
在公有云上购买VM一般会自动生成一个临时到的IP,但是强烈建议尽量不要使用和依赖这个自动生成的公有 IP。因为它本质上是一个从公有云的 IP 池中临时租用给你的 IP。如果你的机器关闭或重启,下次获得的 IP 可能就完全不同了。弹性 IP(Elastic IP),有些云称为 eIP。弹性 IP 一旦生成,它所对应的 IP 是固定、不会变化的,而且完全属于你所有。这非常适合需要稳定 IP 的生产环境。
它所谓的弹性,其实是指可以非常自由地解绑和再次绑定到任意目标。你本质上是买下了这个 IP 的所有权,将这个 IP 赋予谁,是你的权利,而且你还可以动态按需切换。 当你有一个域名,需要让 DNS 服务解析到某个外部 IP,你就应该建立一个弹性 IP,绑定到相关资源后,让域名解析到这个弹性 IP,而不应该使用虚拟机自动匹配的公有 IP。因为后者是不稳定的。
VPC与外网互通
我们希望内网的机器和外界并不完全隔离,一些互联网流量需要有序地引进来,一些内网机器也需要访问外网。这时需要使用到的网关(NAT,Network Address Translation), 其还可以分为SNAT和DNAT
从定义上讲,SNAT是原地址转换,DNAT是目标地址转换。区分这两个功能可以简单的由服务的发起者是谁来区分,内部地址要访问公网上的服务时,内部地址会主动发起连接,将内部地址转换成公有ip。网关这个地址转换称为SNAT。当内部需要对外提供服务时,外部发起主动连接,路由器或着防火墙的网关接收到这个连接,然后把连接转换到内部,此过程是由带公有ip的网关代替内部服务来接收外部的连接,然后在内部做地址转换,此转换称为DNAT.主要用于内部服务对外发布。
如果需要VPC网络来访问外网,可以在网关上设置SNAT条目,它非常适合让私有网络的主机共享某个公网 IP 地址接入 Internet。注意,这是一种从内向外的、单向的连通形式.
反之,如果要引导外网流量进入VPC,除了最简单的eIP绑定到虚拟机之外,主要考虑使用负载均衡和DNAT,让VPC的网关将外网请求的目标地址从公网IP装换为内网地址。
img扩展阅读
面向公有云:快速上云实践(1)选区与规格
网友评论