了解 Azure VM 的系统重启
有时 Azure 虚拟机 (VM) 可能重启,即使没有明显原因,也没有证据表明用户发起重启操作。 本文列出了可导致 VM 重启的操作和事件,并针对如何避免意外重启问题或减少该问题影响提供见解。
配置 VM 以实现高可用性
若要防止 Azure 上运行的应用程序出现任何类型的 VM 重启和停机问题,最佳方式是配置 VM 以实现高可用性。
若要为应用程序提供此级别的冗余,建议两个或更多 VM 组合到一个可用性集中。 这种配置可确保发生计划内或计划外维护事件时,至少有一个 VM 可用,并满足 99.95% 的 Azure SLA 要求。
有关可用性集的详细信息,请参阅以下文章:
可能导致 VM 重启的操作和事件
计划内维护
Azure 在全球范围内定期执行更新,提高 VM 所基于主机基础结构的可靠性、性能及安全性。 许多更新(包括内存保留更新)在执行时不会对 VM 或云服务产生任何影响。
但是,有些更新确实需要重启。 VM 会在修补基础结构期间关闭,随后 VM 会重启。
若要了解什么是 Azure 计划内维护,及其如何影响 Linux VM 的可用性,请参阅以下文章。 这些文章介绍了 Azure 计划内维护过程的背景,以及如何安排计划内维护以进一步减少影响。
内存保留更新
对于 Azure 中的这类更新,客户会发现它们对运行中 VM 没有任何影响。 其中一些更新主要面向组件或服务,更新时不会干扰正在运行的实例。 还有一些是主机操作系统上的平台基础结构更新,应用时无需重启 VM。
这些内存保留更新通过启用就地实时迁移技术实现。 更新时,VM 进入“暂停”状态以保留 RAM 中的内存,基础主机操作系统则接收必要的更新和补丁。 VM 在暂停后 30 秒内恢复正常。 恢复后,VM 的时钟将自动同步。
并非所有更新都可通过此机制进行部署,但如果暂停时间较短,使用此方法部署更新可大大减少对 VM 的影响。
多实例更新(针对可用性集中的 VM)一次应用一个更新域。
Note
具有旧内核版本的 Linux 计算机在此更新方法期间受内核错误影响。 若要避免此问题,请更新到内核版本 3.10.0-327.10.1 或更高版本。 有关详细信息,请参阅主机节点升级后基于 3.10 内核的 Azure Linux VM 出现错误。
用户发起的重启/关闭操作
如果从 Azure 门户、Azure PowerShell、命令行接口或重置 API 执行重启,则可在 Azure 活动日志中找到该事件。
如果从 VM 的操作系统执行重启,则可在系统日志中找到该事件。
通常导致 VM 重启的其他方案包括多个配置更改操作。 通常情况下,用户会看到一条指示执行特定操作将导致 VM 重启的警告消息。 示例包括任意 VM 大小调整操作、更改管理帐户密码和设置静态 IP 地址。
影响 VM 可用性的其他情况
在其他情况下,Azure 可能主动暂停使用 VM。 用户可在执行此操作前收到电子邮件通知,以便他们有机会解决该基础问题。 示例包括安全冲突和已过期的过期付款方式。
主机服务器错误
在 Azure 数据中心内运行的物理服务器上托管 VM。 除了其他几个 Azure 组件外,物理服务器也运行名为“主机代理”的代理。 如果物理服务器上的这些 Azure 软件组件无响应,则监视系统会触发主机服务器重启,尝试恢复。 VM 通常在五分钟内再次可用,并继续像以前一样存在于同一主机上。
服务器错误通常由硬盘或固态硬盘等硬件故障引起。 Azure 持续监视这些事件,确定基础 bug,并在实现和测试缓解举措后推出更新。
由于某些主机服务器错误可能特定于该服务器,因此可通过手动将其重新部署到其他主机服务器来改善 VM 重复重启的情况。 在 VM 详细信息页上使用“重新部署”选项,或在 Azure 门户中停止并重启 VM,可触发此操作。
自动恢复
如果出于某种原因,主机服务器不能重启,Azure 平台会启动自动恢复操作,使发生故障的主机服务器脱离轮换,以便展开进一步调查。 该主机上的所有 VM 均自动重新定位到其他运行正常的主机服务器。 此过程通常在 15 分钟内完成。 此博客介绍了自动恢复过程:VM 自动恢复。
计划外维护
在少数情况下,Azure 运营团队可能需要执行维护活动,确保 Azure 平台整体运行正常。 此行为可能影响 VM 可用性,并且通常会引发与前述相同的自动恢复操作。
计划外维护包括以下内容:
- 紧急节点碎片整理
- 紧急网络交换机更新
VM 故障
VM 可能因 VM 本身问题重启。 在 VM 上运行的工作负荷或角色可能触发来宾操作系统内的 bug 检查。 为帮助确定故障原因,请查看系统和应用程序日志(适用于 Windows VM)和串行日志(适用于 Linux VM)。
与存储相关的强制关机
对于在 Azure 存储基础结构上托管的操作系统和数据存储,Azure 中的 VM 依赖于虚拟磁盘。 每当 VM 和关联虚拟磁盘之间的可用性或连接性受影响超过 120 秒时,Azure 平台会强制关闭 VM,避免数据损坏。 存储连接还原后,VM 自动重启。
关机持续时间可短至 5 分钟,也可能非常久。 下面是与存储相关的强制关机具体情况之一:
超过 IO 限制
如果 I/O 请求因每秒输入/输出操作数 (IOPS) 超出磁盘 I/O 限制(标准磁盘存储限制为 500 IOPS)而持续受到限制,则可能暂时关闭 VM。 为缓解此问题,请在来宾 VM 中使用磁盘剥离或配置存储空间,具体情况取决于工作负荷。 有关详细信息,请参阅配置 Azure VM 以获得最佳存储性能。
通过 Azure 高级存储提供高达 80,000 IOPS 的 IOPS 限制。 有关详细信息,请参阅高性能高级存储。
其他事件
在极少数情况下,普遍的问题可能影响 Azure 数据中心内的多台服务器。 如果发生这种情况,Azure 团队会向受影响订阅者发送电子邮件通知。 可查看 Azure 服务运行状况仪表板和 Azure 门户,了解正在进行的服务中断和过去事件的状态。立即访问http://market.azure.cn
了解 Azure VM 的系统重启的更多相关文章
- 排查在 Azure 中创建、重启 Windows VM 或调整其大小时发生的分配失败
创建 VM.重新启动已停止(解除分配)的 VM 和重设 VM 大小时,Azure 会为订阅分配计算资源. 执行这些操作时,即使尚未达到 Azure 订阅限制,也可能偶尔收到错误. 本文说明一些常见分配 ...
- 排查在 Azure 中创建、重启 Linux VM 或调整其大小时发生的分配故障
创建 VM.重启已停止(解除分配)的 VM 和重设 VM 大小时,Azure 会为订阅分配计算资源. 执行这些操作时,即使尚未达到 Azure 订阅限制,也可能偶尔收到错误. 本文说明一些常见分配故障 ...
- Azure VM Disk的设计与部署
Azure的VM的设计中,Disk相关的设计是非常重要的一个内容,本文将介绍Azure上的VM的Disk相关的一些最佳实践和一些小的技巧. 一.Azure VM中Disk的存储账户设计 1. Stor ...
- Azure PowerShell (9) 使用PowerShell导出订阅下所有的Azure VM的Public IP和Private IP
<Windows Azure Platform 系列文章目录> 笔者在之前的工作中,有客户提出想一次性查看Azure订阅下的所有Azure VM的Public IP和Private IP. ...
- Windows Azure Virtual Machine (29) 修改Azure VM 数据磁盘容量
<Windows Azure Platform 系列文章目录> 当我们使用Windows Azure管理界面,创建Azure虚拟机的时候,默认挂载的磁盘是固定大小的 1.比如我创建1个Wi ...
- 一个Azure VM RDP连接问题
由于Azure上的VM都是通过同一个镜像文件创建的,有时会需要修改SID. 在给一台VM修改SID重启后,就无法通过RDP连接到虚机了,从Azure管理界面的启动诊断界面上可以看到虚拟停在一个要求用户 ...
- 使用Windows Azure创建Linux系统虚拟机-下
如何将数据磁盘附加到新虚拟机 您的应用程序可能需要存储数据.要这样设置,您可以将数据磁盘添加到先前创建的虚拟机.要做到这一点,最简单的方法是将空数据磁盘连接到本机. 在Linux上,磁盘资源通常由Az ...
- 我的 Azure VM 为何会重新启动?
在客户创建的客服案件中, Azure VM意外重启是一个常见的问题,客户要求客服确定重新启动的原因.希望下面的详细说明能够帮助您了解 Azure VM重新启动的原因. WindowsAzure大约 ...
- Windows Azure Virtual Machine (34) Azure VM挂载WebDAV
<Windows Azure Platform 系列文章目录> 之前使用Azure VM,挂载box网盘.发现不能正常挂载,这里简单记录一下. 1.WebDAV的网络映射,需要WebCli ...
随机推荐
- [Xamarin.Android]使用Java Bindings Libary專案 Binding Java元件(.jar) 與Metadata.xml、型別對應 (转帖)
使用Xamarin開發Android APP時, 如果已經有原本就用Java寫好的套件(.jar), 就可以利用Xamarin提供的Java Bindings Libary將他變成C#可使用的元件. ...
- python笔记02-----字符串操作
python中定义变量的字符串 str1 = "www" #str1就是字符串了 一定用引号 或者直接使用"字符串."来调用内部的方法 1.字符串大小 ...
- Oracle 汉字转拼音触发器
--函数GetHzFullPY(string)用于获取汉字字符串的拼音 --select GetHzFullPY('中华人民共和国') from dual; --返回:ZhongHuaRenMinGo ...
- WPF的ItemsControl设置数据源以及Binding使用
Student类: using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...
- WPF中设置Border的BorderThickness属性会让背景图片产生模糊感
<!--设置BorderThickness会让border的Background图片看起来有模糊感--> <Border x:Name="border" Bord ...
- c++ 沉思录---代理类
一.问题 如何设计一容器能包含彼此不同而又相互关联的类的对象(处于完整的继承层次的类)?因为一般的数组容器都只能包含一种类型的对象. 假设有一个表示不同类型的交通工具的类的派生层次: class Ve ...
- FocusBI: SSIS 开发案例(原创)
关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. <商业智能教程>pdf下载地址 链接:https://pan.baidu.com/ ...
- 【转】SQL SERVER 2005/2008 中关于架构的理解
在一次的实际工作中碰到以下情况,在 SQL SERVER 2008中,新建了一个新用户去访问几张由其他用户创建的表,但是无法进行查询,提示“对象名'CustomEntry' 无效.”.当带上了架构名称 ...
- jdbc报java.lang.ClassNotFoundException: com.mysql.jdbc.Drive
今天从开始写了一个jdbc连接mysql驱动的程序 真的是各种报错啊 首先这是代码 package com.dmeck; import java.sql.Connection; import java ...
- android子线程更新UI
参考:https://www.cnblogs.com/joy99/p/6121280.html 子线程是不能直接更新UI的.Android实现View更新有两组方法,分别是invalidate和pos ...