本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
依赖关系验证
依赖关系验证测试会阻止该区域内的依赖关系,以查看您的服务在不可用时的行为。它可以帮助你验证在软依赖关系受损时你的服务是否保持健康,而你可能不知道的表面依赖关系很难。您还可以包括已知的硬依赖关系,以了解其影响。
是什么让这个测试与众不同
-
重点关注区域内依赖关系故障。
-
您可以选择将哪些依赖项作为目标。
-
如果您在下一代 Resilience Hub 中启用了依赖关系发现,则可以从已发现的依赖项中进行选择。否则,您可以手动输入 DNS 终端节点。
如何通过这个测试
-
这是一次持续的考验。如果所有成功警报都保持
OK状态直到测试操作结束,则测试通过。使用它来验证软依赖关系是真正的软依赖关系——如果你的警报被破坏,这种依赖关系实际上可能很难。
需要考虑的事情
-
从单个软依赖关系开始,然后逐步建立一个软依赖关系,然后再屏蔽多个软依赖关系。
-
如果您包含硬依赖关系,则预计警报会被破坏,测试失败——硬依赖关系在被封锁时会产生重大影响。这对于确认依赖关系确实很困难很有用。
-
选择衡量整体服务运行状况的成功警报,而不是依赖项本身的运行状况。
-
确保在测试期间积极使用您的依赖关系(流量流向它们),这可以验证区块是否有效。考虑添加跟踪依赖关系使用情况(例如,请求数或连接错误)的警报或指标,以验证在测试期间是否使用了依赖关系。
-
依赖关系必须是可解析的 DNS 终端节点,如果 DNS 无法解析,操作将失败。
-
屏蔽触发运行状况检查失败的依赖关系可能会导致计算(例如 Amazon ECS 任务)被替换。丢包操作不会重新应用于替换任务,可能会报告为失败。
关键测试参数
-
持续时间 -测试操作运行的时间长度。之后还需要几分钟才能在测试结束之前收集最终结果。首次创建测试时的默认值为 30 分钟。
-
要屏蔽的依赖关系 -默认情况下,预先选择已发现的具有最大查询量的软依赖关系。如果没有将任何依赖关系归类为软依赖关系,则不选择任何依赖关系。您可以进行调整以定位单个依赖项或特定群组,也可以按 DNS 域名手动添加依赖关系。此处添加的其他依赖项仅用于此测试,不会保存到服务的依赖项发现中。这些默认值适用于控制台;使用 API 时,您可以明确提供依赖关系。
操作
此测试运行以下 AWS FIS 操作以减少流向您选择的依赖项的流量。操作会给亚马逊 EC2 实例、亚马逊 ECS 任务(亚马逊 EC2 和 Fargate)和亚马逊 EKS 容器(亚马逊 EC2)注入 100% 的数据包丢失。如果您的服务没有与操作目标类型相匹配的资源,则会跳过该操作。
注意
用于阻止依赖关系的操作需要额外的设置:安装在亚马逊 EC2 实例上的 SSM 代理、亚马逊 ECS 任务定义中的 SSM 代理容器或亚马逊 EKS 容器的 Kubernetes 服务账户。
| 处理建议 | 说明 |
|---|---|
aws:ssm:send-command |
将流量从 Amazon EC2 实例转移到所选依赖项。 |
aws:ecs:task-network-packet-loss |
将流量从 Amazon ECS 任务转移到选定的依赖关系。 |
aws:eks:pod-network-packet-loss |
将流量从亚马逊 EKS Pod 转移到选定的依赖项。 |
要查看此测试的参数及其默认值,请使用get-test-template。