Microsoft Azure 虚拟机器服务

Microsoft Azure 虚拟机器服务 是 Microsoft Azure 平台的基础建设服务之一，且是运算类服务的核心，由微软资料中心的实体伺服器虚拟化后产生的虚拟机器提供，虽然虚拟机器会供应 Microsoft Azure 平台内所有需要运算资源的服务 (如 Cloud Service、Web App、Service Fabric 以及其他类型服务)，但虚拟机器服务会开放足够的管理与控制权给系统管理人员或网路管理人员，让他们有权力操作整台虚拟机器。
虚拟机器服务自 2012 年 Spring Release 阶段正式推出，目前已是 Microsoft Azure 平台上使用率最高的服务。

**服务类型**
虚拟机器服务是由Azure 云端服务的 VM Role 所发展出来的服务，将机器的管理权与控制权交给系统管理人员自行维运，以获得较大的可控制与相容性，虚拟机器会使用到如虚拟网路以及储存服务 等资源来支援网路通讯与资料储存功能。
Azure将虚拟机器分为两种类型，一种是标准型的虚拟机器 (Standard)，拥有完整的虚拟机器服务功能，如负载平衡 (Load Balancing) 与自动扩展 (Auto Scale) 的能力，另一种是基本型的虚拟机器 (Basic)，基本层无法使用负载平衡与自动扩展能力，但其他功能与标准型相同，基本层也只能使用 A0~A4 (Extra Small, Small, Medium, Large, Extra Large) 五种等级的虚拟机器，标准型则可使用全部的虚拟机器类型。
虚拟机器的计费方式是以分计费，计算基准为虚拟机器启动时到虚拟机器被停止 (或删除) 并释放出资源时为止。

**虚拟机器类型**
Azure 虚拟机器依照运算能力区分为数种类型 ，共分为一般性运算能量的 A 类型、经效能提升的 D 类型以及拥有最强运算效能的 G 类型，未来也会推出使用GPU运算的 N 类型。

**Azure 计算单元**
Azure 计算单元 (Azure Compute Unit, ACU) 是一个可用于比较 Azure 虚拟机器之运算效能的方法，现阶段是以 Standard_A1 虚拟机等级为标准，数值为 100。

**A 类型**
A 类型是 Azure 一开始就提供的标准虚拟机器类型，使用 AMD 的 CPU 以及传统 SATA 介面的硬碟，提供最标准不需太高运算能量的应用，早期是以五种规格推出，分别是 Extra Small (XS)、Small (S)、Medium (M)、Large (L) 以及 Extra Large (XL) 五种，除了 XS 记忆体使用 0.75GB 记忆体外，其他是以 1.75GB 记忆体，每晋一级就会加倍，可作为衡量运算资源与成本的标准之一。不过在虚拟机器种类愈来愈多的情况下，A 类型也做了扩充，现在除了原有的五类外，还多加了 A5~A7、A8~A11等七种规格。
A5~A7 与 A8~A11 均使用 Intel Xeon E5 系列 CPU，但 A5~A7 的记忆体量比 A2~A4 高；A8~A9 与 A10~A11 规格相同，但 A8~A9 有支援 HPC 的 InfiniBand 网路介面与 RDMA 技术，A10~A11 则无。
A0~A7 系列的 ACU 为 50~100，A8 以上的 ACU 为 225。
Av2 系列的 ACU 为 100。

**D 类型**
D 类型是 Azure 在 2013 年推出的类型，它使用比 A 类型更好的 CPU，并且在实体伺服器上使用固态硬碟 (SSD)，以加速在本地运算时的 I/O 速度，另外，为满足提升虚拟机器本身的 I/O 量的需求，微软开发了高阶储存体 (Premium Storage) 用来保存虚拟机使用的 VHD (称为 OS Disk)，而使用高阶储存体的 D 类型虚拟机器，称为 DS 类型。
D 与 DS 类型的 ACU 为 160。
2015年，微软利用新的 Intel Xeon E5-2673 v3 CPU 的伺服器组建了 D 类型的第二版，称为 Dv2，可获取 D 类型虚拟机高 35% 的效能。
Dv2 的 ACU 为 210~250。
DSv2 类型的 ACU 为 210~250。
微软于 Build 2017 研讨会上宣布，Dv3 将于今年推出，并支援巢状虚拟化。

**G 类型**
G 类型是 Azure 拥有最强运算与 I/O 能量的虚拟机器，它使用 Intel Xeon E5 v3 系列 CPU，并且配备较大量的记忆体，可用于需要大量又高速的运算需求，例如资料库或是科学运算。与 D 类型相同，G 类型也可利用高阶储存体来加速 I/O，使用高阶储存体的 G 类型虚拟机器，称为 GS 类型。
G/GS 系列的 ACU 为 180~240。
注：GS5等级会部署到单一客户专用的硬体。

