背景
在同城双活或异地多活容灾场景中,灾备资源通常和主力资源部署在不同可用区或不同地域,并归属于不同子网,当发生可用区或地域级别故障时,可以进行容灾切换,为了验证容灾架构的有效性,您可以利用混沌平台“VPC 子网网络隔离”动作将服务主力资源所在子网封禁来模拟因故障造成的资源不可访问情况。
故障效果
VPC 子网隔离故障提供单个子网和全部子网两种网络隔离方式。
单个子网
故障动作参数隔离范围选择单个子网时,将会封禁选中子网的出入流量,子网间也不可访问。例如下图,当选择对子网 A 和子网 B 注入“单个子网”网络隔离故障时,子网 A 与子网 B 的出入流量将被全部封禁,子网 A 不能访问子网B和其它子网,但是各子网内部流量不受影响。
![](https://qcloudimg.tencent-cloud.cn/image/document/05c2983055cf3c724bc2b151d05627b0.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/05c2983055cf3c724bc2b151d05627b0.png)
全部子网
故障动作参数隔离范围选择全部子网时,将会封禁选中子网的出入流量,但是选中子网间访问不受影响,例如下图,当选择对子网A和子网B注入“全部子网”网络隔离故障时,子网 A、子网 B 内部流量访问不受影响,但是访问其他子网的流量将被禁止。您可以将归属于同一个可用区的子网同时注入故障,模拟该可用区与其它可用区出现网络隔离故障。
![](https://qcloudimg.tencent-cloud.cn/image/document/7e2e3bd6f223b5cfcdcc3887c39fec23.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/7e2e3bd6f223b5cfcdcc3887c39fec23.png)
演练准备
同一 VPC 下创建两个子网,并且子网下关联内网 CLB、CVM、CDB 资源,网络拓扑如下,其中主可用区分别关联了两个 CVM、一个内网网关、一个 CDB 实例,备可用区关联了一个 CVM、一个内网网关。同一 VPC 下实例默认网络互通,所以在故障注入前,子网间资源可以互相访问,当封禁主可用区子网时,主可用区子网内实例间仍可正常访问,但外部外访问主可用区子网实例将失败。
![](https://qcloudimg.tencent-cloud.cn/image/document/41f5d156011269d532877ccb9d93fba7.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/41f5d156011269d532877ccb9d93fba7.png)
注意:
子网网络隔离通过对子网设置网络 ACL 规则实现,存量长连接会被立即断开。
当目标子网存在网络 ACL 规则时,故障注入时,将会临时解绑,并在恢复时重新恢复绑定,演练过程中请勿手动修改或删除网络 ACL 规则。
子网网络隔离不能用来模拟数据库单可用区故障,数据库单可用区故障请参见 数据库相关故障 动作。
选择隔离范围为“全部子网”时,最大允许添加20个子网,当您需要对20个以上的子网进行“全部子网”隔离时,请联系腾讯云助手 提交工单。
此故障动作不会禁止外部对子网内 CLB 的 Ping 探测。
演练实施
步骤一:创建演练
1. 登录 腾讯云混沌演练平台 控制台。
2. 在左侧导航栏选择演练管理页面,单击新建演练后,选择创建空白演练。
3. 填写完基本信息后,进入演练对象配置,对象类型选择云资源下的 VPC 子网,单击添加实例。
![](https://qcloudimg.tencent-cloud.cn/image/document/16b4301059d9e86a6a267ae5e4a6379e.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/16b4301059d9e86a6a267ae5e4a6379e.png)
单击添加实例后,会列出目标地域下所有的 VPC 子网信息,可以根据子网 ID、VPC 实例 ID、标签、可用区键筛选符合要求的子网。
注意:
子网网络隔离影响范围较大,请谨慎选择故障注入实例范围。
![](https://qcloudimg.tencent-cloud.cn/image/document/36607a2b5ecea595e104c63cf3de2334.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/36607a2b5ecea595e104c63cf3de2334.png)
4. 选择目标子网后,单击立即添加,即可添加演练动作。
![](https://qcloudimg.tencent-cloud.cn/image/document/1c98ddba1fe8f2606841d1c37f04e971.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/1c98ddba1fe8f2606841d1c37f04e971.png)
演练动作选择网络隔离,然后单击下一步。
![](https://qcloudimg.tencent-cloud.cn/image/document/465fe1019448238c4a321946254e7981.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/465fe1019448238c4a321946254e7981.png)
设置隔离范围参数,完成后单击确定。
![](https://qcloudimg.tencent-cloud.cn/image/document/2bc4613c441a95d4771a694e3cae5d86.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/2bc4613c441a95d4771a694e3cae5d86.png)
5. 单击确定后,可以看到故障动作会自动带出恢复动作。
![](https://qcloudimg.tencent-cloud.cn/image/document/ab5cbfb468912312a842c3f8ba14d3ca.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/ab5cbfb468912312a842c3f8ba14d3ca.png)
6. 单击下一步,进入全局配置,全局配置请参见 快速入门,注意子网没有相应基础资源监控指标,确认无误后,单击提交,平台自动进行环境预检。
![](https://qcloudimg.tencent-cloud.cn/image/document/6656cea34b16b70cb0542673baba454c.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/6656cea34b16b70cb0542673baba454c.png)
步骤二:执行演练
1. 单击右上角执行开始演练,由于演练为手动推进,所以需要手动执行故障动作。
![](https://qcloudimg.tencent-cloud.cn/image/document/fdfa7ba3a05007a599ea4d7be1cb6f3c.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/fdfa7ba3a05007a599ea4d7be1cb6f3c.png)
2. 单击故障动作执行,等待故障执行成功。
![](https://qcloudimg.tencent-cloud.cn/image/document/146a905852ec8348abbb1433c31afbef.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/146a905852ec8348abbb1433c31afbef.png)
步骤三:验证注入效果
在私有化网络控制台,网络拓扑菜单可以看到网络拓扑已经在相应子网上添加了网络 ACL 规则。
![](https://qcloudimg.tencent-cloud.cn/image/document/98e36e6b3d4f0dd76049be7ed3415a5f.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/98e36e6b3d4f0dd76049be7ed3415a5f.png)
测试实例访问,预期故障可用区内子网间实例互访不受影响,子网外访问故障子网内实例失败。
CVM 访问 CVM
同一子网内访问正常
![](https://qcloudimg.tencent-cloud.cn/image/document/806f53176bbce1e3ea187a3c09dd8b2c.png)
不同子网访问失败(命令阻塞)
![](https://qcloudimg.tencent-cloud.cn/image/document/2bc5a7bce2d13b0f3549198786b5395b.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/2bc5a7bce2d13b0f3549198786b5395b.png)
CVM 访问 CDB
同一子网内访问正常
![](https://qcloudimg.tencent-cloud.cn/image/document/9977509e39c667339bf1481133e9530d.png)
不同子网访问失败
![](https://qcloudimg.tencent-cloud.cn/image/document/cd2d54b74dfa14ca9b49903274db8956.png)
CVM 访问 CLB
由于 CLB 使用 vpcgw 代答 Ping 探测,所以子网网络隔离并不会禁止 Ping 探测,可以使用 telnet 对服务端口进行探测。
同一子网访问正常
![](https://qcloudimg.tencent-cloud.cn/image/document/fed404aebe915f7a6b042192332da863.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/fed404aebe915f7a6b042192332da863.png)
不同子网访问失败(命令阻塞)
![](https://qcloudimg.tencent-cloud.cn/image/document/65b4fdde7d0fda34c803093aa2731f3a.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/65b4fdde7d0fda34c803093aa2731f3a.png)
步骤四:执行故障恢复动作
单击执行恢复动作并等待动作执行成功。
![](https://qcloudimg.tencent-cloud.cn/image/document/1239c5eb80a09778f96ce942b1a9ea6c.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/1239c5eb80a09778f96ce942b1a9ea6c.png)
步骤五:验证恢复效果
参考步骤三进行验证,预期子网内及子网间实例访问正常。