前言
云计算架构作为一种基础设施服务几乎已经成为了现代Web开发的标配,它显著地降低了 DevOps(Development and Operations)的门槛,通过云服务商提供的管理平台,Web应用开发人员可以轻松地在云上搭建自己的系统。作为一名云时代的全栈开发工程师,了解云计算架构背后的机制可以让我们更好地利用这个强大的基础设施,在设计、开发、部署和维护应用程序时做出更明智的决策。同时云计算是互联网技术的延伸,通过学习云计算架构,可以更深入地掌握互联网基础知识,这对于个人的技术水平也是一个很大的提升。
为了对云计算有一个全面的了解,最近在读 《图解云计算架构——基础设施和API》 一书,这本书主要以OpenStack和AWS为例,通过API来重点讲解IaaS云服务的本质。下面是边读边整理的学习笔记,一方面可以随时回顾,另一方面希望通过输出来促进自己思考。
正文
1. 块存储资源的基本操作和API
块存储资源
块存储资源大体可分为卷和快照两大类
- 卷:实际连接到服务器上的磁盘。它具有非易失性(nonvolatility)的优点,就算服务器关机了,只要磁盘没有被物理删除或发生故障,数据就不会丢失。
- 快照:相当于卷中的数据在块级别的副本,无法直接从服务器访问,除非先将其还原成卷。它主要用于数据备份和迁移。
创建磁盘的API
在OpenStack中创建磁盘并连接到服务器只需要执行两个命令:
- Cinder:创建指定空间大小的卷
- nova:将创建好的卷连接到虚拟服务器上
对应的内部API流程:
- Cinder-创建卷:Cinder调用Keynotes的API完成认证后,向/volumes发送POST请求,创建一个指定大小的卷。云平台会立即返回创建的卷的UUID给用户,并异步处理创建。
- nova-挂载(attach):将创建好的卷连接到虚拟服务器上。这里也是异步POST处理方式。不支持跨可用区连接,当虚拟服务器和卷所属的可用区不一致时,就会发生错误。
性能衡量:吞吐量、IOPS、SR-IOV
在云环境中,卷的物理条件和网络控制方式都会对卷的性能造成影响。衡量性能的具体指标包括吞吐量(每秒的传送带宽)和IPOS(每秒的输入输出次数)。
- IOPS的高低取决于卷类型:SSD的IOPS高于Magetic
- 吞吐量取决于实例类型
- 使用服务端的SR-IOV技术解决IO瓶颈:SR-IOV(Single Root I/O Virtualization)也称为PCI透传技术或扩展网络,虚拟机管理程序透传来自各虚拟NIC的IO命令,避免串行化阻塞的瓶颈
其他API操作:快照、备份、克隆
- 快照:将针对某个时间点的卷记录下来的块级别的数据存储起来。创建快照的速度很快。
- 备份:将存储在卷中的数据存储到持久性更高的对象存储中
- 克隆:直接复制卷
多服务器共享磁盘
服务器和卷是一对多的关系,反过来多台服务器无法与同一个卷直接连接。在云环境中,依赖于共享磁盘的系统往往会使用NFS(Network File System)组件来满足共享磁盘的需求。位于同一区域下的不同可用区的服务器还可以通过NFS组件实现跨可用区的文件共享。
2. 块存储的内部结构
创建卷的内部处理过程
处理过程与创建虚拟服务器类似:
- 将创建请求存在消息队列中
- 调度器取出请求并指定在哪个存储上创建卷,然后将消息放回队列
- 由负责操作指定的存储的代理(agent)取出消息,开始实际创建卷。
连接虚拟服务器和卷:
- 请求存储到消息队列中
- 调度器指定一台虚拟机管理程序主机作为处理对象,将消息送至这台主机
在这个调度过程中,云内部也使用了API实现服务器和块存储资源间的自主协调。
小结
本节主要介绍了块存储的两大类:卷和快照,以及创建卷、连接服务器和卷的API和内部过程。资源关系:一个镜像下可以创建多个服务器,每台服务器下可以连接多个卷,而每个卷下又可以创建多个快照。