基于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。
配置数据源和仪表板
- 在Grafana中添加Prometheus数据源
- 导入预定义的"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仪表板中可以观察到:
- 目录服务在CPU压力下的响应延迟显著增加
- 订单服务在内存压力下的QPS明显下降
- 相关服务的错误率可能上升
这些数据可以帮助我们:
- 识别系统薄弱环节
- 验证系统的容错能力
- 评估故障传播范围
- 测试监控告警的有效性
最佳实践建议
- 从非生产环境开始实验,逐步提高故障严重程度
- 每次只注入一个故障,便于问题定位
- 建立完善的监控和告警机制
- 实验前做好系统备份
- 记录每次实验的结果和观察
通过这种系统化的混沌工程实践,可以显著提高微服务架构的稳定性和可靠性,为生产环境中的真实故障做好准备。