Service Mesh 实战
马若飞
FreeWheel 北京研发中心首席工程师、《Istio 实战指南》作者
11858 人已学习
新⼈⾸单¥59
课程目录
已完结/共 41 讲
Service Mesh 实战
登录|注册
留言
9
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 19 | 超时重试:提升系统的健壮性和可用性
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | 内容综述
03 | Service Mesh的起源:为什么会出现Service Mesh技术?
04 | Service Mesh的发展:Service Mesh技术是如何演进的?
05 | 微服务通信的济世良方:什么是Service Mesh?它能帮你做什么?
06 | 列王的纷争:市面上有哪些主流的Service Mesh产品?
07 | 王者的诞生:为什么Istio有如此高的呼声?
08 | Istio的自我救赎:为什么Istio发生了两次重大的架构变更?
09 | 核心功能之流量控制:Istio是如何实现流量控制功能的?
10 | 服务的可观察性:如何理解服务可视化的重要性?
11 | 保卫你的网格:Istio是如何设计安全架构的?
12 | 安装与部署:如何安装Istio?它都支持哪些环境和部署方式?
13 | 动态路由:用Virtual Service和Destination Rule设置路由规则
14 | 网关:用Gateway管理进入网格的流量
15 | 服务入口:用Service Entry扩展你的网格服务
16 | 流量转移:灰度发布是如何实现的?
17 | Ingress:控制进入网格的请求
18 | Egress:用Egress实现访问外部服务
19 | 超时重试:提升系统的健壮性和可用性
20 | 熔断:“秒杀”场景下的过载保护是如何实现的?
21 | 故障注入:在Istio中实现一个“Chaos Monkey”
22 | 流量镜像:解决线上问题排查的难题
23 | 洞察你的服务:使用Kiali观测你的微服务应用
24 | 指标:使用Prometheus收集指标
25 | 监控:使用Grafana查看系统的整体状态
26 | 日志:如何获取Envoy的日志并进行调试
27 | 分布式追踪:使用Jeager对应用进行分布式追踪
28 | 守卫网格:配置TLS安全网关
29 | 双重保障:为应用设置不同级别的双向TLS
30 | 授权策略:如何实现JWT身份认证与授权?
31 | 实战演练(一):项目准备和构建过程
32 | 实战演练(二):实现自动化灰度发布
33 | 实战演练(三):提升系统的弹性能力
34 | 实战演练(四):配置安全策略
35 | 实战演练(五):收集指标并监控应用
36 | 实战演练(六):集成 ELK Stack 日志套件
37 | 实战演练(七):集成分布式追踪工具
38 | 调试工具和方法:调试网格的工具和方法有哪些?
39 | 实践经验总结:实际落地中的常见问题有哪些?
40 | 未来架构——从Service Mesh迈向云原生
41 | 结果测试&结束语
登录 后留言

全部留言(9)

  • 最新
  • 精选
lpf32
超时是访问这个服务的超时,还是这个访问别的服务超时;重试是访问这个服务的重试,还是这个服务访问其他服务的重试;这些机制都没讲。。。

作者回复: A 访问 B,在B的virtualservice里设置的超时重试,都是针对B的。也就是访问B的时候如果B有故障,发送到B的请求会超时或者重试(如果配置了的话)

2020-05-15
3
4
李永山
老师,我遇到问题了,但是并不知道从哪儿开始排查,还请老师指点。当我试图将productpage指向reviews v2版本的时候我执行了如下:cat vs.yaml apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: reviews spec: hosts: - reviews http: - route: - destination: host: reviews subset: v2 但是当我执行完使用浏览器访问productpage的时候reviews报错了,如下: Error fetching product reviews! Sorry, product reviews are currently unavailable for this book.

作者回复: 查一下ratings服务是不是注入了延迟故障,导致reviews失败

2021-05-26
2
Geek_02ab73
老师,您好, 我想达到的效果是访问api.httpbin.com 会转发到 ext.api.httpbin.com,但是我如果destination port number 改成 443 就会出现503 UC 问题,以下是我的配置, 可以麻烦帮忙看看吗? --- apiVersion: networking.istio.io/v1alpha3 kind: ServiceEntry metadata: name: api-httpbin-external spec: hosts: - ext.api.httpbin.com location: MESH_EXTERNAL ports: - name: https number: 443 protocol: HTTPS resolution: DNS --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: httpbin-api-ingress spec: hosts: - api.httpbin.com gateways: - api-gateway http: - match: - gateways: - httpbin-api-gateway uri: prefix: "/" rewrite: uri: / authority: ext.api.httpbin.com # this is pretty important route: - destination: host: ext.api.httpbin.com port: number: 443 #如果是80端口是可以的,转成443 就出现503 UC error

