背景介绍
在服务部署或运行期间,目标端口可能已被一个预期之外的进程(如僵尸进程、配置错误的旧版服务或恶意程序)所占用。这会导致新服务启动失败,并抛出Address already in use的错误。本演练模拟此端口冲突场景,帮助您检验服务启动脚本的错误处理能力、验证部署系统的健康检查和回滚逻辑,以及监控告警的有效性。
基本原理
预先在探针管理处将内部自研Agent安装至云主机上,使用管控通道下发动作执行命令。
原理是启动自定义程序, 创建Socket对象并绑定到指定端口。
故障注入
1、纳管实例资源
导航至 故障演练 > 目标应用 > 应用资源 页面。
在资源类型页签中选择云主机,然后单击添加资源。
在弹出的对话框中,勾选目标云主机实例,单击确定。
2、编排演练任务
导航至 故障演练 > 目标应用 > 演练管理页面,单击新建演练。
在基本信息页面,按提示填写演练名称和描述,然后单击下一步。
在演练对象配置页面:
配置动作组:为动作组命名,资源类型选择云主机。
添加实例:单击添加实例,勾选上一步中添加的云主机实例。
添加故障动作:单击立即添加,在列表中选择端口占用动作。
在弹出的参数配置框中,配置所需参数,然后单击确定。
持续时间:故障动作持续时间。
指定被占用的端口:目标端口号。
强制占用此端口:先尝试杀掉当前正在使用该端口的进程,然后再占用它。
cgroup根路径:在容器化等复杂环境中,对特定 cgroup 控制组内的进程进行端口占用。通常保持默认值 /sys/fs/cgroup 即可。
3、配置全局策略
在全局配置页面,按需添加保护策略和监控指标。
配置完成后,单击完成按钮,创建演练任务。
4、发起故障注入
发起演练:在演练管理列表找到对应演练任务,单击操作列的执行演练,在新页面中点击发起新演练。
进入实验:系统将自动跳转到本次演练的运行详情页,或在演练执行记录列表点击对应执行实例的详情进入。
注入故障:在动作组中,找到端口占用动作卡片,单击执行。
查看日志:单击动作卡片本身,在右侧弹出的侧边栏中查看执行详情。
效果验证
在故障注入期间,您可以通过以下方式验证演练效果:
1、观测实例指标:
登录应用性能监控控制台,观测已接入应用的应用提供服务请求量、应用提供服务平均响应时间指标。
2、业务应用验证:
尝试启动原本需要使用该端口的业务服务。预期服务启动会失败,并在其日志或控制台输出中看到明确的错误信息,如 Address already in use 或 端口已被占用。