网络丢包演练

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

网络丢包是一种常见的网络故障,网络拥塞、网络硬件故障、网络链路干扰等情况都可能会造成网络丢包,通过此演练场景验证系统在网络丢包时的告警和恢复情况。

使用限制

该演练场景需要使用tc(Traffic Control)工具及其依赖的内核netem组件。

  • 如系统缺少tc工具,请执行yum install -y iproute-tcapt-get install -y iproute2安装,或者执行插件时指定相关参数自动安装。

  • 如系统内核缺少netem组件,如CentOS,可执行yum install kernel-modules-extra安装软件包并重启。

    警告

    注意安装kernel-modules-extra会修改内核版本,请谨慎操作,建议使用其他操作系统的ECS进行演练。

实现原理

本方案使用云助手插件ACS-ECS-NetLoss,使用tc(Traffic Control)工具和netem组件对网卡增加特定规则,实现对Linux内核流量控制。该插件可实现对全局IP或仅针对单个IP进行限制,其中云助手网段100.100.0.0/16不会受到影响。

使用指南

演练准备

请确保您的ECS实例已安装云助手Agent,并且云助手状态正常。具体操作,请参见查看云助手状态及异常状态处理

故障注入

  1. 登录ECS实例。

    具体操作,请参见使用Workbench工具以SSH协议登录Linux实例

  2. 使用具有sudo访问权限的用户,运行云助手插件ACS-ECS-NetLoss

    sudo acs-plugin-manager --exec --plugin ACS-ECS-NetLoss --params inject,dev=eth0,[rate=paramA],[target-ip=paramB],[replace=paramC],[duartion=paramD],[install-tc=paramF]

    []内为可选故障注入参数,参数说明:

    为可选故障注入参数,参数说明:

    • dev(必填):需要注入的网卡,如eth0,可使用ifconfig查看当前系统的网卡。

    • rate(可选):丢包比例,默认10(%)。

    • target-ip(可选):预期产生影响的目标IP,默认为空,表示对所有IP增加丢包规则,如指定目标IP,则只有该IP会受到影响。

    • replace(可选):如网卡已有设定的tc规则,注入时会产生冲突导致失败。如确定对原有规则进行覆盖,可指定值为true。

    • duartion(可选):持续时间,单位为s,默认为300。

    • install-tc(可选):如系统缺少tc工具,可指定该参数为true自动安装,默认false

      显示如下所示时,说明云助手插件ACS-ECS-NetLoss执行成功。

      image

  3. 查看故障注入是否成功。

    通过ping目标网络,查看网络丢包情况,如下图所示,可以看到网络发生丢包,平均丢包约为44%。

    image

故障恢复

  • 方法一:等待超时自动恢复。

  • 方法二:执行故障恢复命令。

    sudo acs-plugin-manager --exec --plugin ACS-ECS-NetLoss --params recover