应急预案:专有云V3环境中OPS1或OPS2机器夯机场景下DNS修复的应急方法

1. 概述

本文主要介绍在专有云V3环境下,OPS1或OPS2机器夯机场景下DNS修复的应急方法。

1.1. 适用范围

  • 专有云V3企业版,基础服务设备

1.2. 用户告知

  • 适用平台:x86
  • 授权级别:L2(二线技术支持工程师)
  • 临时或固化方案:临时
  • 操作复杂度:低
  • 预估执行时长:10分钟
  • 业务影响:否
    说明:因夯机,已导致业务异常。
  • 风险等级:中
    注意:本方案仅针对OPS1或OPS2单机因为高负载等原因导致的夯机场景,不包含双机同时夯机场景

2. 问题描述

OPS1或者OPS2单台机器因某些情况导致夯机时,流量可能会继续往该机DNS分发,从而导致解析失败。

3. 解决方案

3.1. 环境检查

OPS1或者OPS2单台机器负载高,同时满足以下四个条件时,需要人工介入进行应急处置。

  • CPU达到水位90%以上。
  • Load值达到水位90%以上。
  • 持续时间超过五分钟。
  • DNS查询丢包超过200。

3.2. 实施步骤

应急处置分以下三种场景:

场景一:高负载机器可以登录的情况

  1. 登录高负载机器,进入OpsDnsSlave容器,执行以下命令,停止相应的服务。
    /etc/init.d/named stop; /etc/init.d/ospfd stop; /etc/init.d/bgpd stop
  2. 处理OPS高负载问题,处理完之后,请继续执行下一步操作。
    说明:OPS负载高的处理方法请联系阿里云技术支持参见“通用方案:专有云环境物理机CPU负载过高的排查思路”方案进行处理。
  3. 登录高负载机器,进入OpsDnsSlave容器,执行以下命令,启动相应的服务。
    /etc/init.d/named start; /etc/init.d/ospfd start; /etc/init.d/bgpd start

场景二:高负载机器无法登录的情况

第一种方法

直接重启高负载物理机。

第二种方法
  1. 直接拔掉高负载机器上的eth4连接LSW的网线(现场环境可能是非标,不一定是eth4连接LSW的网线)。
  2. 处理OPS高负载问题,处理完之后,请继续执行下一步操作。
  3. 将拔掉的网线重新插上。
第三种方法
  1. 如果是OPS1机器负载高,登录LSW3交换机,若是OPS2机器负载高,则登录LSW4交换机。
  2. 依次执行以下命令,切换为shutdown端口。
    sys
    intten0/0/1
    shutdown
    quit
    quit
    save
    执行以下命令,查看网络信息,从DSW、LSW查看路由信息是否正常。
    displayiproute [$Port]
    说明:[$Port]为广播端口。
  3. 处理OPS高负载问题,处理完之后,请继续执行下一步操作。
  4. 依次执行以下命令,启用端口。
    sys
    intten0/0/1
    undoshutdown
    quit
    quit
    save
    执行以下命令,查看网络信息,从DSW、LSW查看路由信息是否正常。
    displayiproute [$Port]

场景三:dnsslave容器请求量高的情况

  1. 进入高水位的dnsslave容器,执行以下命令,关闭DNS服务的日志。
    rndc querylog off; ps axu | grep anycast_check.sh | awk '{print $2}' | xargs kill -9
  2. 等待DNS请求量恢复正常。
  3. 执行以下命令,恢复dnsslave容器中的服务。
    rndc querylog on; /root/opsbuild/anycast_check_start.sh

3.3. 结果验证

确认客户域名解析正常。

4. 回滚方案

  • 场景一的回滚操作:将高负载机器中的dnsslave容器重启即可,具体操作如下:
    1. 登录高负载机器,执行如下命令,获取dnsslave容器的ID,并记录为[$Dns_Slave_ID]。

      sudo docker ps | grep dnsslave
    2. 执行以下命令,重启dnsslave容器。
      docker restart [$Container_ID]
      说明: [$Container_ID]为dnsslave容器的ID。
  • 场景二的回滚操作:重启机器无回滚操作。
  • 场景三的回滚操作:将dnsslave容器重启即可。