ECS容灾故障演练

更新时间:
复制 MD 格式

本文详细介绍了ECS在云盘数据、镜像备份以及跨可用区的故障演练与恢复操作。

应用场景

场景

说明

云盘数据异常演练和恢复

当云盘数据出现异常或丢失时,可利用快照将云盘数据恢复至创建快照时的状态。通过故障注入和演练恢复,能够加深对相关操作的理解。

镜像备份的故障演练和恢复

镜像为ECS实例提供操作系统初始化的应用数据、预装软件和预配置数据,如果环境异常可以通过备份的镜像创建新的ECS实例,快速部署相同的操作系统和数据环境的ECS实例,以达到恢复的效果。通过故障注入和演练恢复,能够加深对操作的理解。

SMC跨可用区演练和恢复

当单可用区存在风险或已有风险需要将实例迁移至其他可用区时,可通过SMC实现跨可用区迁移。同时在迁移过程中,如果目标可用区规格售空,也可以选择变更实例类型选取新的实例规格。通过单机故障和网络不通模拟出现宕机一次的风险,通过SMC迁移实例至新可用区,以避免受到风险影响。

准备工作

  • 云盘数据与镜像备份演练:Linux操作系统实例,云助手为可用状态。具体操作,请参见创建ECS实例

  • SMC跨可用区演练:Linux操作系统实例,并且有如下限制。

    • 抢占式实例不支持跨可用区迁移。

    • 更换实例规格时,仅限同规格族内变配(vCPU和内存),不支持跨规格族更改实例规格。关于实例规格族的详细信息,请参见实例规格族

      说明

      如果您想跨可用区更改到其他规格族,建议您执行跨可用区迁移操作后,再更改实例规格。具体操作,请参见包年包月实例升配规格更改按量付费实例规格

    • ECS 控制台支持单次最多跨可用区批量迁移 5 台实例,如需提升迁移数量,请联系人工支持。

    • 以下实例规格族不支持跨可用区迁移。

      • 异构计算

      • 弹性裸金属服务器

      • 超级计算集群

      • 通用算力型实例规格族u2a

      • 部分经济型实例规格族e(仅支持 e-c1m1、e-c1m2e-c1m4)

      • x86计算

        • 大数据型

        • 本地SSD

        • 安全增强型

      • 部分8代实例规格族(仅支持 hfr8i、hfc8i、hfg8i、r8ae、g8ae、c8ae、r8y、c8y、g8y、r8a、g8a、c8a、g8i、r8ic8i)

      • 部分9代实例规格族(仅支持r9i、 g9ic9i)

云盘数据异常演练和恢复

  1. 连接实例并输入以下命令新建模拟数据。

    远程连接实例具体操作,请参见使用Workbench登录Linux实例

    touch hello.txt
    echo "Hello, World!" > hello.txt
  2. ECS实例云盘进行快照备份,具体操作,请参见手动创建单个快照

  3. 故障注入。

    1. 输入以下命令,模拟数据误删除。

      rm hello.txt 
    2. 通过云助插件ecs-fault-oscrash模拟被攻击导致云服务器异常宕机。

      sudo acs-plugin-manager --exec --plugin ecs-fault-oscrash --params inject
      [ecs-user@iZuf69aocxxx ~]$ sudo acs-plugin-manager --exec --plugin ecs-fault-oscrash --params inject
      Done
  4. 验证故障注入。

    • ECS非预期运维事件中,出现因实例错误实例重启类型的事件,说明故障注入成功。

      该事件的事件等级为严重,事件状态为执行完毕,实例维护属性为自动重启恢复

    • ECS实例中,执行uptime,查看系统运行时间来确定ECS实例是否重启。

      命令输出中 up 0 min 表示系统刚启动 0 分钟,确认 ECS 实例已重启。

      [ecs-user@iZuf69aoc8c8u2 ~]$ uptime
      18:21:46 up 0 min,  1 user,  load average: 0.44, 0.10, 0.03
  5. 通过云盘快照恢复数据。具体操作,请参见使用快照回滚云盘

  6. 验证数据正常且删除的数据是否已经成功恢复。

    [ecs-user@iZ0jlxxx ~]$ ls
    hello.txt
    [ecs-user@iZ0jlxxx ~]$ cat hello.txt
    Hello, World!
    [ecs-user@iZ0xxx ~]$ pwd
    /home/ecs-user

