你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Chaos Studio 故障和操作库
本文列出了可在 Chaos Studio 中使用的故障(按适用的资源类型进行组织)。 若要了解为每种资源类型建议的角色分配,请参阅 Azure Chaos Studio 支持的资源类型和角色分配。
基于代理的故障
通过安装 Chaos Studio 代理,基于代理的故障将注入到 Azure 虚拟机或虚拟机规模集实例中。 在以下虚拟机和虚拟机规模集表中可以找到这些资源的服务导向故障选项。
适用的操作系统类型 | 故障名称 | 适用的场景 |
---|---|---|
Windows、Linux | CPU 压力 | 计算容量损失,资源压力 |
Windows、Linux | 终止进程 | 依赖项中断 |
Windows | 暂停进程 | 依赖项中断,服务中断 |
Windows1、Linux2 | 网络连接断开 | 网络中断 |
Windows1、Linux2 | 网络延迟 | 网络性能降低 |
Windows1、Linux2 | 网络数据包丢失 | 网络可靠性问题 |
Windows, Linux2 | 网络隔离 | 网络中断 |
Windows | DNS 故障 | DNS 解析问题 |
Windows | 网络断开连接(通过防火墙) | 网络中断 |
Windows、Linux | 物理内存压力 | 内存容量损失,资源压力 |
Windows、Linux | 停止服务 | 服务中断/重启 |
Windows | 时间更改 | 时间同步问题 |
Windows | 虚拟内存压力 | 内存容量损失,资源压力 |
Linux | 任意 Stress-ng 压力测试器 | 常规系统压力测试 |
Linux | Linux DiskIO 压力 | 磁盘 I/O 性能降低 |
Windows | 磁盘 IO 压力 | 磁盘 I/O 性能降低 |
1 仅限 TCP/UDP 数据包。 2 仅限出站网络流量。
应用服务
本部分适用于 Microsoft.Web/sites
资源类型。 详细了解应用服务。
故障名称 | 适用的场景 |
---|---|
停止应用服务 | 服务中断 |
自动缩放设置
本部分适用于 Microsoft.Insights/autoscaleSettings
资源类型。 详细了解自动缩放设置。
故障名称 | 适用的场景 |
---|---|
禁用自动缩放 | 计算容量损失(与虚拟机规模集关闭功能一起使用时) |
Azure Kubernetes 服务
本部分适用于 Microsoft.ContainerService/managedClusters
资源类型。 详细了解 Azure Kubernetes 服务。
故障名称 | 适用的场景 |
---|---|
AKS Chaos Mesh DNS 混沌测试 | DNS 解析问题 |
AKS Chaos Mesh HTTP 混沌测试 | 网络中断 |
AKS Chaos Mesh IO 混沌测试 | 磁盘降级/压力 |
AKS Chaos Mesh 内核混沌测试 | 内核中断 |
AKS Chaos Mesh 网络混沌测试 | 网络中断 |
AKS Chaos Mesh Pod 混沌测试 | 容器中断 |
AKS Chaos Mesh 压力混沌测试 | 系统压力测试 |
AKS Chaos Mesh 时间混沌测试 | 时间同步问题 |
云服务(经典)
本部分适用于 Microsoft.ClassicCompute/domainNames
资源类型。 详细了解云服务(经典)。
故障名称 | 适用的场景 |
---|---|
云服务关闭 | 计算丢失 |
群集 Cache for Redis
本部分适用于 Microsoft.Cache/redis
资源类型。 详细了解群集 Cache for Redis。
故障名称 | 适用的场景 |
---|---|
Azure Cache for Redis(重新启动) | 依赖项中断(缓存) |
Cosmos DB
本部分适用于 Microsoft.DocumentDB/databaseAccounts
资源类型。 详细了解 Cosmos DB。
故障名称 | 适用的场景 |
---|---|
Cosmos DB 故障转移 | 数据库故障转移 |
事件中心
本部分适用于 Microsoft.EventHub/namespaces
资源类型。 详细了解事件中心。
故障名称 | 适用的场景 |
---|---|
更改事件中心状态 | 消息传递基础结构配置错误/中断 |
密钥保管库
本部分适用于 Microsoft.KeyVault/vaults
资源类型。 详细了解 Key Vault。
故障名称 | 适用的场景 |
---|---|
密钥保管库:拒绝访问 | 证书拒绝 |
密钥保管库:禁用证书 | 证书中断 |
密钥保管库:增量证书版本 | 证书版本增量 |
密钥保管库:更新证书策略 | 证书策略更改/配置错误 |
网络安全组
本部分适用于 Microsoft.Network/networkSecurityGroups
资源类型。 详细了解网络安全组。
故障名称 | 适用的场景 |
---|---|
NSG 安全规则 | 网络中断(适用于许多 Azure 服务) |
服务总线
本部分适用于 Microsoft.ServiceBus/namespaces
资源类型。 详细了解服务总线。
故障名称 | 适用的场景 |
---|---|
更改队列状态 | 消息传递基础结构配置错误/中断 |
更改订阅状态 | 消息传递基础结构配置错误/中断 |
更改主题状态 | 消息传递基础结构配置错误/中断 |
虚拟机(服务导向)
本部分适用于 Microsoft.Compute/virtualMachines
资源类型。 详细了解虚拟机。
故障名称 | 适用的场景 |
---|---|
VM 重新部署 | 计算中断,维护事件 |
VM 关闭 | 计算丢失/中断 |
虚拟机规模集
本部分适用于 Microsoft.Compute/virtualMachineScaleSets
资源类型。 详细了解虚拟机规模集。
故障名称 | 适用的场景 |
---|---|
虚拟机规模集关闭 | 计算丢失/中断 |
虚拟机规模集关闭 (2.0) | 计算丢失/中断(按可用性区域) |
业务流程操作
这些操作是用于构建有效试验的构建基块。 请将它们与其他故障结合使用,例如在并行关闭区域中计算实例的同时运行负载测试。
操作类别 | 故障名称 |
---|---|
加载 | 启动负载测试(Azure 负载测试) |
加载 | 停止负载测试(Azure 负载测试) |
时间延迟 | 延迟 |
详细信息:基于代理的故障
网络连接中断
属性 | Value |
---|---|
功能名称 | NetworkDisconnect-1.1 |
目标类型 | Microsoft-Agent |
支持的 OS 类型 | Windows、Linux(仅限出站流量) |
说明 | 阻止指定端口范围和网络块的网络流量。 必须至少提供一个 destinationFilter 或 inboundDestinationFilter 数组。 |
先决条件 | Windows:代理必须以管理员身份来运行,如果代理作为 VM 扩展进行安装,则默认情况就是如此。 |
Linux:tc (流量控制)包用于网络故障。 如果尚未安装该包,代理会自动尝试从默认包管理器安装它。 |
|
Urn | urn:csci:microsoft:agent:networkDisconnect/1.1 |
故障类型 | 连续: |
参数(键、值) | |
destinationFilters | 数据包筛选器的分隔 JSON 数组,用于定义作为目标的出站数据包。 最多 16 个。 |
inboundDestinationFilters | 数据包筛选器的分隔 JSON 数组,用于定义作为目标的入站数据包。 最多 16 个。 |
virtualMachineScaleSetInstances | 将此故障应用于虚拟机规模集时的实例 ID 数组。 处于统一业务流程模式的虚拟机规模集需要这些 ID。 详细了解实例 ID。 |
参数 destinationFilters 和 inboundDestinationFilters 使用以下数据包筛选器数组。
属性 | Value |
---|---|
address | 表示 IP 范围开头的 IP 地址。 |
subnetMask | IP 地址范围的子网掩码。 |
portLow | (可选)端口范围的起始端口号。 |
portHigh | (可选)端口范围的结束端口号。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:agent:networkDisconnect/1.1",
"parameters": [
{
"key": "destinationFilters",
"value": "[ { \"address\": \"23.45.229.97\", \"subnetMask\": \"255.255.255.224\", \"portLow\": \"5000\", \"portHigh\": \"5200\" } ]"
},
{
"key": "inboundDestinationFilters",
"value": "[ { \"address\": \"23.45.229.97\", \"subnetMask\": \"255.255.255.224\", \"portLow\": \"5000\", \"portHigh\": \"5200\" } ]"
},
{
"key": "virtualMachineScaleSetInstances",
"value": "[0,1,2]"
}
],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
限制
- 基于代理的网络故障目前仅支持 IPv4 地址。
- 网络连接断开故障仅影响新连接。 现有的活动连接将继续保持。 可以重启服务或进程以强制连接中断。
- 在 Windows 上运行时,网络断开连接故障当前仅适用于 TCP 或 UDP 数据包。
- 在 Linux 上运行时,此故障只会影响出站流量,而不会影响入站流量。 该故障可能会影响 Windows 环境中的入站和出站流量(通过
inboundDestinationFilters
和destinationFilters
参数)。
网络断开连接(通过防火墙)
属性 | Value |
---|---|
功能名称 | NetworkDisconnectViaFirewall-1.0 |
目标类型 | Microsoft-Agent |
支持的 OS 类型 | Windows |
说明 | 应用 Windows 防火墙规则以阻止指定端口范围和网络块的出站流量。 |
先决条件 | 代理必须以管理员身份运行。 如果代理作为 VM 扩展安装,则默认将以管理员身份运行。 |
Urn | urn:csci:microsoft:agent:networkDisconnectViaFirewall/1.0 |
故障类型 | 连续: |
参数(键、值) | |
destinationFilters | 数据包筛选器的分隔 JSON 数组,用于定义作为故障注入目标的出站数据包。 |
address | 表示 IP 范围开头的 IP 地址。 |
subnetMask | IP 地址范围的子网掩码。 |
portLow | (可选)端口范围的起始端口号。 |
portHigh | (可选)端口范围的结束端口号。 |
virtualMachineScaleSetInstances | 将此故障应用于虚拟机规模集时的实例 ID 数组。 处于统一业务流程模式的虚拟机规模集需要这些 ID。 详细了解实例 ID。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:agent:networkDisconnectViaFirewall/1.0",
"parameters": [
{
"key": "destinationFilters",
"value": "[ { \"Address\": \"23.45.229.97\", \"SubnetMask\": \"255.255.255.224\", \"PortLow\": \"5000\", \"PortHigh\": \"5200\" } ]"
},
{
"key": "virtualMachineScaleSetInstances",
"value": "[0,1,2]"
}
],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
限制
- 基于代理的网络故障目前仅支持 IPv4 地址。
- 此故障当前只影响新连接。 现有活动连接不受影响。 可以重启服务或进程以强制连接中断。
- 此时这个错误仅影响出站流量。
网络延迟
属性 | Value |
---|---|
功能名称 | NetworkLatency-1.1 |
目标类型 | Microsoft-Agent |
支持的 OS 类型 | Windows、Linux(仅限出站流量) |
说明 | 增大指定端口范围和网络块的网络延迟。 必须至少提供一个 destinationFilter 或 inboundDestinationFilter 数组。 |
先决条件 | Windows:代理必须以管理员身份来运行,如果代理作为 VM 扩展进行安装,则默认情况就是如此。 |
Linux:tc (流量控制)包用于网络故障。 如果尚未安装该包,代理会自动尝试从默认包管理器安装它。 |
|
Urn | urn:csci:microsoft:agent:networkLatency/1.1 |
故障类型 | 连续: |
参数(键、值) | |
latencyInMilliseconds | 要应用的延迟量(以毫秒为单位)。 |
destinationFilters | 数据包筛选器的分隔 JSON 数组,用于定义作为目标的出站数据包。 最多 16 个。 |
inboundDestinationFilters | 数据包筛选器的分隔 JSON 数组,用于定义作为目标的入站数据包。 最多 16 个。 |
virtualMachineScaleSetInstances | 将此故障应用于虚拟机规模集时的实例 ID 数组。 处于统一业务流程模式的虚拟机规模集需要这些 ID。 详细了解实例 ID。 |
参数 destinationFilters 和 inboundDestinationFilters 使用以下数据包筛选器数组。
属性 | Value |
---|---|
address | 表示 IP 范围开头的 IP 地址。 |
subnetMask | IP 地址范围的子网掩码。 |
portLow | (可选)端口范围的起始端口号。 |
portHigh | (可选)端口范围的结束端口号。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:agent:networkLatency/1.1",
"parameters": [
{
"key": "destinationFilters",
"value": "[ { \"address\": \"23.45.229.97\", \"subnetMask\": \"255.255.255.224\", \"portLow\": \"5000\", \"portHigh\": \"5200\" } ]"
},
{
"key": "inboundDestinationFilters",
"value": "[ { \"address\": \"23.45.229.97\", \"subnetMask\": \"255.255.255.224\", \"portLow\": \"5000\", \"portHigh\": \"5200\" } ]"
},
{
"key": "latencyInMilliseconds",
"value": "100",
},
{
"key": "virtualMachineScaleSetInstances",
"value": "[0,1,2]"
}
],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
限制
- 基于代理的网络故障目前仅支持 IPv4 地址。
- 在 Linux 上运行时,网络延迟故障只会影响出站流量,而不会影响入站流量。 该故障可能会影响 Windows 环境中的入站和出站流量(通过
inboundDestinationFilters
和destinationFilters
参数)。 - 在 Windows 上运行时,网络延迟故障当前仅适用于 TCP 或 UDP 数据包。
- 此故障当前只影响新连接。 现有活动连接不受影响。 可以重启服务或进程以强制连接中断。
网络数据包丢失
属性 | Value |
---|---|
功能名称 | NetworkPacketLoss-1.0 |
目标类型 | Microsoft-Agent |
支持的 OS 类型 | Windows、Linux(仅限出站流量) |
说明 | 以指定速率引入出站流量的数据包丢失,该速率介于 0.0(无数据包丢失)到 1.0(所有数据包丢失)之间。 此操作有助于模拟网络拥塞或网络硬件问题之类的场景。 |
先决条件 | Windows:代理必须以管理员身份来运行,如果代理作为 VM 扩展进行安装,则默认情况就是如此。 |
Linux:tc (流量控制)包用于网络故障。 如果尚未安装该包,代理会自动尝试从默认包管理器安装它。 |
|
Urn | urn:csci:microsoft:agent:networkPacketLoss/1.0 |
故障类型 | 连续: |
参数(键、值) | |
packetLossRate | 与目标筛选器匹配的数据包的丢失率,范围为 0.0 到 1.0。 |
virtualMachineScaleSetInstances | 将此故障应用于虚拟机规模集时的实例 ID 数组。 处于统一业务流程模式的虚拟机规模集需要这些 ID。 详细了解实例 ID。 |
destinationFilters | 数据包筛选器(参数见下)的分隔 JSON 数组,用于定义作为故障注入目标的出站数据包。 最多三个。 |
address | 表示 IP 范围开头的 IP 地址。 |
subnetMask | IP 地址范围的子网掩码。 |
portLow | (可选)端口范围的起始端口号。 |
portHigh | (可选)端口范围的结束端口号。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:agent:networkPacketLoss/1.0",
"parameters": [
{
"key": "destinationFilters",
"value": "[{\"address\":\"23.45.229.97\",\"subnetMask\":\"255.255.255.224\",\"portLow\":5000,\"portHigh\":5200}]"
},
{
"key": "packetLossRate",
"value": "0.5"
},
{
"key": "virtualMachineScaleSetInstances",
"value": "[0,1,2]"
}
],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
限制
- 基于代理的网络故障目前仅支持 IPv4 地址。
- 在 Windows 上运行时,网络数据包丢失故障当前仅适用于 TCP 或 UDP 数据包。
- 在 Linux 上运行时,此故障只会影响出站流量,而不会影响入站流量。 该故障可能会影响 Windows 环境中的入站和出站流量(通过
inboundDestinationFilters
和destinationFilters
参数)。 - 此故障当前只影响新连接。 现有活动连接不受影响。 可以重启服务或进程以强制连接中断。
网络隔离
属性 | Value |
---|---|
功能名称 | NetworkIsolation-1.0 |
目标类型 | Microsoft-Agent |
支持的 OS 类型 | Windows、Linux(仅出站) |
说明 | 通过在指定的持续时间内删除所有基于 IP 的入站(在 Windows 上)和出站(在 Windows 和 Linux 上)数据包,将虚拟机与网络连接完全隔离。 持续时间结束时,将重新启用网络连接。 由于代理依赖于网络流量,因此此操作无法取消,并且将运行到指定的持续时间。 |
先决条件 | Windows:代理必须以管理员身份来运行,如果代理作为 VM 扩展进行安装,则默认情况就是如此。 |
Linux:tc (流量控制)包用于网络故障。 如果尚未安装该包,代理会自动尝试从默认包管理器安装它。 |
|
Urn | urn:csci:microsoft:agent:networkIsolation/1.0 |
故障类型 | 连续: |
参数(键、值) | |
virtualMachineScaleSetInstances | 将此故障应用于虚拟机规模集时的实例 ID 数组。 在统一业务流程模式下,对于虚拟机规模集是必需的,在其他情况下,是可选的。 详细了解实例 ID。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:agent:networkIsolation/1.0",
"parameters": [],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
限制
- 由于代理依赖于网络流量,因此此操作无法取消,并且将运行到指定的持续时间。 请慎用。
- 此故障当前只影响新连接。 现有活动连接不受影响。 可以重启服务或进程以强制连接中断。
- 在 Linux 上运行时,此故障只会影响出站流量,而不会影响入站流量。 该故障可能会影响 Windows 环境中的入站和出站流量。
DNS 故障
属性 | Value |
---|---|
功能名称 | DnsFailure-1.0 |
目标类型 | Microsoft-Agent |
支持的 OS 类型 | Windows |
说明 | 用指定的错误代码替换 DNS 查找请求响应。 替换的 DNS 查找请求必须:
|
先决条件 | 无。 |
Urn | urn:csci:microsoft:agent:dnsFailure/1.0 |
故障类型 | 连续: |
参数(键、值) | |
hosts | 要使其 DNS 查找请求失败的主机名的分隔 JSON 数组。 此属性接受通配符 ( * ),但仅适用于地址中的第一个子域,并且仅适用于为其指定的子域。 例如:
|
dnsFailureReturnCode | 要返回给客户端的表示查找失败的 DNS 错误代码(FormErr、ServFail、NXDomain、NotImp、Refused、XDomain、YXRRSet、NXRRSet、NotAuth、NotZone)。 有关 DNS 返回代码的详细信息,请查看 IANA 网站。 |
virtualMachineScaleSetInstances | 将此故障应用于虚拟机规模集时的实例 ID 数组。 处于统一业务流程模式的虚拟机规模集需要这些 ID。 详细了解实例 ID。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:agent:dnsFailure/1.0",
"parameters": [
{
"key": "hosts",
"value": "[ \"www.bing.com\", \"msdn.microsoft.com\" ]"
},
{
"key": "dnsFailureReturnCode",
"value": "ServFail"
},
{
"key": "virtualMachineScaleSetInstances",
"value": "[0,1,2]"
}
],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
限制
- DNS 故障需要 Windows 2019 RS5 或更高版本。
- 在故障持续期间内,对于故障中定义的主机名,将忽略 DNS 缓存。
CPU 压力
属性 | Value |
---|---|
功能名称 | CPUPressure-1.0 |
目标类型 | Microsoft-Agent |
支持的 OS 类型 | Windows、Linux |
说明 | 在故障操作期间注入了此故障的 VM 上,将 CPU 压力最大提高到指定值。 在持续时间结束或取消试验时,人为 CPU 压力将会消除。 在 Windows 上,故障开始时使用“% 处理器实用工具”性能计数器来确定当前的 CPU 百分比,这从故障中定义的 pressureLevel 中减去,以便 % 处理器实用工具将大约达到故障参数中定义的 pressureLevel 。 |
先决条件 | Linux:需要安装 stress-ng 实用工具。 在多个操作系统(包括 Ubuntu 等基于 Debian 的操作系统)、Red Hat Enterprise Linux 和 OpenSUSE 上使用默认包管理器时,会在代理安装过程中自动安装该实用工具。 对于其他发行版(包括 Azure Linux),必须手动安装 stress-ng。 有关详细信息,请参阅上游项目存储库。 |
Windows:无。 | |
Urn | urn:csci:microsoft:agent:cpuPressure/1.0 |
故障类型 | 连续: |
参数(键、值) | |
pressureLevel | 一个介于 1 和 95 之间的整数,指示对 VM 施加的 CPU 压力 (%),以“CPU 使用率百分比”表示 |
virtualMachineScaleSetInstances | 将此故障应用于虚拟机规模集时的实例 ID 数组。 处于统一业务流程模式的虚拟机规模集需要这些 ID。 详细了解实例 ID。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:agent:cpuPressure/1.0",
"parameters": [
{
"key": "pressureLevel",
"value": "95"
},
{
"key": "virtualMachineScaleSetInstances",
"value": "[0,1,2]"
}
],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
限制
Linux 上的已知问题:
- 如果
AzureChaosAgent
意外终止,压力效应可能不会正常终止。
物理内存压力
属性 | Value |
---|---|
功能名称 | PhysicalMemoryPressure-1.0 |
目标类型 | Microsoft-Agent |
支持的 OS 类型 | Windows、Linux |
说明 | 在故障操作期间注入了此故障的 VM 上,将物理内存压力最大提高到指定值。 在持续时间结束或取消试验时,人为物理内存压力将会消除。 |
先决条件 | Linux:需要安装 stress-ng 实用工具。 在多个操作系统(包括 Ubuntu 等基于 Debian 的操作系统)、Red Hat Enterprise Linux 和 OpenSUSE 上使用默认包管理器时,会在代理安装过程中自动安装该实用工具。 对于其他发行版(包括 Azure Linux),必须手动安装 stress-ng。 有关详细信息,请参阅上游项目存储库。 |
Windows:无。 | |
Urn | urn:csci:microsoft:agent:physicalMemoryPressure/1.0 |
故障类型 | 连续: |
参数(键、值) | |
pressureLevel | 一个介于 1 和 95 之间的整数,指示对 VM 施加的物理内存压力 (%)。 |
virtualMachineScaleSetInstances | 将此故障应用于虚拟机规模集时的实例 ID 数组。 处于统一业务流程模式的虚拟机规模集需要这些 ID。 详细了解实例 ID。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:agent:physicalMemoryPressure/1.0",
"parameters": [
{
"key": "pressureLevel",
"value": "95"
},
{
"key": "virtualMachineScaleSetInstances",
"value": "[0,1,2]"
}
],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
限制
目前,当其他应用程序增加内存使用量时,Windows 代理不会减少内存压力。 如果总体内存使用率超过 100%,Windows 代理可能会崩溃。
虚拟内存压力
属性 | Value |
---|---|
功能名称 | VirtualMemoryPressure-1.0 |
目标类型 | Microsoft-Agent |
支持的 OS 类型 | Windows |
说明 | 在故障操作期间注入了此故障的 VM 上,将虚拟内存压力最大提高到指定值。 在持续时间结束或取消试验时,人为虚拟内存压力将会消除。 |
先决条件 | 无。 |
Urn | urn:csci:microsoft:agent:virtualMemoryPressure/1.0 |
故障类型 | 连续: |
参数(键、值) | |
pressureLevel | 一个介于 1 和 95 之间的整数,指示对 VM 施加的物理内存压力 (%)。 |
virtualMachineScaleSetInstances | 将此故障应用于虚拟机规模集时的实例 ID 数组。 处于统一业务流程模式的虚拟机规模集需要这些 ID。 详细了解实例 ID。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:agent:virtualMemoryPressure/1.0",
"parameters": [
{
"key": "pressureLevel",
"value": "95"
},
{
"key": "virtualMachineScaleSetInstances",
"value": "[0,1,2]"
}
],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
磁盘 IO 压力
属性 | Value |
---|---|
功能名称 | DiskIOPressure-1.1 |
目标类型 | Microsoft-Agent |
支持的 OS 类型 | Windows |
说明 | 使用 diskspd 实用工具将磁盘压力加到虚拟机。 默认情况下,压力会加到主磁盘或使用 targetTempDirectory 参数指定的磁盘。 此故障有五种不同的执行模式。 在持续时间结束或取消试验时,人为磁盘压力将会消除。 |
先决条件 | 无。 |
Urn | urn:csci:microsoft:agent:diskIOPressure/1.1 |
故障类型 | 连续: |
参数(键、值) | |
pressureMode | 要添加到 VM 主存储的磁盘压力的预设模式。 必须是下表中的 PressureModes 之一。 |
targetTempDirectory | (可选)用于施加磁盘压力的目录。 例如 D:/Temp 。 如果不包含该参数,则向主磁盘加压力。 |
virtualMachineScaleSetInstances | 将此故障应用于虚拟机规模集时的实例 ID 数组。 处于统一业务流程模式的虚拟机规模集需要这些 ID。 详细了解实例 ID。 |
压力模式
PressureMode | 说明 |
---|---|
PremiumStorageP10IOPS | numberOfThreads = 1 randomBlockSizeInKB = 64 randomSeed = 10 numberOfIOperThread = 25 sizeOfBlocksInKB = 8 sizeOfWriteBufferInKB = 64 fileSizeInGB = 2 percentOfWriteActions = 50 |
PremiumStorageP10Throttling | numberOfThreads = 2 randomBlockSizeInKB = 64 randomSeed = 10 numberOfIOperThread = 25 sizeOfBlocksInKB = 64 sizeOfWriteBufferInKB = 64 fileSizeInGB = 1 percentOfWriteActions = 50 |
PremiumStorageP50IOPS | numberOfThreads = 32 randomBlockSizeInKB = 64 randomSeed = 10 numberOfIOperThread = 32 sizeOfBlocksInKB = 8 sizeOfWriteBufferInKB = 64 fileSizeInGB = 1 percentOfWriteActions = 50 |
PremiumStorageP50Throttling | numberOfThreads = 2 randomBlockSizeInKB = 1024 randomSeed = 10 numberOfIOperThread = 2 sizeOfBlocksInKB = 1024 sizeOfWriteBufferInKB = 1024 fileSizeInGB = 20 percentOfWriteActions = 50 |
默认 | numberOfThreads = 2 randomBlockSizeInKB = 64 randomSeed = 10 numberOfIOperThread = 2 sizeOfBlocksInKB = 64 sizeOfWriteBufferInKB = 64 fileSizeInGB = 1 percentOfWriteActions = 50 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:agent:diskIOPressure/1.1",
"parameters": [
{
"key": "pressureMode",
"value": "PremiumStorageP10IOPS"
},
{
"key": "targetTempDirectory",
"value": "C:/temp/"
},
{
"key": "virtualMachineScaleSetInstances",
"value": "[0,1,2]"
}
],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
Linux 磁盘 IO 压力
属性 | Value |
---|---|
功能名称 | LinuxDiskIOPressure-1.1 |
目标类型 | Microsoft-Agent |
支持的 OS 类型 | Linux |
说明 | 使用 stress-ng 对磁盘施加压力。 将生成一个或多个工作进程,用于通过临时文件执行 I/O 进程。 默认情况下,压力会加到主磁盘或使用 targetTempDirectory 参数指定的磁盘。 若要了解如何施加压力,请参阅 stress-ng 一文。 |
先决条件 | Linux:需要安装 stress-ng 实用工具。 在多个操作系统(包括 Ubuntu 等基于 Debian 的操作系统)、Red Hat Enterprise Linux 和 OpenSUSE 上使用默认包管理器时,会在代理安装过程中自动安装该实用工具。 对于其他发行版(包括 Azure Linux),必须手动安装 stress-ng。 有关详细信息,请参阅上游项目存储库。 |
Urn | urn:csci:microsoft:agent:linuxDiskIOPressure/1.1 |
故障类型 | 连续: |
参数(键、值) | |
workerCount | 要运行的工作进程数。 将 workerCount 设置为 0 会生成与处理器数量一样多的工作进程。 |
fileSizePerWorker | 工作进程会对其执行 I/O 操作的临时文件的大小。 整数加上一个字节 (b)、千字节 (k)、兆字节 (m) 或千兆字节 (g) 单位(例如,4m 表示 4 兆字节,256g 表示 256 千兆字节)。 |
blockSize | 用于磁盘 I/O 操作的块大小,大于 1 字节且小于 4 兆字节(最大值为 4095k )。 整数加上一个字节、千字节或兆字节单位(例如,512k 表示 512 千字节)。 |
targetTempDirectory | (可选)用于施加磁盘压力的目录。 例如 /tmp/ 。 如果不包含该参数,则向主磁盘加压力。 |
virtualMachineScaleSetInstances | 将此故障应用于虚拟机规模集时的实例 ID 数组。 处于统一业务流程模式的虚拟机规模集需要这些 ID。 详细了解实例 ID。 |
示例 JSON
在具有高级 SSD LRS 的 Standard_D2s_v3
虚拟机上进行测试时,这些示例值产生了大约 100% 的磁盘压力。 较大的 fileSizePerWorker 和较小的 blockSize 有助于充分施加磁盘压力。
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:agent:linuxDiskIOPressure/1.1",
"parameters": [
{
"key": "workerCount",
"value": "4"
},
{
"key": "fileSizePerWorker",
"value": "2g"
},
{
"key": "blockSize",
"value": "64k"
},
{
"key": "targetTempDirectory",
"value": "/tmp/"
}
],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
停止服务
属性 | Value |
---|---|
功能名称 | StopService-1.0 |
目标类型 | Microsoft-Agent |
支持的 OS 类型 | Windows、Linux |
说明 | 故障期间停止 Windows 服务或 Linux systemd 服务。 在持续时间结束或取消试验时重启它。 |
先决条件 | 无。 |
Urn | urn:csci:microsoft:agent:stopService/1.0 |
故障类型 | 连续: |
参数(键、值) | |
serviceName | 要停止的 Windows 服务或 Linux systemd 服务的名称。 |
virtualMachineScaleSetInstances | 将此故障应用于虚拟机规模集时的实例 ID 数组。 处于统一业务流程模式的虚拟机规模集需要这些 ID。 详细了解实例 ID。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:agent:stopService/1.0",
"parameters": [
{
"key": "serviceName",
"value": "nvagent"
},
{
"key": "virtualMachineScaleSetInstances",
"value": "[0,1,2]"
}
],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
限制
- Windows:不支持服务的显示名称。 在命令提示符中使用
sc.exe query
来浏览服务名称。 - Linux:不支持除 systemd 之外的其他服务类型(例如 sysvinit)。
终止进程
属性 | Value |
---|---|
功能名称 | KillProcess-1.0 |
目标类型 | Microsoft-Agent |
支持的 OS 类型 | Windows、Linux |
说明 | 终止与故障参数中发送的进程名称匹配的进程的所有运行中实例。 在为故障操作设置的持续时间内,将会根据指定的终止间隔值重复终止进程。 此故障是一个破坏性故障,如果配置了自我修复,系统管理员需要手动恢复进程。 请注意,当对空名称进程使用、以未指定的间隔使用或找不到要终止的目标进程名称时,此错误将出错。 |
先决条件 | 无。 |
Urn | urn:csci:microsoft:agent:killProcess/1.0 |
故障类型 | 连续: |
参数(键、值) | |
processName | 要连续终止的进程的名称(不带 .exe)。 当故障开始执行时,该进程不需要运行。 |
killIntervalInMilliseconds | 故障在每两次连续终止尝试之间等待的时间(以毫秒为单位)。 |
virtualMachineScaleSetInstances | 将此故障应用于虚拟机规模集时的实例 ID 数组。 处于统一业务流程模式的虚拟机规模集需要这些 ID。 详细了解实例 ID。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:agent:killProcess/1.0",
"parameters": [
{
"key": "processName",
"value": "myapp"
},
{
"key": "killIntervalInMilliseconds",
"value": "1000"
},
{
"key": "virtualMachineScaleSetInstances",
"value": "[0,1,2]"
}
],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
暂停进程
属性 | Value |
---|---|
功能名称 | PauseProcess-1.0 |
目标类型 | Microsoft-Agent |
支持的 OS 类型 | Windows |
说明 | 在指定的持续时间内暂停(挂起)指定进程。 如果有多个具有相同名称的进程,则此错误会挂起所有这些进程。 在故障的持续时间内,进程会按指定的时间间隔重复暂停。 在持续时间结束或取消试验时,进程会继续。 |
先决条件 | 无。 |
Urn | urn:csci:microsoft:agent:pauseProcess/1.0 |
故障类型 | 连续: |
参数(键、值) | |
processNames | 带分隔符的进程名称 JSON 数组,定义要暂停的进程名称。 最多 4 个。 进程名称可以选择包括“.exe”扩展名。 |
pauseIntervalInMilliseconds | 故障在每两次连续暂停尝试之间等待的时间(以毫秒为单位)。 |
virtualMachineScaleSetInstances | 将此故障应用于虚拟机规模集时的实例 ID 数组。 处于统一业务流程模式的虚拟机规模集需要这些 ID。 详细了解实例 ID。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:agent:pauseProcess/1.0",
"parameters": [
{
"key": "processNames",
"value": "[ \"test-0\", \"test-1.exe\" ]"
},
{
"key": "pauseIntervalInMilliseconds",
"value": "1000"
}
],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
限制
目前,processNames 参数中最多可以列出 4 个进程名称。
时间更改
属性 | Value |
---|---|
功能名称 | TimeChange-1.0 |
目标类型 | Microsoft-Agent |
支持的 OS 类型 | Windows |
说明 | 更改虚拟机的系统时间,并在试验结束或试验取消时重置时间。 |
先决条件 | 无。 |
Urn | urn:csci:microsoft:agent:timeChange/1.0 |
故障类型 | 连续: |
参数(键、值) | |
dateTime | ISO8601 格式的日期时间字符串。 如果缺少 YYYY-MM-DD 值,则默认值为试验运行的当天。 如果缺少 Thh:mm:ss 值,则默认值为 12:00:00 AM。 如果提供了 2 位数年份 (YY ),则会根据当前世纪将其转换为 4 位数年份 (YYYY )。 如果缺少时区 <Z> ,则默认偏移量为本地时区。 <Z> 必须始终包含符号(负号或正号)。 |
virtualMachineScaleSetInstances | 将此故障应用于虚拟机规模集时的实例 ID 数组。 处于统一业务流程模式的虚拟机规模集需要这些 ID。 详细了解实例 ID。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:agent:timeChange/1.0",
"parameters": [
{
"key": "dateTime",
"value": "2038-01-01T03:14:07"
},
{
"key": "virtualMachineScaleSetInstances",
"value": "[0,1,2]"
}
],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
任意 Stress-ng 压力测试器
属性 | Value |
---|---|
功能名称 | StressNg-1.0 |
目标类型 | Microsoft-Agent |
支持的 OS 类型 | Linux |
说明 | 通过将参数直接传递给 stress-ng 来运行任何 stress-ng 命令。 当 stress-ng 的预定义故障之一不满足需求时很有用。 |
先决条件 | Linux:需要安装 stress-ng 实用工具。 在多个操作系统(包括 Ubuntu 等基于 Debian 的操作系统)、Red Hat Enterprise Linux 和 OpenSUSE 上使用默认包管理器时,会在代理安装过程中自动安装该实用工具。 对于其他发行版(包括 Azure Linux),必须手动安装 stress-ng。 有关详细信息,请参阅上游项目存储库。 |
Urn | urn:csci:microsoft:agent:stressNg/1.0 |
故障类型 | 连续: |
参数(键、值) | |
stressNgArguments | 传递给 stress-ng 进程的一个或多个参数。 有关可能的 stress-ng 参数的信息,请参阅 stress-ng 一文。 注意:请勿包含“-t”参数,因为它将导致错误。 试验长度直接在 Azure 混沌试验 UI 中定义,而不是在 stressNgArguments 中定义。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:agent:stressNg/1.0",
"parameters": [
{
"key": "stressNgArguments",
"value": "--random 64"
},
{
"key": "virtualMachineScaleSetInstances",
"value": "[0,1,2]"
}
],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
详细信息:服务导向故障
停止应用服务
属性 | Value |
---|---|
功能名称 | Stop-1.0 |
目标类型 | Microsoft-AppService |
说明 | 停止目标应用服务应用程序,然后在故障持续时间结束时重启它们。 此操作适用于“Microsoft.Web/sites”类型的资源,包括应用服务、API 应用、移动应用和 Azure Functions。 |
先决条件 | 无。 |
Urn | urn:csci:microsoft:appService:stop/1.0 |
故障类型 | 连续: |
参数(键、值) | 无。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:appService:stop/1.0",
"duration": "PT10M",
"parameters":[],
"selectorid": "myResources"
}
]
}
禁用自动缩放
属性 | Value |
---|---|
功能名称 | DisableAutoscale |
目标类型 | Microsoft-AutoscaleSettings |
说明 | 禁用自动缩放服务。 禁用自动缩放后,不会根据应用程序的负载自动添加或删除虚拟机规模集、Web 应用、服务总线以及其他资源。 |
先决条件 | 在此资源上启用的 autoScalesetting 资源必须加入到 Chaos Studio。 |
Urn | urn:csci:microsoft:autoscalesettings:disableAutoscale/1.0 |
故障类型 | 连续: |
参数(键、值) | |
enableOnComplete | 布尔值。 配置在操作完成后是否重新启用自动缩放。 默认值为 true 。 |
示例 JSON
{
"name": "BranchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:autoscaleSetting:disableAutoscale/1.0",
"parameters": [
{
"key": "enableOnComplete",
"value": "true"
}
],
"duration": "PT2M",
"selectorId": "Selector1",
}
]
}
AKS Chaos Mesh 网络混沌测试
属性 | Value |
---|---|
功能名称 | NetworkChaos-2.2 |
目标类型 | Microsoft-AzureKubernetesServiceChaosMesh |
支持的节点池操作系统类型 | Linux |
说明 | 导致针对 Azure Kubernetes 服务 (AKS) 群集运行可通过 Chaos Mesh 使用的网络故障。 可用于重新创建因网络中断、延迟、重复、丢失和损坏而导致的 AKS 事件。 |
先决条件 | AKS 群集必须部署了 Chaos Mesh。 |
Urn | urn:csci:microsoft:azureKubernetesServiceChaosMesh:networkChaos/2.2 |
参数(键、值) | |
jsonSpec | 使用 NetworkChaos 类型且采用 JSON 格式的 Chaos Mesh 规范。 可以使用 YAML 到 JSON 转换器(例如将 YAML 转换为 JSON)将 Chaos Mesh YAML 转换为 JSON 并将其最小化。 在 JSON 中使用单引号,或使用反斜杠字符来转义引号。 仅在 jsonSpec 属性下包含 YAML。 请勿包含元数据和类型等信息。 不必在 jsonSpec 范围内指定持续时间,但可以在适用的情况下这样做。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:azureKubernetesServiceChaosMesh:networkChaos/2.2",
"parameters": [
{
"key": "jsonSpec",
"value": "{\"action\":\"delay\",\"mode\":\"one\",\"selector\":{\"namespaces\":[\"default\"]},\"delay\":{\"latency\":\"200ms\",\"correlation\":\"100\",\"jitter\":\"0ms\"}}}"
}
],
"selectorid": "myResources"
}
]
}
AKS Chaos Mesh Pod 混沌测试
属性 | Value |
---|---|
功能名称 | PodChaos-2.2 |
目标类型 | Microsoft-AzureKubernetesServiceChaosMesh |
支持的节点池操作系统类型 | Linux |
说明 | 导致针对 AKS 群集运行可通过 Chaos Mesh 使用的 pod 故障。 可用于重新创建因 Pod 故障或容器问题而导致的 AKS 事件。 |
先决条件 | AKS 群集必须部署了 Chaos Mesh。 |
Urn | urn:csci:microsoft:azureKubernetesServiceChaosMesh:podChaos/2.2 |
参数(键、值) | |
jsonSpec | 使用 PodChaos 类型且采用 JSON 格式的 Chaos Mesh 规范。 可以使用 YAML 到 JSON 转换器(例如将 YAML 转换为 JSON)将 Chaos Mesh YAML 转换为 JSON 并将其最小化。 在 JSON 中使用单引号,或使用反斜杠字符来转义引号。 仅在 jsonSpec 属性下包含 YAML。 请勿包含元数据和类型等信息。 不必在 jsonSpec 范围内指定持续时间,但可以在适用的情况下这样做。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:azureKubernetesServiceChaosMesh:podChaos/2.2",
"parameters": [
{
"key": "jsonSpec",
"value": "{\"action\":\"pod-failure\",\"mode\":\"all\",\"selector\":{\"namespaces\":[\"default\"]}}"
}
],
"selectorid": "myResources"
}
]
}
AKS Chaos Mesh 压力混沌测试
属性 | Value |
---|---|
功能名称 | StressChaos-2.2 |
目标类型 | Microsoft-AzureKubernetesServiceChaosMesh |
支持的节点池操作系统类型 | Linux |
说明 | 导致针对 AKS 群集运行可通过 Chaos Mesh 使用的压力故障。 可用于重新创建因一系列 pod 压力过高(例如,CPU 或内存消耗过高)而导致的 AKS 事件。 |
先决条件 | AKS 群集必须部署了 Chaos Mesh。 |
Urn | urn:csci:microsoft:azureKubernetesServiceChaosMesh:stressChaos/2.2 |
参数(键、值) | |
jsonSpec | 使用 StressChaos 类型且采用 JSON 格式的 Chaos Mesh 规范。 可以使用 YAML 到 JSON 转换器(例如将 YAML 转换为 JSON)将 Chaos Mesh YAML 转换为 JSON 并将其最小化。 在 JSON 中使用单引号,或使用反斜杠字符来转义引号。 仅在 jsonSpec 属性下包含 YAML。 请勿包含元数据和类型等信息。 不必在 jsonSpec 范围内指定持续时间,但可以在适用的情况下这样做。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:azureKubernetesServiceChaosMesh:stressChaos/2.2",
"parameters": [
{
"key": "jsonSpec",
"value": "{\"mode\":\"one\",\"selector\":{\"namespaces\":[\"default\"]},\"stressors\":{\"cpu\":{\"workers\":1,\"load\":50},\"memory\":{\"workers\":4,\"size\":\"256MB\"}}"
}
],
"selectorid": "myResources"
}
]
}
AKS Chaos Mesh IO 混沌测试
属性 | Value |
---|---|
功能名称 | IOChaos-2.2 |
目标类型 | Microsoft-AzureKubernetesServiceChaosMesh |
支持的节点池操作系统类型 | Linux |
说明 | 导致针对 AKS 群集运行可通过 Chaos Mesh 使用的 IO 故障。 在使用 open 、read 和 write 等 IO 系统调用时,可用于重新创建因 IO 延迟和读/写故障而导致的 AKS 事件。 |
先决条件 | AKS 群集必须部署了 Chaos Mesh。 |
Urn | urn:csci:microsoft:azureKubernetesServiceChaosMesh:IOChaos/2.2 |
参数(键、值) | |
jsonSpec | 使用 IOChaos 类型且采用 JSON 格式的 Chaos Mesh 规范。 可以使用 YAML 到 JSON 转换器(例如将 YAML 转换为 JSON)将 Chaos Mesh YAML 转换为 JSON 并将其最小化。 在 JSON 中使用单引号,或使用反斜杠字符来转义引号。 仅在 jsonSpec 属性下包含 YAML。 请勿包含元数据和类型等信息。 不必在 jsonSpec 范围内指定持续时间,但可以在适用的情况下这样做。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:azureKubernetesServiceChaosMesh:IOChaos/2.2",
"parameters": [
{
"key": "jsonSpec",
"value": "{\"action\":\"latency\",\"mode\":\"one\",\"selector\":{\"app\":\"etcd\"},\"volumePath\":\"\/var\/run\/etcd\",\"path\":\"\/var\/run\/etcd\/**\/*\",\"delay\":\"100ms\",\"percent\":50}"
}
],
"selectorid": "myResources"
}
]
}
AKS Chaos Mesh 时间混沌测试
属性 | Value |
---|---|
功能名称 | TimeChaos-2.2 |
目标类型 | Microsoft-AzureKubernetesServiceChaosMesh |
支持的节点池操作系统类型 | Linux |
说明 | 使用 Chaos Mesh 导致 AKS 群集上的系统时钟发生更改。 可用于重新创建因分布式系统不同步、闰年/闰秒逻辑缺失或不正确等问题而导致的 AKS 事件。 |
先决条件 | AKS 群集必须部署了 Chaos Mesh。 |
Urn | urn:csci:microsoft:azureKubernetesServiceChaosMesh:timeChaos/2.2 |
参数(键、值) | |
jsonSpec | 使用 TimeChaos 类型且采用 JSON 格式的 Chaos Mesh 规范。 可以使用 YAML 到 JSON 转换器(例如将 YAML 转换为 JSON)将 Chaos Mesh YAML 转换为 JSON 并将其最小化。 在 JSON 中使用单引号,或使用反斜杠字符来转义引号。 仅在 jsonSpec 属性下包含 YAML。 请勿包含元数据和类型等信息。 不必在 jsonSpec 范围内指定持续时间,但可以在适用的情况下这样做。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:azureKubernetesServiceChaosMesh:timeChaos/2.2",
"parameters": [
{
"key": "jsonSpec",
"value": "{\"mode\":\"one\",\"selector\":{\"namespaces\":[\"default\"]},\"timeOffset\":\"-10m100ns\"}"
}
],
"selectorid": "myResources"
}
]
}
AKS Chaos Mesh 内核混沌测试
属性 | Value |
---|---|
功能名称 | KernelChaos-2.2 |
目标类型 | Microsoft-AzureKubernetesServiceChaosMesh |
支持的节点池操作系统类型 | Linux |
说明 | 导致针对 AKS 群集运行可通过 Chaos Mesh 使用的内核故障。 可用于重新创建因 Linux 内核级错误(例如装载失败或未分配内存)而导致的 AKS 事件。 |
先决条件 | AKS 群集必须部署了 Chaos Mesh。 |
Urn | urn:csci:microsoft:azureKubernetesServiceChaosMesh:kernelChaos/2.2 |
参数(键、值) | |
jsonSpec | 使用 KernelChaos 类型且采用 JSON 格式的 Chaos Mesh 规范。 可以使用 YAML 到 JSON 转换器(例如将 YAML 转换为 JSON)将 Chaos Mesh YAML 转换为 JSON 并将其最小化。 在 JSON 中使用单引号,或使用反斜杠字符来转义引号。 仅在 jsonSpec 属性下包含 YAML。 请勿包含元数据和类型等信息。 不必在 jsonSpec 范围内指定持续时间,但可以在适用的情况下这样做。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:azureKubernetesServiceChaosMesh:kernelChaos/2.2",
"parameters": [
{
"key": "jsonSpec",
"value": "{\"mode\":\"one\",\"selector\":{\"namespaces\":[\"default\"]},\"failKernRequest\":{\"callchain\":[{\"funcname\":\"__x64_sys_mount\"}],\"failtype\":0}}"
}
],
"selectorid": "myResources"
}
]
}
AKS Chaos Mesh HTTP 混沌测试
属性 | Value |
---|---|
功能名称 | HTTPChaos-2.2 |
目标类型 | Microsoft-AzureKubernetesServiceChaosMesh |
支持的节点池操作系统类型 | Linux |
说明 | 导致针对 AKS 群集运行可通过 Chaos Mesh 使用的 HTTP 故障。 用于重新创建由于 HTTP 请求和响应处理失败(例如延迟或不正确响应)引起的事件。 |
先决条件 | AKS 群集必须部署了 Chaos Mesh。 |
Urn | urn:csci:microsoft:azureKubernetesServiceChaosMesh:httpChaos/2.2 |
参数(键、值) | |
jsonSpec | 使用 HTTPChaos 类型且采用 JSON 格式的 Chaos Mesh 规范。 可以使用 YAML 到 JSON 转换器(例如将 YAML 转换为 JSON)将 Chaos Mesh YAML 转换为 JSON 并将其最小化。 在 JSON 中使用单引号,或使用反斜杠字符来转义引号。 仅在 jsonSpec 属性下包含 YAML。 请勿包含元数据和类型等信息。 不必在 jsonSpec 范围内指定持续时间,但可以在适用的情况下这样做。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:azureKubernetesServiceChaosMesh:httpChaos/2.2",
"parameters": [
{
"key": "jsonSpec",
"value": "{\"mode\":\"all\",\"selector\":{\"namespaces\":[\"default\"]},\"target\":\"Request\",\"port\":80,\"method\":\"GET\",\"path\":\"/api\",\"abort\":true}"
}
],
"selectorid": "myResources"
}
]
}
AKS Chaos Mesh DNS 混沌测试
属性 | Value |
---|---|
功能名称 | DNSChaos-2.2 |
目标类型 | Microsoft-AzureKubernetesServiceChaosMesh |
支持的节点池操作系统类型 | Linux |
说明 | 导致针对 AKS 群集运行可通过 Chaos Mesh 使用的 DNS 故障。 用于重新创建由于 DNS 故障引起的事件。 |
先决条件 | AKS 群集必须部署了 Chaos Mesh,并且必须安装 DNS 服务。 |
Urn | urn:csci:microsoft:azureKubernetesServiceChaosMesh:dnsChaos/2.2 |
参数(键、值) | |
jsonSpec | 使用 DNSChaos 类型且采用 JSON 格式的 Chaos Mesh 规范。 可以使用 YAML 到 JSON 转换器(例如将 YAML 转换为 JSON)将 Chaos Mesh YAML 转换为 JSON 并将其最小化。 在 JSON 中使用单引号,或使用反斜杠字符来转义引号。 仅在 jsonSpec 属性下包含 YAML。 请勿包含元数据和类型等信息。 不必在 jsonSpec 范围内指定持续时间,但可以在适用的情况下这样做。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:azureKubernetesServiceChaosMesh:dnsChaos/2.2",
"parameters": [
{
"key": "jsonSpec",
"value": "{\"action\":\"random\",\"mode\":\"all\",\"patterns\":[\"google.com\",\"chaos-mesh.*\",\"github.?om\"],\"selector\":{\"namespaces\":[\"default\"]}}"
}
],
"selectorid": "myResources"
}
]
}
云服务(经典)关闭
属性 | Value |
---|---|
功能名称 | Shutdown-1.0 |
目标类型 | Microsoft-DomainName |
说明 | 故障期间停止部署。 在故障持续时间结束或取消试验时重启部署。 |
先决条件 | 无。 |
Urn | urn:csci:microsoft:domainName:shutdown/1.0 |
故障类型 | 连续: |
参数 | 无。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:domainName:shutdown/1.0",
"parameters": [],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
Azure Cache for Redis(重新启动)
属性 | Value |
---|---|
功能名称 | Reboot-1.0 |
目标类型 | Microsoft-AzureClusteredCacheForRedis |
说明 | 导致在目标上执行强制重新启动操作以模拟短暂中断。 |
先决条件 | 空值 |
Urn | urn:csci:microsoft:azureClusteredCacheForRedis:reboot/1.0 |
故障类型 | 离散。 |
参数(键、值) | |
rebootType | 要在其中执行重新启动操作的节点类型,可以指定为 PrimaryNode、SecondaryNode 或 AllNodes。 |
shardId | 要重新启动的分片的 ID。 仅与高级层缓存相关。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "discrete",
"name": "urn:csci:microsoft:azureClusteredCacheForRedis:reboot/1.0",
"parameters": [
{
"key": "RebootType",
"value": "AllNodes"
},
{
"key": "ShardId",
"value": "0"
}
],
"selectorid": "myResources"
}
]
}
限制
- 重新启动故障会导致强制重新启动以更好地模拟中断事件,这意味着可能会发生数据丢失。
- 重新启动故障是一种离散的故障类型。 与连续故障不同,它是一次性的操作,没有持续时间。
Cosmos DB 故障转移
属性 | Value |
---|---|
功能名称 | Failover-1.0 |
目标类型 | Microsoft-CosmosDB |
说明 | 导致具有单个写入区域的 Azure Cosmos DB 帐户故障转移到指定的读取区域,以模拟写入区域中断。 |
先决条件 | 无。 |
Urn | urn:csci:microsoft:cosmosDB:failover/1.0 |
故障类型 | 连续: |
参数(键、值) | |
readRegion | 在故障转移期间应提升为写入区域的读取区域,例如“East US 2 ”。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:cosmosDB:failover/1.0",
"parameters": [
{
"key": "readRegion",
"value": "West US 2"
}
],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
更改事件中心状态
属性 | Value |
---|---|
功能名称 | ChangeEventHubState-1.0 |
目标类型 | Microsoft-EventHub |
说明 | 将单个事件中心设置为 Azure 事件中心命名空间中的所需状态。 可以影响特定的事件中心名称,或使用“*”影响命名空间中的所有名称。 此操作有助于测试消息传递基础结构的维护或故障情况。 这是一个离散故障,因此实体不会自动返回到起始状态。 |
先决条件 | 一个包含事件中心实体的 Azure 事件中心命名空间。 |
Urn | urn:csci:microsoft:eventHub:changeEventHubState/1.0 |
故障类型 | 离散。 |
参数(键、值) | |
desiredState | 目标事件中心的所需状态。 可能的状态为 Active、Disabled 和 SendDisabled。 |
eventHubs | 目标命名空间内以逗号分隔的事件中心名称列表。 使用“*”可影响命名空间内的所有实体。 |
示例 JSON
{
"name": "Branch1",
"actions": [
{
"selectorId": "Selector1",
"type": "discrete",
"parameters": [
{
"key": "eventhubs",
"value": "[\"*\"]"
},
{
"key": "desiredState",
"value": "Disabled"
}
],
"name": "urn:csci:microsoft:eventHub:changeEventHubState/1.0"
}
]
}
Key Vault:拒绝访问
属性 | Value |
---|---|
功能名称 | DenyAccess-1.0 |
目标类型 | Microsoft-KeyVault |
说明 | 通过暂时修改密钥保管库网络规则来阻止对密钥保管库的所有网络访问。 此操作会阻止依赖于该密钥保管库的应用程序访问机密、密钥和/或证书。 如果密钥保管库允许访问所有网络,则此设置将更改为仅允许来自选定网络的访问。 故障开始时允许的列表中没有虚拟网络。 在故障结束时,所有网络都被允许访问。 如果密钥保管库设置为仅允许从所选网络进行访问,则在故障开始时会删除允许列表中的任何虚拟网络。 它们在故障结束时还原。 |
先决条件 | 目标密钥保管库不能有任何防火墙规则,并且不得设置为允许 Azure 服务绕过防火墙。 如果目标密钥保管库设置为仅允许从所选网络进行访问,则至少得有一个虚拟网络规则。 密钥保管库不能处于恢复模式。 |
Urn | urn:csci:microsoft:keyVault:denyAccess/1.0 |
故障类型 | 连续: |
参数(键、值) | 无。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:keyvault:denyAccess/1.0",
"parameters": [],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
密钥保管库:禁用证书
属性 | Value |
---|---|
功能名称 | DisableCertificate-1.0 |
目标类型 | Microsoft-KeyVault |
说明 | 通过使用证书属性,故障会在特定持续时间(由用户提供)内禁用证书。 它会在此故障持续时间后启用证书。 |
先决条件 | 无。 |
Urn | urn:csci:microsoft:keyvault:disableCertificate/1.0 |
故障类型 | 连续: |
参数(键、值) | |
certificateName | 执行故障的 Azure Key Vault 证书的名称。 |
版本 | 应禁用的证书版本。 如果未指定此项,则禁用最新版本。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:keyvault:disableCertificate/1.0",
"parameters": [
{
"key": "certificateName",
"value": "<name of AKV certificate>"
},
{
"key": "version",
"value": "<certificate version>"
}
],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
密钥保管库:递增证书版本
属性 | Value |
---|---|
功能名称 | IncrementCertificateVersion-1.0 |
目标类型 | Microsoft-KeyVault |
说明 | 使用 Key Vault 证书客户端库生成新的证书版本和指纹。 当前工作证书已升级到此版本。 故障持续时间过后,证书版本不会恢复。 |
先决条件 | 无。 |
Urn | urn:csci:microsoft:keyvault:incrementCertificateVersion/1.0 |
故障类型 | 离散。 |
参数(键、值) | |
certificateName | 执行故障的 Azure Key Vault 证书的名称。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "discrete",
"name": "urn:csci:microsoft:keyvault:incrementCertificateVersion/1.0",
"parameters": [
{
"key": "certificateName",
"value": "<name of AKV certificate>"
}
],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
密钥保管库:更新证书策略
属性 | Value |
---|---|
功能名称 | UpdateCertificatePolicy-1.0 |
目标类型 | Microsoft-KeyVault |
说明 | 证书策略(例如证书有效期、证书类型、密钥大小或密钥类型)根据用户输入进行更新,并在故障持续时间过后恢复。 |
先决条件 | 无。 |
Urn | urn:csci:microsoft:keyvault:updateCertificatePolicy/1.0 |
故障类型 | 连续: |
参数(键、值) | |
certificateName | 执行故障的 Azure Key Vault 证书的名称。 |
版本 | 应更新的证书版本。 如果未指定此项,则更新最新版本。 |
enabled | 布尔值。 值,指示是否启用新证书版本。 |
validityInMonths | 证书的有效期(月)。 |
certificateTransparency | 指示证书在创建时是否应发布到证书透明度列表。 |
certificateType | 证书类型。 |
contentType | 证书的内容类型。 例如,当证书包含原始 PFX 字节时,它是 Pkcs12;当证书包含 ASCII PEM 编码字节时,它是 Pem。 Pkcs12 是假定的默认值。 |
keySize | RSA 密钥的大小:2048、3072 或 4096。 |
exportable | 布尔值。 值,指示证书密钥是否可从保管库或安全证书存储导出。 |
reuseKey | 布尔值。 值,指示证书轮换时是否应重用证书密钥。 |
keyType | 颁发新证书时生成的支持密钥类型,例如 RSA 或 EC。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:keyvault:updateCertificatePolicy/1.0",
"parameters": [
{
"key": "certificateName",
"value": "<name of AKV certificate>"
},
{
"key": "version",
"value": "<certificate version>"
},
{
"key": "enabled",
"value": "True"
},
{
"key": "validityInMonths",
"value": "12"
},
{
"key": "certificateTransparency",
"value": "True"
},
{
"key": "certificateType",
"value": "<certificate type>"
},
{
"key": "contentType",
"value": "Pem"
},
{
"key": "keySize",
"value": "4096"
},
{
"key": "exportable",
"value": "True"
},
{
"key": "reuseKey",
"value": "False"
},
{
"key": "keyType",
"value": "RSA"
}
],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
NSG 安全规则
属性 | Value |
---|---|
功能名称 | SecurityRule-1.0、SecurityRule-1.1 |
目标类型 | Microsoft-NetworkSecurityGroup |
说明 | 启用在现有 Azure 网络安全组 (NSG) 或一组 Azure NSG 中进行操作或创建规则(假设规则定义适用于各个安全组)的功能。 适用于:
|
先决条件 | 无。 |
Urn | urn:csci:microsoft:networkSecurityGroup:securityRule/1.0、urn:csci:microsoft:networkSecurityGroup:securityRule/1.1 |
故障类型 | 连续: |
参数(键、值) | |
name | 已创建的安全规则的唯一名称。 如果 NSG 上已存在另一个同名规则,则故障会失败。 必须以字母或数字开头。 必须以字母、数字或下划线结尾。 只能包含字母、数字、下划线、句点和连字符。 |
protocol | 安全规则的协议。 必须是 Any、TCP、UDP 或 ICMP。 |
sourceAddresses | 一个字符串,表示 JSON 分隔的 CIDR 格式 IP 地址数组。 也可以是入站规则的服务标记名称,例如 AppService 。 也可以使用星号 (* ) 来匹配所有源 IP。 |
destinationAddresses | 一个字符串,表示 JSON 分隔的 CIDR 格式 IP 地址数组。 也可以是出站规则的服务标记名称,例如 AppService 。 也可以使用星号 (* ) 来匹配所有目标 IP。 |
action | 安全组访问类型。 必须是 Allow 或 Deny。 |
destinationPortRanges | 一个字符串,表示 JSON 分隔的单个端口和/或端口范围的数组,例如 80 或 1024-65535。 |
sourcePortRanges | 一个字符串,表示 JSON 分隔的单个端口和/或端口范围的数组,例如 80 或 1024-65535。 |
priority | 一个介于 100 和 4096 之间的值,该值对于 NSG 内的所有安全规则都是唯一的。 如果 NSG 上已存在另一个同优先级规则,则故障会失败。 |
direction | 受安全规则影响的流量的方向。 必须是 Inbound 或 Outbound。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:networkSecurityGroup:securityRule/1.0",
"parameters": [
{
"key": "name",
"value": "Block_SingleHost_to_Networks"
},
{
"key": "protocol",
"value": "Any"
},
{
"key": "sourceAddresses",
"value": "[\"10.1.1.128/32\"]"
},
{
"key": "destinationAddresses",
"value": "[\"10.20.0.0/16\",\"10.30.0.0/16\"]"
},
{
"key": "access",
"value": "Deny"
},
{
"key": "destinationPortRanges",
"value": "[\"80-8080\"]"
},
{
"key": "sourcePortRanges",
"value": "[\"*\"]"
},
{
"key": "priority",
"value": "100"
},
{
"key": "direction",
"value": "Outbound"
}
],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
限制
- 该故障只能应用于现有的 NSG。
- 当应用旨在拒绝流量的 NSG 规则时,现有连接在空闲 4 分钟之前不会中断。 一种解决方法是在同一步骤中添加另一个分支,该分支使用在应用 NSG 故障时会导致现有连接中断的故障。 例如,终止进程、暂时停止服务或重启 VM 会导致连接重置。
- 规则在操作开始时应用。 在操作期间对规则的任何外部更改都会导致试验失败。
- 不支持创建或修改应用程序安全组规则。
- 每个目标 NSG 上的优先级值必须唯一。 尝试创建与另一个具有相同优先级值的新规则会导致试验失败。
- NSG 安全规则版本 1.1 故障支持额外的
flushConnection
参数。 此功能有一个未解决的已知问题:如果启用了flushConnection
,则故障可能会导致“FlushingNetworkSecurityGroupConnectionIsNotEnabled”错误。 若要暂时避免此错误,请禁用flushConnection
参数或使用 NSG 安全规则版本 1.0 故障。
服务总线:更改队列状态
属性 | Value |
---|---|
功能名称 | ChangeQueueState-1.0 |
目标类型 | Microsoft-ServiceBus |
说明 | 将服务总线命名空间内的队列实体设置为所需状态。 可以影响特定实体名称或使用“*”影响所有实体名称。 此操作有助于测试消息传递基础结构的维护或故障情况。 这是一个离散故障,因此实体不会自动返回到起始状态。 |
先决条件 | 一个服务总线命名空间,其中至少有一个队列实体。 |
Urn | urn:csci:microsoft:serviceBus:changeQueueState/1.0 |
故障类型 | 离散。 |
参数(键、值) | |
desiredState | 目标队列的所需状态。 可能的状态为 Active、Disabled、SendDisabled 和 ReceiveDisabled。 |
queues | 目标命名空间内以逗号分隔的队列名称列表。 使用“*”影响命名空间内的所有队列。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "discrete",
"name": "urn:csci:microsoft:serviceBus:changeQueueState/1.0",
"parameters":[
{
"key": "desiredState",
"value": "Disabled"
},
{
"key": "queues",
"value": "samplequeue1,samplequeue2"
}
],
"selectorid": "myServiceBusSelector"
}
]
}
限制
- 最多可以向此故障传递 1000 个队列实体。
服务总线:更改订阅状态
属性 | Value |
---|---|
功能名称 | ChangeSubscriptionState-1.0 |
目标类型 | Microsoft-ServiceBus |
说明 | 将服务总线命名空间和主题内的订阅实体设置为所需状态。 可以影响特定实体名称或使用“*”影响所有实体名称。 此操作有助于测试消息传递基础结构的维护或故障情况。 这是一个离散故障,因此实体不会自动返回到起始状态。 |
先决条件 | 一个服务总线命名空间,其中至少有一个订阅实体。 |
Urn | urn:csci:microsoft:serviceBus:changeSubscriptionState/1.0 |
故障类型 | 离散。 |
参数(键、值) | |
desiredState | 目标订阅的所需状态。 可能的状态为 Active 和 Disabled。 |
主题 | 父主题,其中包含要影响的一个或多个订阅。 |
subscriptions | 目标命名空间内以逗号分隔的订阅名称列表。 使用“*”影响命名空间内的所有订阅。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "discrete",
"name": "urn:csci:microsoft:serviceBus:changeSubscriptionState/1.0",
"parameters":[
{
"key": "desiredState",
"value": "Disabled"
},
{
"key": "topic",
"value": "topic01"
},
{
"key": "subscriptions",
"value": "*"
}
],
"selectorid": "myServiceBusSelector"
}
]
}
限制
- 最多可以向此故障传递 1000 个订阅实体。
服务总线:更改主题状态
属性 | Value |
---|---|
功能名称 | ChangeTopicState-1.0 |
目标类型 | Microsoft-ServiceBus |
说明 | 将服务总线命名空间内的指定主题实体设置为所需状态。 可以影响特定实体名称或使用“*”影响所有实体名称。 此操作有助于测试消息传递基础结构的维护或故障情况。 这是一个离散故障,因此实体不会自动返回到起始状态。 |
先决条件 | 一个服务总线命名空间,其中至少有一个主题实体。 |
Urn | urn:csci:microsoft:serviceBus:changeTopicState/1.0 |
故障类型 | 离散。 |
参数(键、值) | |
desiredState | 目标主题的所需状态。 可能的状态为 Active 和 Disabled。 |
topics | 目标命名空间内以逗号分隔的主题名称列表。 使用“*”影响命名空间内的所有主题。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "discrete",
"name": "urn:csci:microsoft:serviceBus:changeTopicState/1.0",
"parameters":[
{
"key": "desiredState",
"value": "Disabled"
},
{
"key": "topics",
"value": "*"
}
],
"selectorid": "myServiceBusSelector"
}
]
}
限制
- 最多可以向此故障传递 1000 个主题实体。
VM 重新部署
属性 | Value |
---|---|
功能名称 | Redeploy-1.0 |
目标类型 | Microsoft-VirtualMachine |
说明 | 通过关闭 VM、将 VM 移动到 Azure 基础结构中的新节点并重启来重新部署 VM。 这有助于验证工作负荷在出现维护事件时的复原能力。 |
先决条件 | 无。 |
Urn | urn:csci:microsoft:virtualMachine:redeploy/1.0 |
故障类型 | 离散。 |
参数(键、值) | 无。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "discrete",
"name": "urn:csci:microsoft:virtualMachine:redeploy/1.0",
"parameters":[],
"selectorid": "myResources"
}
]
}
限制
- 虚拟机重新部署操作受到 10 小时间隔的限制。 如果试验因“重新部署请求过多”错误而失败,请等待 10 小时后再重试试验。
虚拟机关闭
属性 | Value |
---|---|
功能名称 | Shutdown-1.0 |
目标类型 | Microsoft-VirtualMachine |
支持的 OS 类型 | Windows、Linux。 |
说明 | 在故障期间关闭 VM。 在结束试验或取消试验时重启它。 仅支持 Azure 资源管理器 VM。 |
先决条件 | 无。 |
Urn | urn:csci:microsoft:virtualMachine:shutdown/1.0 |
故障类型 | 连续: |
参数(键、值) | |
abruptShutdown | (可选)布尔值,指示是要正常关闭 VM 还是要突然(具有破坏性)关闭 VM。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:virtualMachine:shutdown/1.0",
"parameters": [
{
"key": "abruptShutdown",
"value": "false"
}
],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
虚拟机规模集关闭
此故障有两个可以使用的版本:版本 1.0 和版本 2.0。 主要区别在于,2.0 版允许按可用区域进行筛选,仅关闭指定区域内的实例。
虚拟机规模集关闭版本 1.0
属性 | Value |
---|---|
功能名称 | 版本 1.0 |
目标类型 | Microsoft-VirtualMachineScaleSet |
支持的 OS 类型 | Windows、Linux。 |
说明 | 在故障持续时间内关闭或终止虚拟机规模集实例,并在故障持续时间结束时或试验取消时重启 VM。 |
先决条件 | 无。 |
Urn | urn:csci:microsoft:virtualMachineScaleSet:shutdown/1.0 |
故障类型 | 连续: |
参数(键、值) | |
abruptShutdown | (可选)布尔值,指示是要正常关闭还是要突然(具有破坏性)关闭虚拟机规模集实例。 |
instances | 一个字符串,表示应用故障的虚拟机规模集实例 ID 的分隔数组。 |
版本 1.0 示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "continuous",
"name": "urn:csci:microsoft:virtualMachineScaleSet:shutdown/1.0",
"parameters": [
{
"key": "abruptShutdown",
"value": "true"
},
{
"key": "instances",
"value": "[\"1\",\"3\"]"
}
],
"duration": "PT10M",
"selectorid": "myResources"
}
]
}
虚拟机规模集关闭版本 2.0
属性 | Value |
---|---|
功能名称 | Shutdown-2.0 |
目标类型 | Microsoft-VirtualMachineScaleSet |
支持的 OS 类型 | Windows、Linux。 |
说明 | 在故障期间关闭或终止虚拟机规模集实例。 在故障持续时间结束或取消试验时重启 VM。 支持动态目标。 |
先决条件 | 无。 |
Urn | urn:csci:microsoft:virtualMachineScaleSet:shutdown/2.0 |
故障类型 | 连续: |
filter | (可选)从版本 2.0 开始可用。 用于筛选选择器中的目标列表。 目前支持对区域列表进行筛选。 该筛选器仅应用于区域内的虚拟机规模集资源:
|
参数(键、值) | |
abruptShutdown | (可选)布尔值,指示是要正常关闭还是要突然(具有破坏性)关闭虚拟机规模集实例。 |
版本 2.0 示例 JSON 代码段
下面的代码片段显示了如何配置动态筛选和关闭 2.0 故障。
为动态目标配置筛选器:
{
"type": "List",
"id": "myResources",
"targets": [
{
"id": "<targetResourceId>",
"type": "ChaosTarget"
}
],
"filter": {
"type": "Simple",
"parameters": {
"zones": [
"1"
]
}
}
}
配置关闭故障:
{
"name": "branchOne",
"actions": [
{
"name": "urn:csci:microsoft:virtualMachineScaleSet:shutdown/2.0",
"type": "continuous",
"selectorId": "myResources",
"duration": "PT10M",
"parameters": [
{
"key": "abruptShutdown",
"value": "false"
}
]
}
]
}
限制
目前,仅支持配置有“统一”编排模式的虚拟机规模集。 如果虚拟机规模集使用“灵活”编排,则可以使用 Azure 资源管理器虚拟机关闭故障来关闭选定的实例。
详细信息:业务流程操作
延迟
属性 | Value |
---|---|
故障提供程序 | 空值 |
支持的 OS 类型 | 空值 |
说明 | 在其他试验操作之前、之间或之后添加时间延迟。 此操作并非故障,是用于同步试验中的操作的。 使用此操作等待某个故障导致的影响出现在服务中,或等待试验之外的活动完成。 例如,试验可能在注入另一个故障之前等待自动修复发生。 |
先决条件 | 空值 |
Urn | urn:csci:microsoft:chaosStudio:timedDelay/1.0 |
持续时间 | ISO 8601 格式的延迟持续时间(例如 PT10M)。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "delay",
"name": "urn:csci:microsoft:chaosStudio:timedDelay/1.0",
"duration": "PT10M"
}
]
}
启动负载测试(Azure 负载测试)
属性 | Value |
---|---|
功能名称 | Start-1.0 |
目标类型 | Microsoft-AzureLoadTest |
说明 | 根据提供的负载测试 ID(从 Azure 负载测试)启动负载测试。 |
先决条件 | 必须在 Azure 负载测试服务中创建一个具有有效负载测试 ID 的负载测试。 |
Urn | urn:csci:microsoft:azureLoadTest:start/1.0 |
故障类型 | 离散。 |
参数(键、值) | |
testID | 在 Azure 负载测试服务中创建的特定负载测试的 ID。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "discrete",
"name": "urn:csci:microsoft:azureLoadTest:start/1.0",
"parameters": [
{
"key": "testID",
"value": "0"
}
],
"selectorid": "myResources"
}
]
}
停止负载测试(Azure 负载测试)
属性 | Value |
---|---|
功能名称 | Stop-1.0 |
目标类型 | Microsoft-AzureLoadTest |
说明 | 根据提供的负载测试 ID(从 Azure 负载测试)停止负载测试。 |
先决条件 | 必须在 Azure 负载测试服务中创建一个具有有效负载测试 ID 的负载测试。 |
Urn | urn:csci:microsoft:azureLoadTest:stop/1.0 |
故障类型 | 离散。 |
参数(键、值) | |
testID | 在 Azure 负载测试服务中创建的特定负载测试的 ID。 |
示例 JSON
{
"name": "branchOne",
"actions": [
{
"type": "discrete",
"name": "urn:csci:microsoft:azureLoadTest:stop/1.0",
"parameters": [
{
"key": "testID",
"value": "0"
}
],
"selectorid": "myResources"
}
]
}