linkerd实战(8)熔断机制

本文详细介绍了Linkerd服务网格中的熔断机制,包括Fail Fast和Failure Accrual两种策略。通过实战操作,展示了如何配置和触发会话驱动的熔断以及请求驱动的熔断,以防止级联错误和资源耗尽。同时,文章还提到了HTTP响应分类器和重试策略的相关配置。
摘要由CSDN通过智能技术生成
概述
熔断器关注禁用那些可能请求错误的会话,从负载均衡器的角度来看,它们充当断路器,当被触发时,临时暂停特定端点的使用。以避免级联错误及雪崩效应导致资源耗尽。
在client配置中有两个模块可以被视为断路器:
Fail Fast - 会话(连接)驱动的断路器
Failure Accrual - 请求驱动的断路器

Fail Fast
默认情况下,快速失败在 linkerd 中是禁用的,因为在使用少量主机时代理服务请求可能会出现问题。如果服务只有一个主机,从负载均衡池中删除与该主机的唯一连接将导致该服务的所有请求失败,直到重新建立连接。在这种情况下,最好将连接留在池中,并继续发送请求。然而,对于较大的服务,快速失败是有用的,并且可以在每路由器的基础上在配置路由器时通过设置 failFast 参数来启用。
我们来演示一下会话驱动的熔断器。

1、修改config/linkerd.yaml开启failFast,默认是关闭状态。
$ vi config/linkerd.yaml
routers:
- protocol: http
client:
#开启failFast
failFast: true
loadBalancer:
kind: p2c
maxEffort: 5
2、重启linkerd
$ ./linkerd config\linkerd.yaml

3、测试访问
执行多次请求
$ curl -H "Host:test" http://127.0.0.1:4140
It works too!
It works too!
It works!
It works!
It works!
It works too!
It works!

4、模拟会话失败(我们关闭上文建立的81服务)
$ sudo mv /etc/nginx/sites-enabled/default2 /etc/nginx/sites-available/

5、ngnix 重新加载配置文件
$ sudo /usr/sbin/nginx -s reload

6、测试访问
执行多次请求
$ curl -H "Host:test" http://127.0.0.1:4140
It works!
It works!
It works!
It works!

在某次请求明显感觉得到卡顿之后,客户端开启了熔断模式,请求被负载均衡定向到健康的服务节点。

7、恢复服务
$ sudo mv /etc/nginx/sites-available/default2 /etc/nginx/sites-enabled/
$ sudo /usr/sbin/nginx -s reload

8、测试访问
执行多次请求
$ curl -H "Host:test" http://127.0.0.1:4140
It works too!
It works too!
It works!
It works!
It works!
It works too!
It works!
requeueBudget重试
requeues
Requeues连接级故障前提是保证幂等。如果遇到连接级别失败,并且有requeueBudget配置(有默认配置),则将重试请求。是由client下的requeueBudge参数配置的。每个client都有自己的requeueBudge,不与其他client或service共享。

会话(连接)级别的重试配置,可以在client配置下新增requeueBudget配置:
routers:
- protocol: http
client:
requeueBudget:
minRetriesPerSec:10
percentCanRetry:0.2
ttlSecs:10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值