作者回复: 查一下destinationrule的tls设置的值是不是simple。你这个需求我理解就是把一个内部http请求转到外界的https请求,不太确定rewrite方式可行。match下面到rewrite其实都可以删掉。另外也可以在vs中设置tls去route,而不是http route转发。 可以参考下这个例子: https://istio.io/latest/docs/tasks/traffic-management/egress/egress-tls-origination/

2020-08-10
小松松
我是带着问题来买课的,哈哈 我们在上istio后发现一个问题 node的项目调用后端的api 在上istio后出现connreset的次数明显增大 而不使用istio出现的概率会减小很多 虽然使用重连会解决这个问题 但极端情况也会造成雪崩效应,老师有遇到过吗 ? 请指导一下!

作者回复: 什么版本?http协议还是grpc?这个可能要具体问题具体分析了。集群网络环境,协议,项目的通讯层的配置,trafficpolicy等配置都有关系。

2020-07-24
煎蛋
我做了一些实验,我发现这个bookinfo是不是默认2s,我设置delay为2s的时候,基本都可以正常访问,但是3s以上的时候,就访问不到服务了,重试次数的日志也是基本这样2次可以看到输出,3次以上都是显示的2次输出

作者回复: 几个服务都有默认硬编码的超时时间,可以看看源码。有时候会影响到你的设置,不用特纠结。

2020-05-05
王哲
做了一下实验,发现即使没有设置retry策略的时候,实际上也是可以收到两条access log。查阅了相关的资料,发现重试2次是Istio的默认策略,并不是我们设置的重试机制。 另外,对于retries中的attempts的配置,表示的应该是重试的次数。也就是说,如果attempts=2,那么实际上应该一共收到的是3次请求(1次原始请求+2次重试请求)。
2021-11-14
1
4
木几丶
在网络不太好的时候适合用指数退避策略,tcp三次握手中的syn包就是指数退避的重试策略
2022-08-23
1
Demon.Lee
老师可遇到过超时机制可以,但重试机制不行的情况。 环境信息: ➜ ~ hostnamectl Virtualization: vmware Operating System: Ubuntu 22.04.1 LTS Kernel: Linux 5.15.0-60-generic Architecture: arm64 Hardware Vendor: VMware, Inc. Hardware Model: VMware20,1 ➜ ~ ➜ ~ k version --short Client Version: v1.25.3 Kustomize Version: v4.5.7 Server Version: v1.25.3 ➜ ~ ➜ ~ istioctl version client version: 1.16.2 control plane version: 1.16.2 data plane version: 1.16.2 (11 proxies) ➜ ~ 我写了一个服务,接口延迟 5 秒返回,我先在 vs 配置 3s 的超时,验证没有问题; 但我把超时去掉,换成重试3次,重试的超时时长为 1s 后,接口直接在 1s 后就报 504 超时了,并没有发起 3 次重试,查了好久,也没找到原因,特来问问,感谢。 以下是配置: apiVersion: apps/v1 kind: Deployment 省略部分内容 --- apiVersion: v1 kind: Service metadata: labels: app: student name: student namespace: istio-dev spec: ports: - port: 8080 name: http protocol: TCP targetPort: 8080 selector: app: student type: ClusterIP --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: student namespace: istio-dev spec: hosts: - student http: - route: - destination: host: student #retries: # attempts: 3 # perTryTimeout: 1s timeout: 3s 以下是两次调用的结果: 1)超时: # curl -i -w "@curl-format.txt" http://student:8080/istio/timeout HTTP/1.1 504 Gateway Timeout content-length: 24 content-type: text/plain date: Sun, 12 Feb 2023 15:27:31 GMT server: envoy upstream request timeout ------------------------------------ time_total: 3.019577s # 2)重试: # curl -i -w "@curl-format.txt" http://student:8080/istio/timeout HTTP/1.1 504 Gateway Timeout content-length: 24 content-type: text/plain date: Sun, 12 Feb 2023 15:23:16 GMT server: envoy upstream request timeout ------------------------------------ time_total: 1.008266s #
2023-02-12
1
斯蒂芬.赵
重试次数也不能过多。倍数的请求对上游的请求也是一种压力。 指数级退避第一次听说
2020-05-31
收起评论