**N 类型**
N 类型是 Azure 在 2015 年宣布的新虚拟机器类型，包含两种类型：- NC 使用 NVIDIA 的 Tesla K80 GPU 卡，可用于能源探勘应用程式、当机模拟、光线追踪转译、深入学习等，K80 提供 4,992 个 CUDA 核心。- NV 使用 NVIDIA 的 Tesla M60 GPU 卡，可用于桌面加速应用程式和虚拟桌面，可供客户从中将其资料或模拟视觉化，也适用于编码与转译，M60 提供 4096 个 CUDA 核心，最多可供 36 个 1080p H.264 的串流能力。
2017 年即将推出新的 ND 系列与 NC v2 系列，搭载 NVIDIA Tesla P40 与 P100 GPU 。
注 1: 1 GPU = 1/2 M60 (NV) 或 1/2 K80 (NC)
注 2: Standard_NC24r 支援 RDMA 运算

**F 类型**
F 类型是以 Intel Xeon 2673 v3 (Haswell) 等级的 CPU 为基础，提供高效能运算的服务，与 D 等级第二版 (Dv2) 的 CPU 相同，但价格较便宜。
F 类型适用于需要高速 CPU，但不需要太多记忆体或本机 SSD 的工作负载。
Fs 类型是轻量化的 F 类型，但仍提供 F 类型的所有优点。
F/Fs类型的 ACU 为 210~250。

**L 类型**
L 类型适用于需低延迟本机储存体的工作负载，例如 NoSQL 资料库 (如 Cassandra, MongoDB, Cloudera 与 Redis)，使用 Intel Xeon E5 v3 处理器，等同于 G/GS 类型的 CPU 效能。
L 系列为 ACU 为 180~240。

**H 类型**
H 类型是以高端运算需求为目标设计，使用 Intel Haswell E5-2667 v3 CPU、DDR4 记忆体、SSD 与 RDMA 来加速运算，适用于如分子建模及运算流体力学等。
H 系列的 ACU 为 290~300。

**作业系统类型**
Azure 虚拟机器支援 Windows 与 Linux 作业系统，并且依 Azure 与其协力厂商或伙伴的合作关系，提供有预先搭载软体的虚拟机器映像 (Image)。

**Linux**
Azure 支援下列 Linux 作业系统：- OpenLogic CentOS 6.3+, 7.0+- CoreOS 494.4.0+- Debian 7.9+, 8.2+- Oracle Linux 6.4+, 7.0+- Red Hat Enterprise Linux 6.7+, 7.1+- SUSE Linux Enterprise 11 SP3+, 12+, SLES for SAP 11.3+- openSUSE 13.1+- Ubuntu 12.04, 14.04, 15.04, 15.10

**Windows**
Azure 支援下列 Windows 作业系统:- Windows Server 2008 R2 SP1- Windows Server 2012- Windows Server 2012 R2- Windows Server 2016 - Windows 7、Windows 8、Windows 8.1、Windows 10 等用户端作业系统 (仅有 MSDN 订阅户才能使用)

**预载软体**
Azure 除了提供标准作业系统的映像外，也有提供数种已经预载合作厂商或微软自家产品的虚拟机器映像，让管理人员一开始就能拥有已设定好的虚拟机器，不过此类虚拟机器的费用会比仅有标准作业系统的虚拟机器要高，因为费用已内含授权费。企业也可以利用授权可携性 (License Mobility) 将企业内已采购的授权移到 Azure 虚拟机器使用，而微软的虚拟机器也可以另制成映像下载到地端使用，但当映像下载到地端时，其软体的版权就必须自负。- Red Hat Enterprise Linux- SQL Server 2014- BizTalk Server 2013- SharePoint Server 2013- Oracle (有 Oracle Database 与 Oracle WebLogic Server)
除了 Azure 入口网内提供的映像外，在 Azure Marketplace 内也有其他预载软体的虚拟机器，其费用以标准作业系统类型计算，但内含的软体授权必须自行准备。