镜像备份的故障演练和恢复

  1. 连接实例并新建模拟数据。

    远程连接实例具体操作,请参见使用Workbench登录Linux实例

    1. 输入以下命令,模拟新建数据。

      touch hello.txt
      echo "Hello, World!" > hello.txt
    2. 输入以下命令,查看系统环境。当前$MY_VAR环境变量数据为空。

      echo $MY_VAR
  2. 对整个ECS实例的配置、操作系统、已安装的软件和数据进行全量备份。具体操作,请参见使用实例创建自定义镜像

    自定义镜像创建完成后,在 自定义镜像 列表中确认该镜像的 状态 列显示为 可用

  3. 故障注入。

    1. 输入以下命令,模拟数据误删除。

      rm hello.txt 
    2. 输入以下命令,模拟永久修改系统MY_VAR环境变量修改系统的运行环境。

      echo 'export MY_VAR="value"' >> ~/.bashrc && source ~/.bashrc
      [ecs-user@iZxxx ~]$ echo $MY_VAR
      [ecs-user@iZxxx ~]$ echo 'export MY_VAR="value"'  >> ~/.bashrc && source ~/.bashrc
      [ecs-user@iZxxx ~]$ echo $MY_VAR
      value
      [ecs-user@iZxxx ~]$
    3. 通过云助插件ecs-fault-oscrash模拟被攻击导致云服务器异常宕机。

      sudo acs-plugin-manager --exec --plugin ecs-fault-oscrash --params inject
  4. 验证故障注入。

    • ECS非预期运维事件中,出现因实例错误实例重启类型的事件,说明故障注入成功。

    • ECS实例中,执行uptime,查看系统运行时间来确定ECS实例是否重启。

    • 宕机启动后查看hello.txt被删除且环境变量$MY_VAR是有效状态。

      [ecs-user@iZxxx ~]$ pwd
      /home/ecs-user
      [ecs-user@iZxxx ~]$ ls
      [ecs-user@iZxxx ~]$ echo $MY_VAR
      value
      [ecs-user@iZxxx ~]$
  5. 使用预先备份的自定义镜像,创建具有相同操作系统、应用程序和数据的ECS实例,从而实现数据恢复。在同一地域的不同可用区中新建实例。具体操作,请参见使用自定义镜像或共享镜像创建实例

  6. 登录使用自定义镜像创建ECS实例查看文件恢复,且环境变量也恢复到创建镜像时的状态。

    [ecs-user@iZxxxZ ~]$ ls
    hello.txt
    [ecs-user@iZxxxZ ~]$ pwd
    /home/ecs-user
    [ecs-user@iZxxxZ ~]$ echo $MY_VAR
    [ecs-user@iZxxxZ ~]$

SMC跨可用区演练和恢复

  1. 连接实例并输入以下命令新建模拟数据。

    远程连接实例具体操作,请参见使用Workbench登录Linux实例

    touch hello.txt
    echo "Hello, World!" > hello.txt
  2. 通过SMCECS云服务器迁移到同地域的不同可用区。具体操作,请参见跨可用区迁移ECS

    迁移任务创建后,ECS 实例状态变为已停止并显示正在迁移标签,页面右上方弹出迁移进度提示(初始为 0%)。迁移期间请勿对实例执行停止、重启、释放等操作,且暂不支持快照和磁盘相关操作。

  3. 待迁移成功后登录验证,验证实例迁移到其他可用区且迁移前数据未发现丢失。

    [ecs-user@xxx ~]$ ls
    hello.txt
    [ecs-user@xxx ~]$ cat hello.txt
    Hello, World!
    [ecs-user@xxx ~]$ pwd
    /home/ecs-user