Mark Russinovich的技术博客涵盖
Windows故障排除、技术和安全等主题。

Windows Azure主机更新:原因、时间和方式

Windows Azure的计算平台(其中包括
Web Role、Worker Role
和虚拟机)基于计算机虚拟化。对基础操作系统的深入访问使 Windows Azure的平台即服务
(PaaS)与许多现有软件组件、运行时和语言唯一兼容,当然,如果没有这种深入访问(包括用户自己提供操作系统映像的能力),Windows Azure的虚拟机则不能归类为基础设施即服务
(IaaS)。

主机操作系统和主机代理

当然,计算机虚拟化意味着,您的代码无论是部署在 PaaS Worker Role还是
IaaS虚拟机中,均在 Windows ServerHyper-V虚拟机中执行。每台
Windows Azure服务器(也称为物理节点或主机)托管一个或多个虚拟机(称为“实例”),这包括在物理
CPU 内核上调度这些虚拟机、为它们分配专用 RAM,以及授权并控制对本地磁盘和网络
I/O 的访问。

下图显示了服务器软件体系结构的简化视图。主机分区(也称为根分区)将 Windows Server的
Server Core配置文件作为主机操作系统运行,您可以看到图解和标准
Hyper-V 体系结构图之间的唯一区别是,Windows Azure结构控制器
(FC)主机代理 (HA)存在于主机分区中,此外在来宾分区中还有一个来宾代理
(GA)。FC是
Windows Azure计算平台的大脑,HA是其代理,负责将服务器整合到平台中,以便
FC可以部署、监控和管理定义 Windows Azure云服务的虚拟机。只有
PaaS角色具有 GA,它是
FC 的代理,可为角色提供运行时支持并监控角色的运行状况。

主机更新的原因

要确保 Windows
Azure 为应用程序提供可靠、高效且安全的平台,需要提供具有安全性、可靠性和高性能的更新对主机操作系统和
HA 进行修补。正如您会考虑 Windows Update重启您自己安装的
Windows的频率,我们会以大约每月一次的频率将更新部署到主机操作系统。HA由多个子组件组成,例如网络代理
(NA)和虚拟机虚拟磁盘驱动程序,前者用于管理虚拟机 VLAN,后者用于将虚拟机磁盘连接到包含其在
Windows Azure 存储中的数据的 Blob。因此,我们会根据修补程序或新功能准备就绪的时间,以不同的时间间隔更新
HA 及其子组件。

部署更新时可以采取的步骤取决于更新的类型。例如,几乎所有与
HA 相关的更新在应用时都无需重新启动服务器。但是Windows操作系统更新几乎总是至少有一个补丁,通常还可能有多个,会导致重新启动。因此,我们让
FC 在每台服务器上“暂存”我们作为
VHD 部署的新版操作系统,然后 FC会指示
HA重新启动服务器以进入新的映像。

PaaS更新流程

Windows Azure的一个关键属性是其
PaaS的横向扩展计算模型。当您在云服务中使用其中一种无状态虚拟机类型(无论是 Web还是
Worker)时,您只需更新云服务配置中的角色实例数,即可轻松扩展和缩小角色。FC将自动完成所有工作,以在您扩展时创建新虚拟机,在缩小时关闭并删除虚拟机。

然而,让 Windows
Azure 的横向扩展模型如此独特的原因在于,它使模型的核心部分具有高可用性。FC定义了一个称为更新域
(UD)的概念,用于确保角色在要求实例重新启动的计划更新中可用,而不管这些更新是云服务所有者应用的角色更新(如角色代码更新),还是涉及服务器重新启动的主机更新(如主机操作系统更新)。FC可以保证不会因为计划中的更新导致来自不同
UD的实例同时脱机。默认情况下,每个角色有5个UD,不过云服务可以在其服务定义文件中申请多达
20 个 UD。下图显示了
FC 如何跨三个 UD传播云服务的两个角色的实例。

角色实例可以调用运行时 API,以确定它们的
UD 和门户网站也显示角色实例到 UD的映射。这里是一个具有两个角色的云服务,每个角色有两个实例,因此每个
UD有每个角色的一个实例:

