13 Istio 流量管理原理与协议扩展 赵化冰
MCP Adapter https://github.com/istio-ecosystem/consul-mcp 欢迎大家试用、共建! 4 Istio 流量管理 – 控制面 – 流量管理模型 Gateway Virtual Service Destination Rule 外部请求 内部客户端 Service2 Service1 网格内部 定义网格入口 • 服务端口 • Host • TLS 对外请求 对外请求(Passthrough/ServiceEntry) 缺省路由 (服务名) 5 Istio 流量管理 – 数据面 – Envoy配置模型和xDS协议 ADS Server LDS RDS CDS EDS Envoy 配置模型的主要概念: • Downstream:连接到 Envoy 的下游 Host,发送请求并接收响应。 • Upstream: 上游 Host 接收来自 Envoy 127.0.0.1:9080。 13.请求被转发到 127.0.0.1:9080,即 reviews 服务进行业务处理。 10 Istio 协议支持现状 • 七层服务治理 – 服务发现(基于服务的逻辑名称) – LB、基于应用协议的错误码进行 Retries 和 Circuit Breaker – 基于七层协议 Meta data 的路由(RPC协议中的调用 服务名、方法名等) – Fault Injection(RPC0 码力 | 20 页 | 11.31 MB | 5 月前3Istio 在 Free Wheel 微服务中的实践
。其业务端产 品需要对接客户,提供视频广告投放优化界面,类似于 Web ERP,是一个典型 的三层架构。 微服务之痛 • 两年来,我们将若干复杂的Rails单体应用拆分、迁移到微服务架构, 逻辑用Golang重写,引入了Kubernetes。随着模块越来越多,复杂 的通信带来矛盾日渐突出:流量管理、监控… 最初的尝试:Gateway • 如右图,最初我们尝试用一个自研的 简单Gateway来提供统一的认证、授 扩展Sidecar:加入认证支持,提供了对业务系统的认证支持,将用 户相关信息以header的形式传入mesh,后续的授权、监控、限流 都可以用Istio原生的机制来完成 • 扩展Mixer:选择一部分流量来应用对应的授权逻辑 FreeWheel的Istio实践 • 右图为接入FreeWheel自定义认证和 授权模块的原理图 扩展Sidecar接入认证 • 修改 istio-system/istio-sidecar- • Report: 上报数据 • Check: 决策是否允许当前访问 • Quota: 决策容量是否足够 Mixer or Sidecar,这是一个问题 • Mixer提供了一种非常灵活的模型,让Handler可以在流量中动态的选 择一部分来引入额外的机制(如权限控制、限流等),在应用运维中 这是很重要的能力,只要是不修改请求、响应的功能都可以采用扩展 Mixer来实现 • Side0 码力 | 31 页 | 4.21 MB | 1 年前3探讨和实践基于Istio的微服务治理事件监控
什么是用户想要的监控?分布式监控的三个维度 Metrics Logging Tracing 指标监控 • 指标可被聚合 • 体现系统性能趋势 分布式追踪 • 和请求相关 • HTTP • SQL 日志系统 • 代码逻辑处理事件 • 异常、debug信息容器化和微服务下的监控需求 微观下的监控需求 快速错误追踪 可快速排查在性能测试场景下的 慢方法、异常调用以及异常报文 等信息 单次链路追踪 可细粒度排查应用单次链路调用 r的介绍 • Check:也叫precondition,前置条件检查, 比如说黑白名单,权限。 • Quota:访问次数 • Report: 日志。Mixer的二次开发流程Mixer插件工作模型 上述的过程中,Envoy所做的数据收集、上传是自动完成的,而Mixer生成模版实例则 可以通过配置来完成。因此,所谓的Mixer插件实际上就是Adapter,开发Mixer插件 也就是开发Adapter。两种开发模式 Adapter作为grpc服务端,运行在独立的pod当中, Mixer通过通过rpc调用,将属性与日志发送给Adapter。基于Mixer的二次开发的流程 • 编写grpc服务端程序,接收来自mixer的数据,并实现自身业务逻辑 • 编写handler、instance、rule配置文件 • 编译打包adapter,上传至docker仓库 • 编写k8s的deployment和service配置文件 • 部署应用基于Mixer的二次开发Hanlder0 码力 | 29 页 | 8.37 MB | 5 月前3全栈服务网格 - Aeraki 助你在 Istio 服务网格中管理任何七层流量
修改内嵌路由后,Envoy 会重建 listener,导致业务出现短 暂中断。 #IstioCon MetaProtocol:Service Mesh 通用七层协议框架 大部分七层协议的路由、熔断、负载均衡等能力的实现逻辑是类似的, 没有必要每个协议都全部从头实现,重复造轮子。 ● MetaProtocol 框架在 Service Mesh 提供七层协议的通用能力: ○ 数据面:MetaProtocol Proxy Proxy 中实现七层协议的通用逻辑:路由、Header Mutation、负载均衡、断路器、多路复用、流量镜像 等。 ● 基于 MetaProtocol 实现一个自定义协议时,只需要实现 Decode 和 Encode 扩展点的少量代码 (C++)。 ● 提供基于 WASM 和 Lua 的 L7 filter 扩展点,用户可以实现一些灵活的自定义协议处理逻辑,例如认证授权等。 #IstioCon 结构封包 6. 将请求发送给 Upstream L7 filter 共享数据结构: ● Metadata: decode 时填充的 key:value 键值对,用于 l7 filter 的处理逻辑中 ● Mutation:L7 filter 填充的 key:value 键值对,用于 encode 时修改请求数据包 #IstioCon MetaProtocol: 响应处理路径 处理流程:0 码力 | 29 页 | 2.11 MB | 1 年前3Envoy原理介绍及线上问题踩坑
rights reserved. Page 3 目录 1. Envoy启动及配置文件 2. Envoy流量拦截原理、常用部署方式 3. Envoy可扩展过滤器架构、可观测性 4. Envoy线程模型 5. 生产环境问题分析及解决方法 6. 针对Envoy做的一些优化及效果 7. 常用性能分析测试工具及使用方法 8. 华为ASM产品介绍 Copyright © Huawei Technologies 网格外调用 :80 LB Copyright © Huawei Technologies Co., Ltd. All rights reserved. Page 11 Envoy网络及线程模型 主线程 初始化 日 志 线 程 读 取 配 置 x D S 监 听 网络事件 启 动 工 作 线 程 定时器事件 a d m i n 请 求 X D S 更 新 合 并 s t 检 查 看 门 狗 线 程 Copyright © Huawei Technologies Co., Ltd. All rights reserved. Page 12 Envoy网络及线程模型-共享数据同步 • 1. 调度器通过epoll监控文件事件(网络)及定时器事件进行排队任务处理 • 2. 线程间通信通过post接口发送任务,此任务通过定时器事件激活 • 3. 线程间数据交换0 码力 | 30 页 | 2.67 MB | 1 年前3Istio + MOSN 在 Dubbo 场景下的探索之路
• 监控告警 • 注册和发现 • 容错和限流 特点 • 独立部署 • 强化模块边界 • 技术多样性5/23 Service Mesh 优点 • 统一的服务治理 • 服务治理和业务逻辑解藕 缺点 • 增加运维复杂度 • 延时 • 需要更多技术栈6/23 探索 Istio 技术点 /02 了解 Istio 技术点7/23 MCP MCP(Mesh Configuration0 码力 | 25 页 | 3.71 MB | 5 月前3SolarMesh 基于Istio构建的流量监管平台
Copyright © 2021 Cloud To Go Envoy 支持用于网络管道和 HTTP 管道(HTTP 过滤器)的 Wasm 过滤器。这意味着您可以使用 Wasm 为Sidecar编写逻辑。 Copyright © 2021 Cloud To Go 虚拟机支持 ü 让虚拟机成为集群的一部分 ü 流量视图 ”看到” 虚拟机应用 ü 让虚拟机和集群享受同样的服务治理 ü 让虚拟机和集群具备相互容灾的能力0 码力 | 20 页 | 1.29 MB | 1 年前3Extending service mesh capabilities using a streamlined way based on WASM and ORAS
○ https://github.com/pr oxy-wasm/spec ● 内置的Wasm runtime ○ ~20MB for WAVM ○ ~10MB for V8 ● 事件驱动模型 ● 兼容native filter调用 方式 8 Example Wasm filter configuration ● 下发到Envoy Proxy侧的配置 9 OCI Registry0 码力 | 23 页 | 2.67 MB | 1 年前3
共 8 条
- 1