你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
可以使用混沌试验,通过在受控环境中引发一些故障,来验证应用程序是否可以应对这些故障。 在本文中,你将使用混沌试验和 Azure Chaos Studio 进行多次读取、单次写入 Azure Cosmos DB 故障转移。 运行此试验可帮助你在发生故障转移事件时防范数据丢失。
可使用这些相同的步骤来设置和运行针对任何服务直接故障的试验。 service-direct 故障直接针对 Azure 资源运行,无需进行检测。 基于代理的故障需要安装混沌代理。
先决条件
- 一个 Azure 订阅。 如果没有 Azure 订阅,请在开始之前创建一个 Azure 免费帐户。
- 一个 Azure Cosmos DB 帐户。 如果你没有 Azure Cosmos DB 帐户,请按照这些步骤创建一个。
- 至少为 Azure Cosmos DB 帐户设置一个读取和一个写入区域。
在 Azure Cosmos DB 帐户上启用 Chaos Studio
Chaos Studio 无法针对资源注入故障,除非已先将该资源添加到 Chaos Studio。 可通过针对资源创建目标和功能,将资源添加到 Chaos Studio。 Azure Cosmos DB 帐户只有一种目标类型 (service-direct) 和一项功能(故障转移)。 其他资源最多可以有两种目标类型。 一种目标类型用于 service-direct 故障。 另一种目标类型是针对基于代理的故障。 其他资源可能有许多其他功能。
打开 Azure 门户。
在搜索栏中搜索“Chaos Studio”。
选择“目标”并转到你的 Azure Cosmos DB 帐户。
选中 Azure Cosmos DB 帐户旁边的复选框。 选择“启用目标”并从下拉菜单中选择“启用服务直接目标”。
确认列出了所需的资源。 选择“查看 + 启用”,然后选择“启用”。
此时会显示一条通知,指示选择的资源已成功启用。
现在,你已成功将 Azure Cosmos DB 帐户添加到了 Chaos Studio。 在“目标”视图中,还可以管理对此资源启用的功能。 选择资源旁边的“管理操作”链接时,会显示为该资源启用的功能。
创建试验
现在您可以创建试验。 混沌试验定义了要针对目标资源执行的操作。 操作将按顺序组织并运行。 混沌试验还定义了要针对分支执行的操作(它们将并行运行)。
在 Chaos Studio 中选择“试验”选项卡。 在此视图中,您可以查看和管理所有混沌实验。 选择“创建”“新建试验”。>
填写要在其中部署混沌试验的“订阅”、“资源组”和“位置”。 为试验指定一个名称。 选择“下一步: 试验设计器”。
现在,你已位于 Chaos Studio 试验设计器中。 使用试验设计器,可以通过添加步骤、分支和故障来构建试验。 为步骤和分支指定一个友好名称,然后选择“添加操作”>“添加故障”。
从下拉列表中选择“CosmosDB 故障转移”。 在“持续时间”中填写你希望故障持续的分钟数,并在“readRegion”中填写你的 Azure Cosmos DB 帐户的读取区域。 选择“下一步: 目标资源”。
选择你的 Azure Cosmos DB 帐户,然后选择“下一步”。
验证你的试验是否正确,然后选择“查看 + 创建”“创建”>。
向目标资源授予试验权限
创建混沌试验时,Chaos Studio 会创建系统分配的托管标识,用于针对目标资源执行故障。 若要成功运行试验,必须向此标识提供目标资源的适当权限。 可将这些步骤用于任何资源和目标类型,方法是修改步骤 #3 中的角色分配以匹配该资源和目标类型的相应角色。
转到你的 Azure Cosmos DB 帐户并选择“访问控制(IAM)”。
选择“添加”>“添加角色分配”。
搜索“Cosmos DB 操作员”,然后选择该角色。 选择下一步。
选择“选择成员”,然后搜索试验名称。 选择实验,然后选择“选择”。 如果同一租户中有多个实验名称相同,则实验名称会被截断并添加随机字符。
选择“审阅 + 分配”>“审阅 + 分配”。
运行实验
现在,你已准备就绪,可以开始运行试验。 若要查看效果,建议打开 Azure Cosmos DB 帐户概述,并在单独的浏览器选项卡中转到“全局复制数据”。在试验期间定期刷新时,会显示区域交换。
- 在“试验”视图中,选择你的试验。 选择“开始”>“确定”。
- 当“状态”更改为“正在运行”时,在“历史记录”下选择上次运行的“详细信息”,以查看正在运行的试验的详细信息。
后续步骤
现在,你已运行 Azure Cosmos DB 服务直接试验,你已准备好: