Redis 故障注入
采用 RedisService ,我们可以为 Redis 服务注入故障,该功能可以用于混沌测试等场景,以检验系统是否对于 Redis 故障进行了恰当的容错处理。
RedisService 支持配置两种类型的故障,分别是:
- 延迟(DELAY):延迟是时间故障。它们模拟增加的网络延迟或一个由于超过负载而反应迟缓的 Redis 服务。
- 错误(ERROR):错误是请求错误。它们模拟异常情况下的 Redis 服务。
例如,以下配置会使百分之五十的 GET 命令直接返回错误。
kubectl apply -f- <<EOF
apiVersion: redis.aeraki.io/v1alpha1
kind: RedisService
metadata:
name: redis-cluster
namespace: redis
spec:
host:
- redis-cluster.redis.svc.cluster.local
redis:
- route:
host: redis-cluster.redis.svc.cluster.local
faults:
- type: ERROR
percentage:
value: 50
commands:
- GET
EOF
此时通过客户端访问 redis-cluster 服务,会有一半的 GET 命令返回 Fault Injected: Error
错误信息。
kubectl exec -it `kubectl get pod -l app=redis-client -n redis -o jsonpath="{.items[0].metadata.name}"` -c redis-client -n redis -- redis-cli -h redis-cluster
redis-cluster:6379> get a
(error) Fault Injected: Error
redis-cluster:6379> get a
"a"
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.
最后修改 May 8, 2023: Redis demo (0df6697)