小白网-奉贤部落-奉贤免费信息发布平台

查看: 59|回复: 0

istio110进修笔记09Istio流量治理之设备请求超时和熔断

[复制链接]

2万

主题

0

回帖

8万

积分

论坛元老

Rank: 8Rank: 8

积分
88256
发表于 2025-7-26 13:04 | 显示全部楼层 |阅读模式
在前面的章节中,我们进修了Istio API资本工具中的VirtualService、DestinationRule、Gateway他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。它们可以用于将集群内部的流量(http或tcp)毗连到办事网格中,并可以履行一些常见的流量治理功用,如设备请求路由、故障注入、流量传输(http或tcp)等他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。在本节中,我们将领会利用istio停止流量治理的别的两个常见功用:设备请求超时和融合他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
设备请求超时他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。HTPP办事的请求超时可以由虚拟办事的路由法则中的超时字段指定他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。默许情况下,此设置是禁用的他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。以下测试是基于bookinfo利用完成的他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
在这个测试中,批评办事的超时设备为1秒他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。为了观察测试成果,istio的故障注入功用也将用于向评级办事注入2秒提早故障他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
首先,履行以下号令来初始化bookinfo利用法式办事的路由法则:
kubectl apply-f samples/book info/networking/virtual-service-all-v1 . YAML
点窜reviews办事的虚拟办事,并将reviews办事的一切请求路由到v2版本:
kubectl apply-f- lt;
对评级办事履行故障注入,注入2秒的提早:
kubectl apply-f- lt;
此时,当您利用我们之前设置的Istio Gateway门户拜候bookinfo利用https://bookinfo.example.com/productpage时,您会发现bookinfo利用运转一般(显现评级的星形标记),但每次革新页面时,会有2秒的提早他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
由于reviews:v2办事经过挪用ratings办事来获得评级信息,所以默许reviews办事在默许情况下不设备请求超时,所以它将期待ratings办事中注入的2秒提早,而且每次革新页面时城市有2秒提早他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
由于productpage办事中有硬编码的重试,即碰到毛病时会重试一次,我们将为挪用review办事设备0.5秒的超时:
kubectl apply-f- lt;
此时,假如再次革新/productpage页面,会有1秒的提早,页面中的图书评分信息会出现毛病他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。获得产物批评时出错!他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。这是由于这个请求的挪用链以下:productpage(出现请求超时毛病时重试)->: Reviews(请求超时设备为0.5秒)->: Ratings(提早2秒注入)他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。可以看出,经过设备reviews办事的请求超时,实现了在微办事治理中设备请求超时的功用,完全在办事网格中实现,不入侵微办事的营业逻辑他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。经过在办事治理中设备请求超时,可以避免大量请求长时候占用资本他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
融合是建立弹性微办事的重要形式他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。融合可以使利用法式应对故障、潜伏峰值和其他未知收集身分他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。熔断机制是一种应对雪崩效应的微观营业链路庇护机制他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。办事雪崩是指当呼唤链中的某个环节,特别是办事供给商不成用时,会致使上游环节不成用,终极将这类影响扩大到全部系统,致使全部系统不成用他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
以下将展现istio中交通治理的融合功用他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
首先在k8s的默许命名空间中摆设测试用的httpbin利用,由于之前在默许命名空间空中摆设bookinfo利用时已经开启了istio sidecar的自动注入功用,所以在这里间接摆设httpbin利用就充足了:
kubectl apply-f samples/http bin/http bin . YAML
httpbin.yaml的内容以下:
API version:v1kind:Service accountmetadata:name:http bin-API version:v1kind:Servicemetadata:name:http binlabels:app:http binService:http binspec:ports:-name:http
再一次,看看下图中istio中虚拟办事和方针法则之间的关系他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。熔丝的设置需要在方针法则上停止设置他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
接下来,建立一个在挪用httpbin时设备保险丝的方针法则:
kubectl apply-f- lt;
在httpbin的方针法则的trafficPolicy中界说了MaxConnections: 1和http1MaxPendingRequests: 1他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。这意味着,假如并发毗连和请求的数目跨越1,当在istio-proxy中停止进一步的请求和毗连时,后续的请求和毗连将被阻塞他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
接下来,在k8s的默许命名空间空中摆设httpbin的客户端法式fortio他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。Fortio专门用于负载测试他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。它可以控制毗连数、并发和发送HTTP请求的提早他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。由于默许命名室空在曩昔摆设bookinfo利用时已经开启了istio sidecar的自动注入功用,所以可以间接摆设在这里:
kubectl apply-f samples/http bin/sample-client/fortio-deploy . YAML
fortio-deploy.yaml的内容以下:
API version:v1kind:Servicemetadata:name:fortiolabels:app:fortioService:fortiospec:-port:8080name:httpselector:app:fortio-API version:apps/v1断路示例使命#给出了检查特使统计数据的示例他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。sidecar.istio.io/statsInclusionPrefixes: cluster . outbound,cluster_manager,listener_manager,http_mixer_filter,tcp_mixer_filter,server,cluster . xds-grpc标签:app:fortio标准:容器:-称号:fortioimage:fortio/fortio:latest _ releaseimagepull policy:alys端口:-container port:800
进入fortio的舱里测试一下他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。以下号令将从fortio向httpbin发送一个请求他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。假如返回200,成功的请求意味着fortio摆设完成,可以停止下一次熔丝测试:
FORTIO _ POD = $(ku ectl get POD | grep FORTIO | awk ' { print $ 1 } ')ku ectl exec-it $ FORTIO _ POD- c FORTIO/usr/bin/FORTIO-load-curl http://http bin:8000/get
鄙人面的fortio中,向httpbin发送一个2并发(-c 2)的毗连,请求20次(-n 20):
FORTIO _ POD = $(ku ectl get POD | grep FORTIO | awk ' { print $ 1 } ')ku ectl exec-it $ FORTIO _ POD- c FORTIO-/usr/bin/FORTIO load-C2-QPS 0-n 20-log level Warning http://http bin:8000/get......代码200:13(65.0%)代码503 : 7 (35.0 %)......
可以看出,35%的请求被fuses阻挡,并返回503办事不成用他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。HTTP503办事不成用暗示办事不成用,凡是是由于办事器停机保护或过载他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。返回此状态代码也是合适的他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
接下来,将并发毗连数增加到3,请求20次:
FORTIO _ POD = $(ku bectl get POD | grep FORTIO | awk ' { print $ 1 } ')ku bectl exec-it $ FORTIO _ POD- c FORTIO-/usr/bin/FORTIO load-C3-QPS 0-n 20-log level Warning http://http bin:8000/getCode 200:2(10.0%)Code 503:18(90.0%)
可以看出,只要10%的请求成功,90%的请求被熔丝阻挡他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
见https://istio . io/latest/zh/docs/tasks/traffic-management/request-times/
  • https://istio . io/latest/docs/tasks/traffic-management/circuit-breaking/
  • https://istio . io/latest/zh/docs/tasks/traffic-management/circuit-breaking/
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|小白网-奉贤部落-奉贤免费信息发布平台  

    GMT+8, 2025-11-11 17:22 , Processed in 0.161374 second(s), 21 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表