**磁碟类型**
一台已部署完成的 Azure 虚拟机器，其初始的磁碟有两个，一个是作业系统本身的磁碟机 (C:\ 或 /dev/sda)，这个磁碟机是保存在 Microsoft Azure 储存体 内的 VHD，又称为 作业系统磁碟 (OS Disk)，最大容量 127GB，Azure 供应的标准作业系统都是采用这个规格建置，若是由企业自行使用 Hyper-V 制作的映像，则视当时制作时使用的大小决定，但不可超过 127GB (这是 VHD 的技术限制)。
另一个是虚拟机器所在的实体伺服器上的硬碟 (D:\ 或 /dev/sdb)，依虚拟机器的类型不同，可以是 SATA 磁碟机 (A 类型) 或是 SSD 磁碟机 (D 与 G 类型)，但它们的共通点是，它们都只适合用来暂存资料，因此被称为暂存磁碟机 (Temporary Disk)，这是基于 Azure 平台会自主侦测虚拟机器健康状态，当 Azure 发现虚拟机器没有回应时，就会启动复原机制，将虚拟机移到另一台实体伺服器启动，这时原本存在暂存磁碟机的资料并不会跟随移动过去，所以暂存磁碟机不能用来储存持久性资料，而是用来处理应用程式所产生的暂存性资料，或是作为缓冲区使用。
若需要在虚拟机器上保存永久性资料，则应该另外建置资料磁碟 (Data Disk)并附挂到虚拟机器内 (E:\ 起，或是 /dev/sdc 起)，不同等级的虚拟机器可挂的资料磁碟有限制，从 1 台到 16 台不等，资料磁碟是建置于 Azure 储存体之上，所以具有可持久的保存能力，而且也享有 Azure 储存体所提供的 SLA 水准。

**网路功能**
Azure 虚拟机器的网路功能是依赖虚拟网路服务的网路连线能力，早期 Azure 虚拟机器是由 Azure 自行管理的大型虚拟网路组态所供应，但 2014 年起，微软配合 Resource Group 管理模式的导入，强制要求 Azure 虚拟机器必须部署在由使用者自行建置的 Azure 虚拟网路内，其内部的 IP 管理亦由 Azure 虚拟网路负责。
虚拟机器对 Internet 的网路有两种模式，一种是由 Azure 负载平衡器 (Azure Load Balancer) 提供，早期 Azure 虚拟机器对外的 IP 资源是一开始就会配给，而这也是 Azure 的计费基准之一，称为 Azure Public IP (公用 IP)，虚拟机器一开机就会配给，一关机就会释放，所以 IP 位址不稳定，若要让 IP 稳定，就需要使用保留 IP (Reserved IP)，保留 IP 需特别建立并设定给虚拟机器。DNS 名称则是由 Azure 云端服务 提供，Azure 云端服务会在 Azure 负载平衡器上注册 DNS (*.cloudapp.net)，所有与此云端服务关联的虚拟机器都使用这个 DNS 连入，同时 Azure 负载平衡器上的通讯埠也是由Azure 云端服务管理。
2015年，在 Resource Group 的管理模式下，虚拟机器的网路资源被拆分出来，IP、负载平衡器、网路安全群组、网路卡 (NIC) 等个别的负责各自的工作。- 网路卡：负责虚拟机器与网路的联系，一台虚拟机器可配置的网路卡数量依其等级决定。- 负载平衡器: 由网路卡决定要连线的负载平衡器，可以是 Azure 负载平衡器或是内部的负载平衡器。- 网路安全群组: 负责网路的通讯埠存取控制表管理。- IP: 配置在网路卡上，可以是内部虚拟网路的 IP 或是公用 IP，且可以不配置公用 IP。

**管理方式**
虚拟机器建置完成后，可采用远端桌面 (Remote Desktop) 或是 SSH 的连线方式连至虚拟机器进行管理。
对虚拟机器的组态，则有几个管道能进行:- Azure PowerShell 的虚拟机器管理指令 (AzureRM.Compute)- Azure CLI 的虚拟机器管理指令- Azure Portal- Azure RDFE API，外部工具都是使用这个管道，例如 System Center Virtual Machine Manager (SCVMM) 或 System Center App Controller 等。

**高可用度与扩展**
为达成高可用度 (High Availability)，Azure 虚拟机器采用了可用集 (Availability Set) 的概念 ，可用集规范了虚拟机器的失效域配置 (Fault Domain)，当虚拟机器部署在同一个可用集时，其实体的部署就不会放在同一个机架 (Rack) 的伺服器内，而是会分散配置，以避免因为机架出问题导致的单点失效问题。系统管理人员可依需求设定一个或多个可用集来配置虚拟机器，以提升可用度。同时，若需要实作跨区域的高可用度，系统管理人员也可以利用Azure站台复原 (Azure Site Recovery) 备援服务处理虚拟机器云端对云端的备援工作。
Azure 虚拟机器支援横向 (Scale Out/In) 自动扩展 (Auto Scale)，与手动的纵向扩展 (Scale Up/Down)，纵向扩展可用指令或是在 Azure Portal 操作，横向扩展则需要由系统管理人员事先部署好相同等级规格的虚拟机器后，利用 Azure Portal 进行设定。但为了要简化此类部署的时间与成本，微软开发了新一代的部署技术，称为虚拟机器扩展集 (VM Scale Set)，利用资源范本的能力，让系统管理员预先设定好具相同规范 (虚拟机器本身的组态与网路组态等) 的虚拟机器群，等待需要扩展时，再由制定好的规范产生虚拟机器即可。