第三十八章 九析带你轻松完爆 Istio - Fortio、Circuit breakers 断路器

网友投稿 303 2022-10-28

第三十八章 九析带你轻松完爆 Istio - Fortio、Circuit breakers 断路器

系列文章:总目录索引:九析带你轻松完爆 istio 服务网格系列教程

目录

1 前言

2 邀约

3 Circuit breakers 断路器介绍

4 Circuit breakers 实例

4.1 jiuxi-deploy.yaml

4.2 jiuxi-svc.yaml

4.3 jiuxi-dr.yaml

5 Circuit breakers 实例部署

5.1 Istio 注入

5.2 部署其他资源文件

6 验证断路器功能

1 前言

如果你对博客有任何疑问,请告诉我。

2 邀约

你可以从 b 站搜索 “九析”,获取免费的、更生动的视频资料:

3 Circuit breakers 断路器介绍

印象里,很多年前,居民区靠街有一种门面房。屋子不大,粉色的灯光,开放式的推拉门。门口总是坐着一个美丽的大姐姐,每当我从路边经过,她都会露出热情的微笑。“帅哥进来玩啊”。印象中,这是她经常对我说的话。

那时,我还很年轻,还很帅,我觉得她一定是不可救药地爱上我了,直到有一天我看到了我不愿意看到的一幕。

还记得是一个夏日的傍晚,我刚加班完回出租房,路上又经过了她的小屋,大老远就听到她温柔的声音:“帅哥来玩啊”。连日的工作劳累让我疲惫不堪,当我终于鼓足勇气准备接受她的邀请、迎接她的感情时,忽然从身后传来一个沙哑的声音:“来了”。我回头一看,原来是一个民工打扮的人。那一刻,我觉得自己像是被耍了一样,落荒而逃。

后来,我经常看到有民工模样的人走进那扇落地窗开拉门,有时有好几个,每当这个时候,我都会看到小姐姐会把开拉门从里面锁好,然后再把厚厚的窗帘放下……

慢慢地,当我社会阅历丰富,我终于知道了大姐姐的职业,为人民服务。

而记忆中的推拉门,竟是她一个弱女子面对这个世界的安全保障,是她对过载请求的一种天然防护,就像我经常使用的断路器一样。

断路器是 Istio 提供的一个有用的技术。在微服务设置断路器可以有效保障微服务的抗操性。比如在断路器中,你可以设置服务并发连接次数限制或者服务调用失败次数,一旦达到设置的阈值,断路器将“跳闸”并停止与该主机的进一步连接。

因为断路器适用于负载平衡池中“真正”的服务网格(Istio 资源注入后的 Pod),因此可以在 Destination Rule 配置断路器,而 Destination Rule 最终会被翻译成 Envoy 的配置,然后作用在 Envoy 上。这样当流量进入到被 Istio 注入后的 Pod,流量就会被 Envoy 拦截,这样断路器就会针对流量发生作用。

4 Circuit breakers 实例

本实例用到 3 个资源文件:

# Istio 注入后的目标 Pod 资源jiuxi-deploy.yaml # Istio 目标规则文件jiuxi-dr.yaml# Pod 资源的对外服务jiuxi-svc.yaml

4.1 jiuxi-deploy.yaml

4.2 jiuxi-svc.yaml

该文件是对上面 deploy 文件的一个 service 暴露:

4.3 jiuxi-dr.yaml

详细说明如下:

请求挂起状态的最大请求数maxRequestsPerConnection: 一定时间内限制对后端服务发起的最大请求数,如果超过了此配置,就会出现限流。outlierDetection.consecutiveErrors: 拒绝连接的最大失败次数outlierDetection.interval: 触发熔断的时间间隔,在 interval 时间间隔内,达到 consecutiveErrors 即触发熔断outlierDetection.baseEjectionTime: 熔断时长maxEjectionPercent: 熔断连接最大百分比

5 Circuit breakers 实例部署

5.1 Istio 注入

对 jiuxi-deploy.yaml 文件进行 Istio 注入:

istioctl kube-inject -f jiuxi-deploy.yaml | kubectl apply -f -

发现 nginx 容器个数已经是 2 个,就说明注入成功了。

5.2 部署其他资源文件

直接部署 jiuxi-svc.yaml 和 jiuxi-dr.yaml:

kubectl apply -f jiuxi-dr.yamlkubectl apply -f jiuxi-svc.yaml

自此,整个实例部署成功。

6 验证断路器功能

使用 Istio 的负载测试工具 Fortio,有关 Fortio 的安装和使用,请参考我上章的内容,分分钟容易到爆。

执行如下命令:

fortio load -c 10 -n 50 -qps 0 (CLUSTER_IP:PORT)

执行结果如下图所示:

从执行结果来看,有 27 个报错。 说明断路器生效。

自此,九析带你轻松完爆 Fortio、Circuit breakers 断路器功能。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Mybatis关联查询结果集对象嵌套的具体使用
下一篇:基于EOS平台的去中心化Oracle技术平台介绍
相关文章

 发表评论

暂时没有评论,来抢沙发吧~