前提条件
- 已开通云容器引擎,至少有一个云容器引擎集群实例。产品入口:云容器引擎。
- 开通天翼云服务网格实例。
操作步骤
我们以bookinfo应用为例演示本地限流能力,首先在default命名空间部署bookinfo应用。
然后在default命名空间部署针对productpage服务的限流策略,token数量最大为5,每2秒重新填充5个token:
apiVersion: istio.ctyun.cn/v1beta1
kind: LocalRateLimiter
metadata:
name: productpage-limit
spec:
workloadSelector:
# 匹配工作负载
labels:
app: productpage
context: SIDECAR_INBOUND
statPrefix: http_local_rate_limiter
configs:
- name: productpage
routeConfig:
vhost:
name: 'inbound|http|9080'
rateLimitConfig:
tokenBucket:
maxTokens: 5
tokensPerFill: 5
fillInterval: 2s
filterEnabled:
runtimeKey: local_rate_limit_enabled
defaultValue:
numerator: 100
denominator: HUNDRED
filterEnforced:
runtimeKey: local_rate_limit_enforced
defaultValue:
numerator: 100
denominator: HUNDRED
responseHeadersToAdd:
- appendAction: OVERWRITE_IF_EXISTS_OR_ADD
header:
key: x-local-rate-limit
value: 'true'
我们使用go-stress-testing工具验证效果,如下图所示,结果状态码中有200和429(请求被限流);200的个数每2秒增加5个,符合我们设定的2秒重新填充5个token的设定;429状态码在持续增加。
单独请求productpage服务可以看到请求被限流的情况: