13 Istio 流量管理原理与协议扩展 赵化冰
Thrift、Redis以及私有协议,目前已支持: • Dubbo 缺省路由 • Dubbo version-based routing • Dubbo traffic splitting • 后续规划: • 其他协议支持:Thrift,Redis ,TARS … • 在 TCM 中提供托管的 Aeraki,为客户提供第三方协议支 持 16 Aeraki 项目后续计划 Dubbo [Done]0 码力 | 20 页 | 11.31 MB | 5 月前3Extending service mesh capabilities using a streamlined way based on WASM and ORAS
Listener Downstre am Filter Filter Filter Cluster Upstrea m Filter Chain 扩展自定义Filter, 并通过xDS API动态配置 L4 Network Filters L7 Http Filters 3 Listener & Filters before outbound services Listener Downst 的过滤器也必须用C++实现。 ○ 动态运行时加载: ■ 在运行时将新的过滤器动态加载到Envoy代理中。 ■ 简化了扩展Envoy的过程, 这种解决方案通常使用WebAssembly(WASM)的新技术, 它是一种有效的可移植二进制指令格式,提供了可嵌入和隔离的执行环境。 6 使用Wasm for Proxy ● Pros ○ 敏捷性:过滤器可以动态加载到正在运行的Envoy进程中,而无需停止或重新编译。 由于需要启动一个或多个WASM虚拟机,因此会消耗一定的内存使用量; ○ The WebAssembly ecosystem is still young; 7 Wasm in Envoy Proxy ● Wasm动态加载 ● 一致性校验: ○ https://github.com/pr oxy-wasm/spec ● 内置的Wasm runtime ○ ~20MB for WAVM ○ ~10MB for0 码力 | 23 页 | 2.67 MB | 1 年前3百度APP基于Istio实现基础架构升级 - lightning talk - MichaelXu
部分模块上下游超时配置不合理,超时倒挂,集中管理调整成本比较高。 Ø 多数模块对单点异常,慢节点等异常缺乏容忍能力,推动每个模块独立修复,成本高,上线周期长。 Ø 因重试导致雪崩,底层RPC框架需要重复建设来定制动态熔断能力。 Ø 升级一级服务建设中,发现很多模块单点、多点故障不能容忍,能否低成本解决? Ø 比如常用运维降级、止损能力各个产品线重复建设,方案差异大,OP期望运维能力在不同产品线之间能够通用化, 主要介绍如下几个方面: l 稳定性方面 (单点,多点,防雪崩,长尾优化,架构故障韧性能力) l 治理效率方面 (提升一级模块建成效率,二级模块预案能力) l 周边生态方面 (流量复制,稳定性工程,动态调参, 服务可观测性) l 覆盖率方面 (百度APP100%核心模块,流量占比>79.5% ) #IstioCon 收益介绍 – 防雪崩&长尾 长尾优化: LocalityAware负载均衡策略 业务价值 降低业务因Redis回退引发的雪崩问题。(业务层RPC 框架Retry策略托管到Mesh,通过平响分位值动态抑 制BP请求) Mesh价值 1. 业务无需代码改动即可开启,在线调整backup超时 分位值、熔断阈值。 2. 支持动态调整配置参数,对接智能调参系统。 防雪崩能力:动态BackupRequest #IstioCon 未来 l 强化稳定性工程。(Case覆盖、故障自动恢复)0 码力 | 9 页 | 2.20 MB | 1 年前3Envoy原理介绍及线上问题踩坑
rights reserved. Page 5 Envoy介绍 • Envoy采用C++实现,本身为四层及七层代理,可以根据用户应用请求内的数据进行高级服务治理 能力,包括服务发现、路由、高级负载均衡、动态配置、链路安全及证书更新、目标健康检查、 完整的可观测性等。 • 目前常见数据面主要有三种:Envoy、Linkerd、Traefic。Envoy由于高性能和扩展能力前在数据面遥 遥领先。 • 定期将工作线程内监控数据stat进行合并 • 定期刷新DNS信息,加速域名解析。 • 目标cluster内主机列表健康状态判断。 • worker线程: • 通过启动配置参数concurrency指定,不支持动态调整。 • 启动virtualoutbound/virtualinbound网络监听,每个工作线程都对此监听端口进行监听。 由内核随机挑选监听线程处理新连接。 • 进行连接负载均衡处理后,选择最终的业务监听器处理新连接。 encodeTrailers消息发送前编码处理 • 过滤器中可以获取连接对象并直接发送响应数据,同时可以返回StopIteration结束过滤器迭代。 • 实际使用过滤器根据Envoy静态及动态配置注册,并可以在运行中通过EnvoyFilter动态添加或删除。 Copyright © Huawei Technologies Co., Ltd. All rights reserved. Page 16 Envoy过滤器架构-常用过滤器0 码力 | 30 页 | 2.67 MB | 1 年前3Istio 在 Free Wheel 微服务中的实践
FreeWheel的Istio实践 • 未来工作 • FreeWheel的痛点 Istio架构 • Istio Proxy: 劫持Pod的所有通信, 是Mesh的基础 • Pilot: 为Proxy提供动态配置管理 • Citadel: 自动维护mTLS密钥 • Mixer: 在k8s中部署了两组Mixer • Policy提供授权、Quota等能力 • Telemetry提供监控数据收集能力 基本原理 • Istio从架构上可以分为4个板块: • Istio Proxy: Mesh的基础 • 网络安全:兼容Spiffe标准实现 • 配置管理:为C++实现的Proxy接 入k8s的动态配置管理 • Attribute Machine: 授权,Quota ,Tracing,监控的基础 Istio管理下的微服务 • 右图是部署mock1.v1 Pod之后发生的事 情: • istio-certs volume • Citadel: 自动刷新secrets, k8s自动加 载istio-secrets volume • Pilot: 和Sidecar建立连接,管理动态配 置 • Mixer: 和Sidecar建立连接,管理授权 、Quota和审计数据 • Istio的架构和基本原理 • FreeWheel的Istio实践 • 未来工作 • FreeWheel的痛点0 码力 | 31 页 | 4.21 MB | 1 年前3Kubernetes容器应用基于Istio的灰度发布实践
Node 1 svc1 自身业务 SDK Sidecar 服务治理 Node 2 svc 2 自身业务 SDK Sidecar 服务治理 通信基础 服务发现 负载均衡 熔断容错 动态路由 … for (封装++) { 应用侵入--; 治理位置--; } 微服务角度看Istio: 服务网格 服务网格控制面 从基础设施(Kubernetes)看Istio: 服务访问 Node 基础设施(Kubernetes)看Istio: 能力增强 服务部署运 维 服务治理 • 调用链追踪 • 动态路由 • 熔断限流 • 负载均衡 • 服务发现 • 扩缩容 • 运维 • 部署 Kubernetes Istio Istio治理的不只是微服务,只要有访问的服务,都可以被治理。 Istio关键能力 流量管理 负载均衡 动态路由 灰度发布 可观察性 调用链 访问日志 监控 策略执行 限流 ACL endpoint等资源对象 3. DiscvoeryServer使用 ServcieDiscovery接口上的服务发 现方法和用户配置的规则构造xDS 4. Envoy从Discovery获取xDS,动态 更新 Kubernetes Service Instance Instance Service Endpoint Endpoint Istio Istio & Kubernetes:Mixer0 码力 | 38 页 | 14.93 MB | 1 年前3Kubernetes容器应用基于Istio的灰度发布实践
Node 1 svc1 自身业务 SDK Sidecar 服务治理 Node 2 svc 2 自身业务 SDK Sidecar 服务治理 通信基础 服务发现 负载均衡 熔断容错 动态路由 … for (封装++) { 应用侵入--; 治理位置--; }6 微服务角度看Istio: 服务网格 服务网格控制面7 从基础设施(Kubernetes)看Istio: 服务访问 基础设施(Kubernetes)看Istio: 能力增强 服务部署运 维 服务治理 • 调用链追踪 • 动态路由 • 熔断限流 • 负载均衡 • 服务发现 • 扩缩容 • 运维 • 部署 Kubernetes Istio9 Istio治理的不只是微服务,只要有访问的服务,都可以被治理。10 Istio关键能力 流量管理 负载均衡 动态路由 灰度发布 可观察性 调用链 访问日志 监控 策略执行 限流 ACL endpoint等资源对象 3. DiscvoeryServer使用 ServcieDiscovery接口上的服务发 现方法和用户配置的规则构造xDS 4. Envoy从Discovery获取xDS,动态 更新 Kubernet es Service Instance Instance Service Endpoint Endpoint Istio14 Istio & Kubernetes:Mixer0 码力 | 34 页 | 2.64 MB | 5 月前3Istio + MOSN 在 Dubbo 场景下的探索之路
记录变化的资源类型 • 根据变化的资源类型整理本地数据 • 根据变化的资源类型判断需要下发的 xDS资源 • 构建 xDS 资源,下发到连接的 Sidecar10/23 xDS Sidecar 通过动态获取服务信息,对服务的发现 API 被称为 xDS。 • 协议部分(ADS、控制发送的顺序以及返回的确认数据) • 数据部分(CDS、EDS、LDS、RDS、SDS)11/23 资源变化 资源名称0 码力 | 25 页 | 3.71 MB | 5 月前3
共 8 条
- 1