关于 UD,FC针对云服务更新和主机更新的行为有所不同。当更新是云服务应用的更新时,FC将依次更新每个
UD的所有实例。仅当目前UD中所有实例重新启动并向
GA 报告自己正常运行时,或当云服务所有者要求 FC通过服务管理
API移动到下一个 UD时,它才会移动到下一个
UD。

在主机更新期间,一个角色同时重新启动的实例的顺序和数量可能有所不同,而不是一次处理一个
UD。这是因为服务器上的实例放置可以防止 FC重新启动服务器,在这些服务器上,UD的所有实例同时被托管,甚至按
UD顺序托管。考虑下图中服务器的实例分配。服务 A的角色的实例
1位于服务器 1上,实例
2位于服务器 2上,而服务
B的实例则按相反顺序放置。不管 FC按什么顺序重新启动服务器,服务都会以与其
UD相反的顺序重新启动实例。所示的分配是比较少见的,因为 FC分配算法通过尝试在同一服务器上放置来自相同
UD的实例来进行优化,而不管这些实例属于什么服务。但此分配是有效分配,因为 FC可以重新启动服务器,而不违反它不会导致(单一服务的)相同角色的不同
UD的实例同时脱机的承诺。

主机更新和云服务更新之间的另一个区别是,当更新为主机更新时,FC必须确保实例不会无限期拖延整个数据中心的服务器更新进度。因此,FC会在最多五分钟内分配实例,然后将服务器重新启动到新的主机操作系统,而角色实例会在重新启动后最多
15分钟内报告其正常运行。依次重新启动主机、VM和
GA,最后启动角色实例代码,此过程需要几分钟,因此实例通常会在 15
到 30分钟之间脱机,具体取决于该实例和任何其他共享服务器的实例关闭和重新启动分别需要多长时间。有关主机操作系统更新过程中Web
role和 Worker role的预期状态变化的更多详细信息,请单击此处。请注意,对于
PaaS 服务,FC还会为来宾管理操作系统服务,因此在执行主机操作系统更新后通常会执行相应的来宾操作系统更新(针对选择更新的
PaaS服务),后者由 UD像其他云服务更新一样实施更新。

IaaS和主机更新

前面的讨论围绕
PaaS 角色,它会在角色横向扩展时自动获得 UD的益处。另一方面,虚拟机实质上是没有横向扩展能力的单实例角色。IaaS功能版本的一个重要目标是使虚拟机能够在主机更新和硬件故障时实现高可用性,可用性集功能的作用就体现在这里。您可以使用
PowerShell命令或 Windows Azure管理门户将虚拟机添加到可用性集。下面是具有分配到可用性集的虚拟机的示例云服务:

正如角色一样,默认情况下可用性集有 5个
UD,最多支持 20
个 UD。FC跨
UD将分配的实例传播到可用性集,如下图中所示。这使客户能够将专为高可用性设计的虚拟机(例如为 SQL Server镜像配置的两个虚拟机)部署到可用性集,这可确保主机更新将导致只有一半的镜像同时重新启动,如此处所述(本文将不讨论这一点,但
FC 还使用一种称为故障域的功能来跨服务器自动传播角色和可用性集的实例,以便数据中心的任何单个硬件故障最多影响一半实例)。

更多信息

您可以在 Windows
Azure 会议中找到有关更新域、故障域和可用性集的更多信息,您还可以单击此处,在
Mark 的网络直播页面找到相关会议视频。Windows Azure MSDN文档介绍了主机操作系统更新(单击此处)和更新域的服务定义架构(单击此处)。

  • 条评论

Windows Azure

本文翻译自:

http://blogs.technet.com/b/markrussinovich/archive/2012/08/22/3515679.aspx

