Windows Azure HandBook (1) IaaS相关技术
《Windows Azure Platform 系列文章目录》
1.Microsoft Azure底层是否由System Center和Hyper-V构成?
Microsoft Azure虽然支持Hyper-V的VHD直接上传至Azure云端进行管理,但是Azure底层技术是微软自己研发的、独有的技术,且不对外提供。如果客户想构建属于自己的私有云平台,可以使用Azure Pack,采用微软的System Center + Windows Server产品,构建自己的私有云平台。
2.我是否可以在Microsoft Azure Virtual Machine中再创建虚拟机呢?
Microsoft Azure数据中心是由成千上万台RACK组成的,每个RACK都安装了Windows Server 2012的操作系统,我们称为Host OS,即物理服务器的操作系统。
这些Windows Server 2012采用特殊版本的Hyper-V虚拟化技术,虚拟出了若干虚拟机,称为Guest OS。
Host OS内含一个Fabric Agent中控软件,以监控目前虚拟机各项信息给Fabric Controller。
Microsoft Azure的最终用户只能接触到Guest OS,而无法接触到Host OS。用户无法在Guest OS中再创建虚拟机。
3.如果Microsoft Azure所在的服务器宕机了,Azure Virtual Machine怎么恢复?
在传统IDC机房托管中,如果物理服务器发生了宕机,那所有的虚拟机都会宕机,需要人工或者监控软件来进行重新部署。
从文件高可用来说,Microsoft Azure虚拟机是以VHD格式保存的,并且在同一个数据中心做了三重冗余(支持跨数据中心的异地冗余),保证Azure Virtual Machine底层VHD文件的99.9% SLA。
从数据中心架构来说,Microsoft Azure具有自我管理的功能。Azure Fabric Controller是管理Azure数据中心的中控管理系统,你可以认为他是Azure数据中心的大脑。Azure Fabric Controller本身是融合了很多微软系统管理技术的总成,包含对虚拟机的管理(System Center Virtual Machine Manager),对作业环境的管理(System Center Operation Manager)等,在Fabric Controller中被发挥得淋漓尽致。
Azure Fabric Controller负责自动化的管理数据中心内所有的实体服务器,包含由用户要求的Microsoft Azure Guest OS的部署工作,定时的 Hotfix修补,机器状态的监控,以及管理不同版本的VM镜像等重要核心工作。Fabric Controller本身也具有高可用性
Fabric Controller也处理虚拟机的健康管理工作(Health Management)工作,当Microsoft Azure Guest OS发生死机时,会由Fabric Controller自动选择不同的实体机器重新部署与启动。
在单台Guest OS的情况下,当Guest OS宕机的时候,重新部署与启动Guest OS会需要花费一定的时间,会引起客户应用的短暂离线,所以Microsoft Azure没有单个实例的SLA。
4.微软有没有单个实例的SLA?
微软没有单个实例的SLA。举个例子,客户有一个应用部署在传统IDC机房中,一台AD Server,一台Web Server,一台SQL Server。
在Microsoft Azure Virtual Machine中,用户也可以选择使用一台Azure Virtual Machine部署AD Server,一台Azure Virtual Machine部署Web Application,使用另一台Virtual Machine部署SQL Server。但是这样的场景是没有SLA保障的。
Microsoft Azure Virtual Machine承诺的99.95%的SLA是需要2台或者2台以上的Azure Virtual Machine同时运行,且所有的Virtual Machine都需要在同一个可用性集中。对于上面实例,用户如果想在Azure中实现99.95%的SLA,需要同时部署:
-两台AD Server,放在同一个可用性集A中。
-两台Virtual Machine部署Web Application,且Web Application所在的Virtual Machine需要放在另外一个可用性集B中。
-两台Virtual Machine部署SQL Server,采用SQL Server 2012 Enterprise提供的Always-On功能,实现High Availability。且SQL Server所在的Virtual Machine需要在另外一个可用性集C中。
补充一点,微软没有单个实例的SLA主要原因有以下两点:
-从基础设施角度来说,无法预测单台物理服务器的硬件在何时发生故障,即单台物理服务器的CPU故障、网络故障、电源故障等是无法预测的。
-从物理服务器的维护来说。微软在每个月都会给Azure Virtual Machine做升级和维护,维护期一般是在周五凌晨和周六凌晨(北京、上海数据中心分别维护)。维护期窗口一般为6-8小时左右,在维护期内的虚拟机实例都会被重启,重启时间一般在10分钟左右。
即该维护期是由微软定义的,用户没有办法拒绝维护过程,用户也没办法指定微软在具体哪个时间点,维护哪些虚拟机。在维护期窗口内,任何一台Azure Virtual Machine都会被重启。但是只会影响单个实例的Azure Virtual Machine。
在Azure维护期内,会影响单个实例的Azure Virtual Machine。但是不会影响两个或者两个以上的实例(需要正确配置可用性集)。
5.微软在维护Azure Virtual Machine时会不会影响我的业务?微软是如何来保证99.95%的SLA的?
如果使用单个实例的Azure Virtual Machine,无法保证99.95%的SLA。
Microsoft Azure Virtual Machine承诺的99.95%的SLA是需要2台或者2台以上的Azure Virtual Machine同时运行,且所有的Virtual Machine都需要在同一个可用性集中。
在这种情况下,从基础设施角度来说,微软有机制可以保证同时运行的2台Azure Virtual Machine不会同时宕机。
从服务服务器的维护来说。微软在给Azure Virtual Machine做维护的时候,会监控到这2台Azure Virtual Machine在同一个可用性集中,就知道客户需要这2台Azure Virtual Machine做高可用。微软在重启Azure Virtual Machine,的时候,就不会同时重启。而是先重启其中的一台,等到这台Virtual Machine重启完毕后,再重启另外一台。这样保证在维护期窗口内,同一个时刻至少有一台Virtual Machine在线。
如果客户部署了2台Azure Virtual Machine但是没有设置可用性集。微软在给Azure Virtual Machine做维护的时候,发现这2台Azure Virtual Machine没有关联,就会同时重启这2台Azure Virtual Machine,造成服务off-line。
6.什么是可用性集?
这里有两个非常重要的概念:故障域(Fault Domain)和更新域(Update Domain)。
我们先说说故障域。先举个例子,笔者的书房有一个插线板,插线板上接了我的笔记本电脑,手机充电器,电视机等电器。如果这个插线板断电了,那这个插线板上的所有电器都会断电。这个插线板和上面的电器组成了一个故障域。
Microsoft Azure数据中心基础设施由很多的RACK组成,每一个RACK都被称为故障域。当RACK出现硬件故障时候,在RACK上的服务,不管是 Azure的计算服务、存储服务等等都会宕机。
当客户部署了2台 Azure Virtual Machine,但是没有设置可用性集的时候,Microsoft Azure可能会把这2个Azure Virtual Machine部署在同一个RACK上,这样就可能会出现单点故障。因为这1个RACK宕机了,上面运行的2个Azure Virtual Machine都会宕机。两个Azure Virtual Machine宕机的概率和一个Azure Virtual Machine的概率是一样。
而设置了可用性集的情况下,Microsoft Azure就会把这2台Azure Virtual Machine部署在2个不同的RACK上。微软从数据中心底层设计上,可以保证这2个不同的RACK不会同时宕机。
然后我们谈谈更新域。比如我有2台Azure Virtual Machine做了负载均衡,名称为VM1和VM2,都部署了我的Web Application,版本为1.0,他们部署在不同的更新域Update Domain中。将来我的软件版本做了更新,升级到了2.0版本,有两种选择:
- 用户同时更新这2台Azure Virtual Machine的软件版本。但是这样如果有客户端发起请求,会造成服务器端的无法响应。
- Azure Fabric Controller监控这2台Azure Virtual Machine。首先更新Update Domain 0中的虚拟机软件。更新完毕后再更新Update Domain 1中的虚拟机软件,一直到所有的Azure Virtual Machine中的Web Application更新完毕,这样保证在同一时刻至少有1台Azure Virtual Machine能够响应客户端的请求。
以下是故障域(Fault Domain)和更新域(Update Domain)的截图:
7.Microsoft Azure如何保证CPU、内存、硬盘的性能?
回答:传统的Hyper-V技术,CPU是共享的。比如笔者的ThinkPad T430S是4Core/8GB,安装了Windows Server 2012 R2操作系统,并且使用Hyper-V虚拟出3台虚拟机。那该笔记本的物理操作系统 + 3台虚拟机操作系统本质上都是共享4Core CPU的。
在Microsoft Azure提供的虚拟机类型如下:
虚拟机类型 | CPU | RAM | 外挂磁盘数量 | MAX IOPS |
A0 | 共享 | 768MB | 1 | 500 |
A1 | 1 | 1.75GB | 2 | 2 * 500 |
A2 | 2 | 3.5GB | 4 | 4 * 500 |
A3 | 4 | 7GB | 8 | 8 * 500 |
A4 | 8 | 14GB | 16 | 16 *500 |
A5 | 2 | 14GB | 4 | 4 * 500 |
A6 | 4 | 28GB | 8 | 8 * 500 |
A7 | 8 | 56GB | 16 | 16 * 500 |
除了A0的虚拟机类型,它的CPU是和别的用户共享的。其他类型的虚拟机,比如A1-A7,它的CPU是独占的,不是和别的用户共享的。比如物理服务器是20Core,那这个物理服务器只能虚拟出2台A7的Azure Virtual Machine(8Core/56GB),另外多余的4Core要预留给物理服务器。
关于硬盘的性能保证,微软是保证磁盘的IOPS。
注意:Azure VM CPU和RAM是固定搭配的,不可以按照用户的想法随意更改。
Windows Azure HandBook (1) IaaS相关技术的更多相关文章
- Windows Azure HandBook (9) Azure性能测试(2)
<Windows Azure Platform 系列文章目录> 在上一节中,笔者介绍了我们在Azure性能测试之前,首先需要提交<渗透性测试表> Windows Azure H ...
- Windows Azure HandBook (2) Azure China提供的服务
<Windows Azure Platform 系列文章目录> 对于传统的自建数据中心,从底层的Network,Storage,Servers,Virtualization,中间层的OS, ...
- Windows Azure HandBook (3) 浅谈Azure安全性
<Windows Azure Platform 系列文章目录> 2015年3月5日-6日,参加了上海的Azure University活动.作为桌长与微软合作伙伴交流了Azure相关的技术 ...
- Windows Azure HandBook (4) 分析Windows Azure如何处理Session
<Windows Azure Platform 系列文章目录> 本文是对笔者之前的文章Windows Azure Cloud Service (13) 多个VM Instance场景下如何 ...
- Windows Azure HandBook (5) Azure混合云解决方案
<Windows Azure Platform 系列文章目录> 在很多情况下,我们都会遇到本地私有云和公有云做互通互联的混合云场景.对于这种混合云的场景,微软的Windows Azure会 ...
- Windows Azure HandBook (6) Azure带宽与Azure Blob云存储
<Windows Azure Platform 系列文章目录> 在笔者这几年Azure售前工作中,经常会遇到客户提同样的问题:Azure 虚拟机的带宽是多少?Azure提供独享带宽吗?这个 ...
- Windows Azure公有云服务相关方案
http://www.cnblogs.com/sennly/p/4139675.html 1.公有云平台服务简介 Windows Azure 是一个灵活而开放的云平台,通过该平台,您可以在数据中心快速 ...
- Windows Azure HandBook (7) 基于Azure Web App的企业官网改造
<Windows Azure Platform 系列文章目录> 1.用户场景: C公司是全球大型跨国连锁餐厅,在世界上大约拥有3万间分店.其IT系统主要部署其海外数据中心,或者租用其他ID ...
- Windows Azure HandBook (8) Azure性能测试(1)
<Windows Azure Platform 系列文章目录> 我们在项目上线之前,常常需要对部署在微软云上的应用软件做压力测试. 一般的压力测试,常常在本地计算机安装压力测试软件 (比如 ...
随机推荐
- Database Schemas Found in Oracle E-Business Suite
https://docs.oracle.com/cd/E26401_01/doc.122/e22952/T156458T659606.htm Table of Database Schemas in ...
- 更高效地提高redis client多线程操作的并发吞吐设计
Redis是一个非常高效的基于内存的NOSQL数据库,它提供非常高效的数据读写效能.在实际应用中往往是带宽和CLIENT库读写损耗过高导致无法更好地发挥出Redis更出色的能力.下面结合一些redis ...
- Linux 循环
200 ? "200px" : this.width)!important;} --> 简介 if循环 if conditon then commandselse comma ...
- 3、CC2541芯片中级教程-OSAL操作系统(ADC光敏电阻和修改串口波特率)
本文根据一周CC2541笔记汇总得来—— 适合概览和知识快速索引—— 全部链接: 中级教程-OSAL操作系统\OSAL操作系统-实验01 OSAL初探 [插入]SourceInsight-工程建立方法 ...
- 手把手教你用python打造网易公开课视频下载软件2-编码相关说明
函数getdownLoadInfo(url)主要实现核心功能:根据url地址,获取课程信息:课程名(courseTitle),课程数目(courseCount),可下载视频数目(videoCount) ...
- js模版引擎handlebars.js实用教程——if-判断的基本用法
返回目录 <!DOCTYPE html> <html> <head> <META http-equiv=Content-Type content=" ...
- 博文写作——摘要&摘要图标
问题描述: 写博文的时候,一个比较好的习惯就是在博文的开头用简短的文字介绍一下本篇博文的大致内容.在博客园系统里面,如果博文没有在指定的地方添加摘要内容,那么系统会自动截取博文的开始部分作为摘要.如下 ...
- C#入门基础三
封装:简化用户接口,隐藏实现细节. get{return 属性值:} set{属性值 = value:} 继承:子类继承父类所有非私有成员.继承具有传递性,单根性. 隐式继承:用引号(:)实现. 显示 ...
- DDD~基础设施层~续
回到目录 在之前写的DDD~基础设施层文章中,提到了UnitOfWork,它里面有一些方法,但经过项目证明,不应该有Save和IsExplicitSubmit,而这个工作单元只起到了数据上下文统一的作 ...
- 爱上MVC~一个Action多套View模版的设计
回到目录 模块化 这个问题是在做模块化设计时出现的,在Lind.DDD.Plugins模块里,需要对应的模块实体,模块管理者,模块标识接口等,开发时,如果你的功能点属于一个模块,需要实现IPlugin ...