Skip to content

故障响应流程

故障响应规范

响应时间要求

不同优先级的响应时间:

P1 故障(业务中断):
  接报后 15 分钟内:电话回拨确认
  接报后 1 小时内:远程接入开始排查
  接报后 4 小时内:现场工程师到达(省会城市)
  目标:4 小时内恢复业务

P2 故障(业务降级):
  接报后 30 分钟内:电话回拨
  接报后 2 小时内:远程排查
  目标:8 小时内恢复

P3 故障(非核心功能):
  接报后 2 小时内:响应
  目标:2 个工作日内解决

故障处理 SOP

P1 故障处理 SOP

P1 故障处理标准操作流程:

T+0:接到故障报告
  - 记录故障时间、报告人、联系方式
  - 初步了解故障现象
  - 立即升级通知(TAC 主管 + 客户经理)

T+15分钟:电话回拨客户
  - 确认故障现象
  - 了解影响范围
  - 获取远程访问权限

T+30分钟:远程接入排查
  - 登录管理平台,查看系统状态
  - 收集日志和告警信息
  - 初步判断故障原因

T+1小时:故障定位
  - 确定故障根因
  - 制定修复方案
  - 评估修复风险

T+2小时:执行修复
  - 按修复方案操作
  - 实时与客户沟通进展
  - 记录所有操作步骤

T+4小时:业务恢复
  - 验证业务恢复
  - 客户确认
  - 发送故障通报

T+24小时:RCA 报告
  - 根因分析
  - 改进措施
  - 发送给客户

常见故障排查

CloudOS 管理平台不可用

bash
# 排查步骤

# 1. 检查 VIP 是否正常
ping <management-vip>
ip addr show | grep <vip>

# 2. 检查 Keepalived 状态
systemctl status keepalived
journalctl -u keepalived -n 50

# 3. 检查 HAProxy 状态
systemctl status haproxy
haproxy -c -f /etc/haproxy/haproxy.cfg

# 4. 检查 API 服务
systemctl status openstack-nova-api
systemctl status openstack-keystone
systemctl status openstack-neutron-server

# 5. 检查数据库
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_%';"
# wsrep_cluster_size 应为 3
# wsrep_local_state_comment 应为 Synced

# 6. 检查消息队列
rabbitmqctl cluster_status
rabbitmqctl list_queues | grep -v "^0"  # 查看积压队列

# 常见修复操作
# 重启 API 服务
systemctl restart openstack-nova-api
systemctl restart openstack-keystone

# 修复 Galera 集群(谨慎操作)
# 找到最新节点(seqno 最大)
cat /var/lib/mysql/grastate.dat

# 在最新节点上引导集群
galera_new_cluster

虚拟机无法创建

bash
# 排查步骤

# 1. 查看 Nova 日志
tail -f /var/log/nova/nova-conductor.log | grep ERROR
tail -f /var/log/nova/nova-scheduler.log | grep ERROR

# 2. 检查计算节点状态
openstack compute service list
# 确认所有 nova-compute 服务状态为 up

# 3. 检查资源是否充足
openstack hypervisor stats show
# 查看 free_vcpus, free_ram_mb, free_disk_gb

# 4. 检查镜像是否可用
openstack image show <image-id>
# 状态应为 active

# 5. 检查网络是否正常
openstack network list
openstack subnet list

# 6. 手动测试创建(带详细日志)
openstack server create \
    --flavor c1.small \
    --image <image-id> \
    --network <network-id> \
    --debug \
    test-debug-vm

# 7. 查看 VM 错误信息
openstack server show <vm-id> | grep fault

存储 IOPS 下降

bash
# 排查步骤

# 1. 检查 Ceph 集群状态
ceph status
ceph health detail

# 2. 检查 OSD 性能
ceph osd perf
# 关注 commit_latency_ms 和 apply_latency_ms
# 正常值:< 10ms,异常:> 100ms

# 3. 检查是否有数据重建
ceph pg stat | grep -v "active+clean"

# 4. 检查 OSD 磁盘健康
for osd in $(ceph osd ls); do
    smartctl -H /dev/$(ceph osd metadata $osd | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('devices','').split(',')[0].split('/')[-1])")
done

# 5. 检查网络
# 存储网络丢包会严重影响 Ceph 性能
ping -c 100 <storage-node-ip> | tail -5

# 6. 检查 OSD 日志
journalctl -u ceph-osd@0 -n 100 | grep -E "slow|warn|error"

# 常见修复
# 重启性能异常的 OSD
systemctl restart ceph-osd@<osd-id>

# 调整 OSD 内存(如内存不足)
ceph config set osd osd_memory_target 4294967296  # 4GB

网络不通

bash
# VM 网络故障排查

# 1. 确认 VM 内部网络配置
# 登录 VM
ip addr show
ip route show
cat /etc/resolv.conf

# 2. 检查安全组规则
openstack security group rule list <sg-id>

# 3. 检查 OVS 状态(在宿主机上)
ovs-vsctl show
# 确认 VM 的 tap 接口已连接到 br-int

# 4. 检查 OVS 流表
ovs-ofctl dump-flows br-int | grep <vm-mac>

# 5. 检查 Neutron 代理
openstack network agent list
# 确认所有代理状态为 alive

# 6. 抓包分析
# 在宿主机上抓 VM 的流量
tcpdump -i <tap-interface> -n -w /tmp/vm-traffic.pcap

# 7. 检查 VxLAN 隧道
ovs-vsctl show | grep -A5 "type: vxlan"
# 确认隧道端点 IP 正确

# 常见修复
# 重启 Neutron 代理
systemctl restart neutron-openvswitch-agent
systemctl restart neutron-l3-agent

RCA(根因分析)报告

根因分析报告模板:

故障编号:INC-2024-0115-001
故障时间:2024-01-15 14:30 - 16:45(持续 2 小时 15 分钟)
影响范围:生产环境所有 VM 无法创建
严重程度:P1

一、故障描述
  2024-01-15 14:30,客户反映无法创建新虚拟机,
  已有 VM 运行正常,管理平台可以访问。

二、时间线
  14:30 - 客户发现问题,联系 H3C TAC
  14:45 - TAC 工程师远程接入
  15:00 - 定位到 Nova Scheduler 服务异常
  15:30 - 发现 RabbitMQ 消息队列积压
  16:00 - 重启 RabbitMQ 集群
  16:30 - 验证 VM 创建恢复正常
  16:45 - 客户确认,故障关闭

三、根本原因
  RabbitMQ 节点2 磁盘空间不足(/var/lib/rabbitmq 占用 98%),
  导致消息无法写入,Nova Scheduler 无法接收调度请求。

四、直接原因
  RabbitMQ 日志文件未配置轮转,持续增长占满磁盘。

五、修复措施
  临时措施:清理 RabbitMQ 日志,重启服务
  永久措施:
    1. 配置 RabbitMQ 日志轮转(logrotate)
    2. 增加 /var/lib/rabbitmq 磁盘告警(阈值 80%)
    3. 扩展 RabbitMQ 节点磁盘容量

六、预防措施
  1. 完善磁盘使用率监控(所有关键目录)
  2. 定期检查日志配置
  3. 建立磁盘容量规划流程

七、经验教训
  中间件服务的磁盘监控不能只监控根分区,
  需要针对关键目录单独设置告警。

褚成志的云与计算笔记