Mark Russinovich 的博客:Windows Azure 主机更新:原因、时间和方式的更多相关文章

  1. 转载文章:Windows Azure 七月份更新:SQL 数据库、流量管理器、自动伸缩、虚拟机

    转载文章:Windows Azure 七月份更新:SQL 数据库.流量管理器.自动伸缩.虚拟机 今天上午,我们发布了一些重大的 Windows Azure 更新.这些新的增强功能包括: · SQL 数 ...

  2. [技术博客]windows中使用docker技术

    背景 我们的工程使用了一个叫做termux的安卓上的linux终端,这个终端在所有的软件包里硬编码了软件的运行路径(/data/data/com.termux/..),由于安卓系统的权限设计,我们名为 ...

  3. 技术博客:Azure Functions + Azure Storage 开发

    Azure GitHub wiki 同步发布 传送门 Azure Functions 通过 Functions(一个事件驱动型无服务器计算平台,还可以解决复杂的业务流程问题)更加高效地进行开发.在本地 ...

  4. 在Github上搭建自己的博客(Windows平台)

    折腾了好久,终于在Github上搭建了自己的博客.这里面总结一下过程希望对大家能有所帮助. Github建博优缺点 和 csdn,新浪,网易相比,在Github上可以自己实现功能 和阿里云,VPS相比 ...

  5. Windows Azure中文博客 Windows Azure入门教学系列 (一): 创建第一个WebRole程序

    http://blogs.msdn.com/b/azchina/ 本文转自:http://blogs.msdn.com/b/azchina/archive/2010/02/09/windows-azu ...

  6. ORACLE 博客文章目录(2015-05-27更新)

    从接触ORACLE到深入学习,已有好几年了,虽然写的博客不多,质量也参差不齐,但是,它却是成长的历程的点点滴滴的一个见证,见证了我在这条路上的寻寻觅觅,朝圣的心路历程,现在将ORACLE方面的博客整理 ...

  7. SQL Sever 博客文章目录(2016-07-06更新)

    SQL Server方面的博客文章也陆陆续续的写了不少了,顺便也将这些知识点整理.归纳一下下.方便自己和他人查看. MS SQL 数据类型 三大数据库对比研究系列--数据类型 MS SQL 表和视图 ...

  8. Windows Azure功能更新:SQL Server AlwaysOn和Notification Hub 正式商用

    一周以前Windows Azure发布了新的更新内容,主要的更新有3项: 虚拟机上的SQL Server支持AlwaysOn可用性组了 Notification Hub商用 自动缩放支持时间策略 这里 ...

  9. Unity 相关经典博客资源总结(持续更新)

    就作为一个记录吧,把平时看过的Unity相关的一些好的Blog记录并分享. 好的论坛: Unity官方脚本  点评:这个不用说了,最核心的内容,理解整个Unity引擎的方方面面,梳理结构. Unity ...

随机推荐

  1. poj2175

    鸣谢: http://www.cppblog.com/y346491470/articles/152317.html [题意]:一个城市有n座建筑物,每个建筑物里面有一些人,为了在战争爆发时这些人都可 ...

  2. SDOI2008 Sandy的卡片( 后缀数组 )

    求出后缀数组, 然后二分答案, 对height数组分组检验答案. 时间复杂度O(|S| log|S|) ------------------------------------------------ ...

  3. MVC定义路由

    标准路由配置 routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Defa ...

  4. HDU1159-Common Subsequence

    描述: A subsequence of a given sequence is the given sequence with some elements (possible none) left ...

  5. codevs 1183 泥泞的道路 01分数规划

    题目链接 题目描述 Description CS有n个小区,并且任意小区之间都有两条单向道路(a到b,b到a)相连.因为最近下了很多暴雨,很多道路都被淹了,不同的道路泥泞程度不同.小A经过对近期天气和 ...

  6. node 上传文件 路径 重命名等问题

    最近在学习node,想做一个简单的网站.首先想到的是上传文件的功能,查了下,发现有一个formidable模块,操作方便,便拿来尝试了一下,结果很纠结. 下载安装的就不用说了,用npm即可.说一下,自 ...

  7. System timers granularity

    http://code.google.com/p/javasimon/wiki/SystemTimersGranularity

  8. Qt全屏显示窗口、子窗口的相关函数

    Qt全屏显示函数         window.showFullScreen() Qt最大化显示函数         window.showMaximized() Qt最小化显示函数         ...

  9. css包含块containing block

    <css权威指南>P167: The Containing Block Every element is laid out with respect to its containing b ...

  10. Codeforces 703D Mishka and Interesting sum(树状数组+扫描线)

    [题目链接] http://codeforces.com/contest/703/problem/D [题目大意] 给出一个数列以及m个询问,每个询问要求求出[L,R]区间内出现次数为偶数的数的异或和 ...