百度APP基于Istio实现基础架构升级 - lightning talk - MichaelXu#IstioCon 百度APP基于Istio实现 基础架构升级 许超 #IstioCon 背景 l 核心业务线已完成微服务改造,数万个微服务对架构服务治理能力提出了更高的要求。 l 高级架构能力能否多语言、多框架支持? l 运维架构能力是否具备可移植性?是否能低成本复制新的产品线? l 可观测性不足,是否有通用机制提升产品线可观测性? Ø 部分模块上下游超时配置不合理,超时倒挂,集中管理调整成本比较高。 百度APP架构缺少上下游模块视图和流量视图,黄金指标不足,导致容量管理压测效率低、混沌工程实施成 本高、故障定位成本高。 #IstioCon 目标 l 服务治理策略平台化 联合公司内部,通过合作共建方式实现完整的Service Mesh架构,提升架构策略灵活性,缩 减服务治理迭代周期,降低服务治理研发成本。 l 服务治理能力通用化 基于Service Mesh架构共建高级架构能力,为不同模块、不同产品线、甚至整个公司内提供 能力可移植性。 #IstioCon 技术方案 l 核心原则 Ø 务实、高稳定性、低迁移成本。 l 核心思路 Ø 先单跳,后双跳。 Ø 服务发现下沉到Envoy。 Ø 基于 RPC + 服务发现实现透明流量劫持。 Ø 自建配置中心,产品化封装。 l 关键技术 Ø 内核劫持,使用Loopback IP 与 服务发现一一对应。 Ø RPC劫持,构建可快速扩展标准方案。 Ø 自身稳定性,降级(兜底)、隔离、监控多种方式保证。0 码力 | 9 页 | 2.20 MB | 1 年前3
Envoy原理介绍及线上问题踩坑Technologies Co., Ltd. All rights reserved. Page 4 前言 • 微服务架构最早由Fred George在2012年的一次技术大会上所提出,他讲到如何通过拆分SOA服务实现服务之间的解耦, 这是微服务最早的雏形。 • 微服务架构通过细粒度的服务解耦拆分,带来缩短开发周期、独立部署、易扩展等好处的同时,同时带来对服务发现、负 载均衡、熔断等能力前所未有的诉求。 • 10版本。 Copyright © Huawei Technologies Co., Ltd. All rights reserved. Page 5 Envoy介绍 • Envoy采用C++实现,本身为四层及七层代理,可以根据用户应用请求内的数据进行高级服务治理 能力,包括服务发现、路由、高级负载均衡、动态配置、链路安全及证书更新、目标健康检查、 完整的可观测性等。 • 目前常见数据面 GID=1337创建Envoy启动命令行与配置文件 • 可以通过自定义deployment内istio注解sidecar.istio.io/inject: “false”跳过自动注入过程,或修改部分启动参数。 • 2. 控制面通信 • Pilot-agent进程本身创建UDS接收Envoy连接,用于证书更新下发。并且与istiod建立证书更新通道。 • Envoy 通过pilot-age0 码力 | 30 页 | 2.67 MB | 1 年前3
Istio 在 Free Wheel 微服务中的实践• Telemetry提供监控数据收集能力 基本原理 • Istio从架构上可以分为4个板块: • Istio Proxy: Mesh的基础 • 网络安全:兼容Spiffe标准实现 • 配置管理:为C++实现的Proxy接 入k8s的动态配置管理 • Attribute Machine: 授权,Quota ,Tracing,监控的基础 Istio管理下的微服务 • 右图是部署mock1 扩展Sidecar:加入认证支持,提供了对业务系统的认证支持,将用 户相关信息以header的形式传入mesh,后续的授权、监控、限流 都可以用Istio原生的机制来完成 • 扩展Mixer:选择一部分流量来应用对应的授权逻辑 FreeWheel的Istio实践 • 右图为接入FreeWheel自定义认证和 授权模块的原理图 扩展Sidecar接入认证 • 修改 istio-system/istio-sidecar- Mixer提供了一种非常灵活的模型,让Handler可以在流量中动态的选 择一部分来引入额外的机制(如权限控制、限流等),在应用运维中 这是很重要的能力,只要是不修改请求、响应的功能都可以采用扩展 Mixer来实现 • Sidecar里接入额外的反向代理其实提供了一个修改请求、响应的接口 ,如认证之后需要将用户信息通过header传给下游服务 扩展Mixer接入授权 • 这里实现的例子mymock会完全拒绝所有 被匹配到的流量,右图是mymock0 码力 | 31 页 | 4.21 MB | 1 年前3
全栈服务网格 - Aeraki 助你在
Istio 服务网格中管理任何七层流量Demo: Dubbo 协议支持 ● Dubbo2Istio 连接 Dubbo 服务注册表,支持: ○ ZooKeeper ○ Nacos ○ Etcd ● Aeraki Dubbo Plugin 实现了控制面的管理,支持 下述能力: ○ 流量管理: ■ 七层(请求级别)负载均衡 ■ 地域感知负载均衡 ■ 熔断 ■ 基于版本的路由 ■ 基于 Method 的路由 ■ 基于 Header 地域感知负载均衡(Dubbo) 场景:在开通地域感知负载均衡功能时,consumer 的请求将缺省被发送到本区域 的provider实例,当本地域无可用的provider实例,请求会被分发到其他区域。 实现原理:控制面根据 consumer 和 provider 的地域属性为provider实例配置 不同的LB优先级,优先级的判断顺序如下: 1. 最高:相同 region,相同zone 2. 其次:相同 通用七层协议框架 大部分七层协议的路由、熔断、负载均衡等能力的实现逻辑是类似的, 没有必要每个协议都全部从头实现,重复造轮子。 ● MetaProtocol 框架在 Service Mesh 提供七层协议的通用能力: ○ 数据面:MetaProtocol Proxy 实现 RDS、负载均衡、熔 断等公共的基础能力 ○ 控制面:Aeraki + Istio 提供控制面管理,实现按请求 header0 码力 | 29 页 | 2.11 MB | 1 年前3
SolarMesh 基于Istio构建的流量监管平台使用模拟的测试数据测试 1. 打好部署包即可部署 2. 用真实的数据测试 3. 挑个良辰吉日分配流量,宣布更新 Copyright © 2021 Cloud To Go 应用场景 - 异地容灾 通过智能路由实现异地容灾 在SolarMesh中,只需要声明哪些 集群是属于同一个mesh,借助istio 的智能路由能力,同名service将会 获得多集群容灾的能力 流量将会按照策略智能分配到正常 的工作负载上 管道(HTTP 过滤器)的 Wasm 过滤器。这意味着您可以使用 Wasm 为Sidecar编写逻辑。 Copyright © 2021 Cloud To Go 虚拟机支持 ü 让虚拟机成为集群的一部分 ü 流量视图 ”看到” 虚拟机应用 ü 让虚拟机和集群享受同样的服务治理 ü 让虚拟机和集群具备相互容灾的能力 ü 快速,零成本接入 SolarMesh对虚拟机的支持 Copyright0 码力 | 20 页 | 1.29 MB | 1 年前3
IstioMeetupChina 服务网格热升级技术分享IstioMeetup 服务网格数据平面热升级技术分享 ServiceMesh Data-Plane Hot-Upgrade 阿里云服务网格团队 – 史泽寰 • 为什么需要服务网格数据面热升级 • 实现热升级 • 实践热升级 目录 Catalog 2 为什么需要服务网格数据面热升级 Why do we need Hot-Upgrade for ServiceMesh Data-Plane • 只替换/重启Sidecar • 替换/重启过程中进/出不会出现请求失败,连接失败 • 易于运维,可以控制升级策略 理想的Sidecar升级 4 • 为什么需要服务网格数据面热升级 • 实现热升级 • 实践热升级 目录 Catalog 5 • Envoy热重启 • 以Epoch + 1的方式启动新实例,触发热重启 • ListenSocket转移到新实例 • 旧实例进行排水,不再接受新的请求 envoyproxy.io/envoy-hot-restart-1d16b14555b5 实现热升级 Implement Hot-Upgrade 6 • Sidecar生命周期管理能力 • 启动两个Sidecar,以进行Envoy热重启的排水流程两个实例并存的阶段 • 能够对整个热升级流程中的镜像替换进行控制 实现热升级 Implement Hot-Upgrade 7 • Sidecar生命周期管理能力0 码力 | 14 页 | 2.25 MB | 1 年前3
Istio + MOSN 在 Dubbo 场景下的探索之路xDS资源 • 构建 xDS 资源,下发到连接的 Sidecar10/23 xDS Sidecar 通过动态获取服务信息,对服务的发现 API 被称为 xDS。 • 协议部分(ADS、控制发送的顺序以及返回的确认数据) • 数据部分(CDS、EDS、LDS、RDS、SDS)11/23 资源变化 资源名称 CDS EDS LDS RDS Virtualservices ✔ Gateways0 码力 | 25 页 | 3.71 MB | 6 月前3
Extending service mesh capabilities using a streamlined way based on WASM and ORAS将其他过滤器集成到Envoy的源代码中,并编译新的Envoy版本。 ■ 这种方法的缺点是您需要维护Envoy版本,并不断使其与官方发行版保持同步。 ■ 此外,由于Envoy是用C++实现的,因此新开发的过滤器也必须用C++实现。 ○ 动态运行时加载: ■ 在运行时将新的过滤器动态加载到Envoy代理中。 ■ 简化了扩展Envoy的过程, 这种解决方案通常使用WebAssembly(WASM)的新技术, oy进程中,而无需停止或重新编译。 ○ 可维护性:不必更改Envoy自身基础代码库即可扩展其功能。 ○ 多样性:可以将流行的编程语言(例如C/C++和Rust)编译为WASM,因此开发人员可 以选择实现过滤器的编程语言。 ○ 可靠性和隔离性:过滤器会被部署到VM沙箱中,因此与Envoy进程本身是隔离的;即使 当WASM Filter出现问题导致崩溃时,它也不会影响Envoy进程。 ○ 安全性:过滤 Example Wasm filter configuration ● 下发到Envoy Proxy侧的配置 9 OCI Registry As Storage ● OCI Artifacts项目的参考实现, 可显著简化OCI注册库中任意内容的存储; ● 可以使用ORAS API/SDK Library来构建自定义工具, ○ 将WebAssembly模块推入到OCI注册库中; ○ 或者从OCI注册库中拉取WebAssembly模块;0 码力 | 23 页 | 2.67 MB | 1 年前3
13 Istio 流量管理原理与协议扩展 赵化冰Service Mesh Service Mesh Layer 处理服务间通信(主要是七层通信)的云原生基础设施层: Service Mesh 将各个服务中原来使用 SDK 实现的七层通信相关功能抽象 出来,使用一个专用层次来实现,Service Mesh 对应用透明,因此应用 可以无需关注分布式架构带来的通信相关问题,而专注于其业务价值。 流量控制:服务发现、请求路由、负载均衡、灰度发布、错误重试、 user:others) Envoy AwesomRPC (header: user: ***) Pilot 代码改动 • 解析 CRD • 生成 xDS 配置下发 优点: • 控制面改动小,可以快速实现对新协议的支持 问题: • Pilot 目前缺少一个良好的协议扩展机制 • Pilot 需要理解 Envoy filter 中协议特定的知识 • Pilot 代码中维护众多七层协议的代价较大 12 EnvoyFilter 15 Istio 协议扩展:控制面扩展机制 优点: • 对 Istio 和 Envoy 无侵入 • 扩展性强,基本可以支持任何七层协议 问题: • 工作量较大,相当于实现了一个独立的 xDS 服务器 Aeraki: 为Istio提供七层协议扩展的开源项目,可以支持 Dubbo、 Thrift、Redis以及私有协议,目前已支持: • Dubbo 缺省路由 • Dubbo0 码力 | 20 页 | 11.31 MB | 6 月前3
探讨和实践基于Istio的微服务治理事件监控监控方案问题二:现有的系统能否完全满足需求 现有系统如何满足运维需求Istio现有的监控体系 指标监控 分布式追踪 日志系统Zipkin的架构图 Google Dapper Zipkin的实现EFK和Prometheus的架构图 DC1 DMZ Intranet Elascticsearch cluster APP logfile APP logfile APP logfile Response JVM 6 10 7 Class Loader Engine Agent A’.class JavaAgent 监控数据暂 存区 运行时数据区如何基于Istio的现有组件去实现 Kubernetes Cluster MIxer 全链路关联 平台 Cloud Native App POD Agent logfile Proxy Transaction ID Adapter作为grpc服务端,运行在独立的pod当中, Mixer通过通过rpc调用,将属性与日志发送给Adapter。基于Mixer的二次开发的流程 • 编写grpc服务端程序,接收来自mixer的数据,并实现自身业务逻辑 • 编写handler、instance、rule配置文件 • 编译打包adapter,上传至docker仓库 • 编写k8s的deployment和service配置文件 •0 码力 | 29 页 | 8.37 MB | 6 月前3
共 14 条
- 1
- 2













