Istio virtual service 入口流量管理 超时和重试/影子流量

在使用xshell去远程连接服务器的时候没有反应,这样可能等了几分钟,这样按下crtlc终止就行了。

有些时候微服务是多个服务组成的,a服务会去调用b服务,可能因为网络问题或者连接问题,没有连接成功,那么会尝试不断的连接,这样可能消耗很长时间,对用户的体验感会很差。

所以a服务去连接b服务的时候,一次没有连接成功的时候,就可以设置一个连接超时时间,比如正常情况下1s就可以连接成功,10s还没有连接成功,那么就是不正常的。

所以可以设置过期时间,凡是超过3s钟的,我就认为是不正常的,那么就要去断开这个连接。

 

 

超时


 为了模拟微服务,这里pod1是去连接pod2的。pod1其实就是一个haproxy。 这样nginx就不对外提供服务了,就单纯是一个代理服务器了。(上面模拟的是pod1访问po2时间过久

这里要为pod1服务去建立一个vs myvs1,这样客户端才能够访问到svc1,也就是访问到pod1。

之后需要为svc2去建立vs,这样是导向往pod2走的时候控制svc2的流量的。

现在要去模拟pod2访问很慢,这里就可以在svc2这块使用延迟故障注入。因为这里使用了hosts -svc2这里就很容易去控制去往svc2流量。上面就是访问svc2的时候都需要延期2s钟,这样就模拟了pod1去访问pod2的时候需要等待2s。(这里是不需要使用gw的,因为pod2是不需要暴露给外部访问的)

现在要模拟故障,如果这边访问pod2很慢,也就是让pod1访问po2的时候觉得访问速度慢。这就需要延迟故障注入,上面创建了myvs2,这就很容易去控制去往svc2流量。

访问超过2s就不正常,这里就可以在vs1里设置其超时时间。(注意timeout和route是对齐的)

设置pod1的超时时间,那么应该控制的是myvs1的流量。

超时之后是不是就可以不访问了呢?超时的意义就是不让你一直在这边等着连接,超时之后就要去做重试,超时之后就可以去做重试。(也就是服务器出现问题的时候需要重试)

连接失败重试的次数为3,什么条件重试呢?返回5xx的时候重试。

这里myvs2去做了中断注入。只有返回值为5xx的时候才会去做重试。模拟了中断故障,返回给客户端代码503,然后就可以去做重试。

这里的值只能为5xx,写其他的会报错。

重试可以查看pod1的日志,会有很多curl日志,在第一次curl失败之后,后续会接着有三条curl日志。

上面配置是超时时间为1s(访问以及重试的时间不能超过1s),重试次数为3次,单次每次重试最多消耗的时间为10s。所有重试时间的总和不能超过timeout的1s.

找一个和生产环境配置相同的机器,客户端在访问的时候将流量同时往另外一个机器发一份过去。  克隆一份流量用来分析,并不影响正常的服务的使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值