首页
/ 基于LitmusChaos的Sock-Shop微服务混沌工程实践指南

基于LitmusChaos的Sock-Shop微服务混沌工程实践指南

2025-07-08 05:36:54作者:劳婵绚Shirley

概述

本文将详细介绍如何使用LitmusChaos混沌工程平台对Sock-Shop微服务应用进行故障注入实验,并通过Grafana仪表板实时监控系统表现。Sock-Shop是一个经典的微服务演示应用,包含前端、订单、目录等多个服务组件,非常适合用于混沌工程实践。

环境准备

1. 部署Sock-Shop应用

首先需要在Kubernetes集群中部署Sock-Shop微服务应用:

# 创建专用命名空间
kubectl create ns sock-shop

# 部署应用组件
kubectl apply -f deploy/sock-shop/

部署完成后,可以通过以下命令验证所有Pod是否正常运行:

kubectl get pods -n sock-shop

2. 安装LitmusChaos基础设施

LitmusChaos提供了完整的混沌工程解决方案,包括操作器、CRDs和各种预定义的故障实验:

# 安装LitmusChaos操作器
kubectl apply -f litmus-operator-v1.6.1.yaml

# 设置管理员RBAC权限
kubectl apply -f litmus-admin-rbac.yaml

# 安装预定义实验
kubectl apply -f experiments.yaml -n litmus

# 安装监控指标导出器
kubectl apply -f chaos-exporter.yaml

监控系统搭建

为了实时观察混沌实验对系统的影响,我们需要部署Prometheus和Grafana监控系统:

# 按顺序部署监控组件
kubectl apply -f 01-monitoring-ns.yaml
kubectl apply -f 02-prometheus-rbac.yaml
kubectl apply -f 03-prometheus-configmap.yaml
kubectl apply -f 04-prometheus-alert-rules.yaml
kubectl apply -f 05-prometheus-deployment.yaml
kubectl apply -f 06-prometheus-svc.yaml
kubectl apply -f 07-grafana-deployment.yaml
kubectl apply -f 08-grafana-svc.yaml

部署完成后,可以通过NodePort或修改为LoadBalancer类型访问Grafana仪表板。默认登录凭证为admin/admin。

配置数据源和仪表板

  1. 在Grafana中添加Prometheus数据源
  2. 导入预定义的"Sock-Shop Performance"仪表板

仪表板将展示关键性能指标,包括:

  • 服务响应延迟
  • 每秒查询量(QPS)
  • 资源使用率
  • 错误率等

执行混沌实验

CPU压力测试

对目录服务(catalogue)注入CPU高负载故障:

kubectl apply -f catalogue-cpu-hog.yaml

内存压力测试

等待约60秒后,对订单服务(orders)注入内存高负载故障:

kubectl apply -f orders-memory-hog.yaml

可以通过以下命令查看实验执行状态:

kubectl describe chaosengine catalogue-cpu-hog -n litmus
kubectl describe chaosengine orders-memory-hog -n litmus

实验结果分析

在Grafana仪表板中可以观察到:

  1. 目录服务在CPU压力下的响应延迟显著增加
  2. 订单服务在内存压力下的QPS明显下降
  3. 相关服务的错误率可能上升

这些数据可以帮助我们:

  • 识别系统薄弱环节
  • 验证系统的容错能力
  • 评估故障传播范围
  • 测试监控告警的有效性

最佳实践建议

  1. 从非生产环境开始实验,逐步提高故障严重程度
  2. 每次只注入一个故障,便于问题定位
  3. 建立完善的监控和告警机制
  4. 实验前做好系统备份
  5. 记录每次实验的结果和观察

通过这种系统化的混沌工程实践,可以显著提高微服务架构的稳定性和可靠性,为生产环境中的真实故障做好准备。