 Envoy原理介绍及线上问题踩坑Envoy流量拦截原理、常用部署方式 3. Envoy可扩展过滤器架构、可观测性 4. Envoy线程模型 5. 生产环境问题分析及解决方法 6. 针对Envoy做的一些优化及效果 7. 常用性能分析测试工具及使用方法 8. 华为ASM产品介绍 Copyright © Huawei Technologies Co., Ltd. All rights reserved. Page 4 前言 • 微服务架构最早由Fred 改过的创建请求被 kubelet接收,并在节点创建POD。 • istio-init容器添加用于配置容器网络内iptables规则 • istio-proxy容器启动pilot-agent进程,使用UID=1337 GID=1337创建Envoy启动命令行与配置文件 • 可以通过自定义deployment内istio注解sidecar.istio.io/inject: “false”跳过自动注入过程,或修改部分启动参数。 每个线程的TLS对象本身只保存真实对象的共享指针进行读操作,减少内存消耗。 • 5. 全局对象更新只发生在主线程,并通过COW方式通知工作线程进行指针修改 • 每个TLS slot通过allocateSlot分配,在使用前通过set在每个线程中创建一个拷贝并保存。 • 在主线程中调用此slot的runOnAllThreads在所有线程中延迟执行回调,回调内更新每个线程内拷贝对象状态 Copyright © Huawei0 码力 | 30 页 | 2.67 MB | 1 年前3 Envoy原理介绍及线上问题踩坑Envoy流量拦截原理、常用部署方式 3. Envoy可扩展过滤器架构、可观测性 4. Envoy线程模型 5. 生产环境问题分析及解决方法 6. 针对Envoy做的一些优化及效果 7. 常用性能分析测试工具及使用方法 8. 华为ASM产品介绍 Copyright © Huawei Technologies Co., Ltd. All rights reserved. Page 4 前言 • 微服务架构最早由Fred 改过的创建请求被 kubelet接收,并在节点创建POD。 • istio-init容器添加用于配置容器网络内iptables规则 • istio-proxy容器启动pilot-agent进程,使用UID=1337 GID=1337创建Envoy启动命令行与配置文件 • 可以通过自定义deployment内istio注解sidecar.istio.io/inject: “false”跳过自动注入过程,或修改部分启动参数。 每个线程的TLS对象本身只保存真实对象的共享指针进行读操作,减少内存消耗。 • 5. 全局对象更新只发生在主线程,并通过COW方式通知工作线程进行指针修改 • 每个TLS slot通过allocateSlot分配,在使用前通过set在每个线程中创建一个拷贝并保存。 • 在主线程中调用此slot的runOnAllThreads在所有线程中延迟执行回调,回调内更新每个线程内拷贝对象状态 Copyright © Huawei0 码力 | 30 页 | 2.67 MB | 1 年前3
 Extending service mesh capabilities using a streamlined way based on WASM and ORAS现。 ○ 动态运行时加载: ■ 在运行时将新的过滤器动态加载到Envoy代理中。 ■ 简化了扩展Envoy的过程, 这种解决方案通常使用WebAssembly(WASM)的新技术, 它是一种有效的可移植二进制指令格式,提供了可嵌入和隔离的执行环境。 6 使用Wasm for Proxy ● Pros ○ 敏捷性:过滤器可以动态加载到正在运行的Envoy进程中,而无需停止或重新编译。 ○ 因此它们可以访问并只能修改有 限数量的连接或请求属性。 ● Cons ○ 性能约为C++编写的原生静态编译的Filter的70%; ○ 由于需要启动一个或多个WASM虚拟机,因此会消耗一定的内存使用量; ○ The WebAssembly ecosystem is still young; 7 Wasm in Envoy Proxy ● Wasm动态加载 ● 一致性校验: ○ https://github Artifacts项目的参考实现, 可显著简化OCI注册库中任意内容的存储; ● 可以使用ORAS API/SDK Library来构建自定义工具, ○ 将WebAssembly模块推入到OCI注册库中; ○ 或者从OCI注册库中拉取WebAssembly模块; ● oras cli类似于docker cli 10 在ACR EE中使用ORAS CLI ● 阿里云容器镜像服务企业版ACR EE作为企业级云原生应用制品管理平台,0 码力 | 23 页 | 2.67 MB | 1 年前3 Extending service mesh capabilities using a streamlined way based on WASM and ORAS现。 ○ 动态运行时加载: ■ 在运行时将新的过滤器动态加载到Envoy代理中。 ■ 简化了扩展Envoy的过程, 这种解决方案通常使用WebAssembly(WASM)的新技术, 它是一种有效的可移植二进制指令格式,提供了可嵌入和隔离的执行环境。 6 使用Wasm for Proxy ● Pros ○ 敏捷性:过滤器可以动态加载到正在运行的Envoy进程中,而无需停止或重新编译。 ○ 因此它们可以访问并只能修改有 限数量的连接或请求属性。 ● Cons ○ 性能约为C++编写的原生静态编译的Filter的70%; ○ 由于需要启动一个或多个WASM虚拟机,因此会消耗一定的内存使用量; ○ The WebAssembly ecosystem is still young; 7 Wasm in Envoy Proxy ● Wasm动态加载 ● 一致性校验: ○ https://github Artifacts项目的参考实现, 可显著简化OCI注册库中任意内容的存储; ● 可以使用ORAS API/SDK Library来构建自定义工具, ○ 将WebAssembly模块推入到OCI注册库中; ○ 或者从OCI注册库中拉取WebAssembly模块; ● oras cli类似于docker cli 10 在ACR EE中使用ORAS CLI ● 阿里云容器镜像服务企业版ACR EE作为企业级云原生应用制品管理平台,0 码力 | 23 页 | 2.67 MB | 1 年前3
 Istio + MOSN 在 Dubbo 场景下的探索之路Galley、Citadel、Sidecar-Inject 和 Pilot 成为 Istiod。 功能 • 根据不同的平台(Kubernetes、Console) 获取一些资源(Kubernetes 中使用 Informer 机制获取 Node、Endpoint、 Service、Pod 变化) • 根据用户的配置(CR、MCP 推送,文件) 触发推送流程 推送流程 • 记录变化的资源类型 MOSN 是一款使用 Go 语言开发的网络代理软件,作为云原生的网络数据平面,旨在为服务提供 多协议、模块化、智能化、安全的代理能力。MOSN 是 Modular Open Smart Network 的简称。 MOSN 可以与任何支持 xDS API 的 Service Mesh 集成,亦可以作为独立的四、七层负载均衡, API Gateway,云原生 Ingress 等使用。 配置文件 多点Service Mesh改造架构图23/23 Demo 演示 说明 • 由于没有真正的注册,所以使用手动添加 ServiceEntry 的方式代替 Adapter 功能 • Listener 和 Routers 配置信息目前是固定的 • Provider 只注册到本地 zk • Sidecar 注入到方式使用的是多个 Container感谢聆听 欢迎关注,获取最新分布式架构内容 关注服务网格,关注0 码力 | 25 页 | 3.71 MB | 6 月前3 Istio + MOSN 在 Dubbo 场景下的探索之路Galley、Citadel、Sidecar-Inject 和 Pilot 成为 Istiod。 功能 • 根据不同的平台(Kubernetes、Console) 获取一些资源(Kubernetes 中使用 Informer 机制获取 Node、Endpoint、 Service、Pod 变化) • 根据用户的配置(CR、MCP 推送,文件) 触发推送流程 推送流程 • 记录变化的资源类型 MOSN 是一款使用 Go 语言开发的网络代理软件,作为云原生的网络数据平面,旨在为服务提供 多协议、模块化、智能化、安全的代理能力。MOSN 是 Modular Open Smart Network 的简称。 MOSN 可以与任何支持 xDS API 的 Service Mesh 集成,亦可以作为独立的四、七层负载均衡, API Gateway,云原生 Ingress 等使用。 配置文件 多点Service Mesh改造架构图23/23 Demo 演示 说明 • 由于没有真正的注册,所以使用手动添加 ServiceEntry 的方式代替 Adapter 功能 • Listener 和 Routers 配置信息目前是固定的 • Provider 只注册到本地 zk • Sidecar 注入到方式使用的是多个 Container感谢聆听 欢迎关注,获取最新分布式架构内容 关注服务网格,关注0 码力 | 25 页 | 3.71 MB | 6 月前3
 SolarMesh 基于Istio构建的流量监管平台Copyright © 2021 Cloud To Go SolarMesh的定位 - 基于Istio构建的流量监管平台 Istio是目前服务网格领域最流行的开源项目,38% 的企业在生产中使用服务网格,其中有接近一半的 选择是Istio SolarMesh 基于 Istio 及容器技术,提供流量监控 和管理,提供完善的非侵入式服务治理解决方案。 帮助企业在纷繁复杂的微服务调度中快速定位问题, 传统的故障定位方式 使用solarmesh的故障定位方式 1. 发现页面报错 2. F12看接口 3. 从网关开始,顺着调用链看日志 4. 日志没报错,下一个 5. 循环 4 6. 直到找到故障位置 1. 流量告警 / 发现页面报错 2. 看图 3. 直接找到故障位置 Copyright © 2021 Cloud To Go 应用场景 - 灰度版本迁移 传统的版本升级方式 使用solarmesh的版本升级方式 使用solarmesh的版本升级方式 1. 打好部署包 2. 等到半夜 3. 部署一个机器 4. 使用模拟的测试数据测试 1. 打好部署包即可部署 2. 用真实的数据测试 3. 挑个良辰吉日分配流量,宣布更新 Copyright © 2021 Cloud To Go 应用场景 - 异地容灾 通过智能路由实现异地容灾 在SolarMesh中,只需要声明哪些 集群是属于同一个mesh,借助istio0 码力 | 20 页 | 1.29 MB | 1 年前3 SolarMesh 基于Istio构建的流量监管平台Copyright © 2021 Cloud To Go SolarMesh的定位 - 基于Istio构建的流量监管平台 Istio是目前服务网格领域最流行的开源项目,38% 的企业在生产中使用服务网格,其中有接近一半的 选择是Istio SolarMesh 基于 Istio 及容器技术,提供流量监控 和管理,提供完善的非侵入式服务治理解决方案。 帮助企业在纷繁复杂的微服务调度中快速定位问题, 传统的故障定位方式 使用solarmesh的故障定位方式 1. 发现页面报错 2. F12看接口 3. 从网关开始,顺着调用链看日志 4. 日志没报错,下一个 5. 循环 4 6. 直到找到故障位置 1. 流量告警 / 发现页面报错 2. 看图 3. 直接找到故障位置 Copyright © 2021 Cloud To Go 应用场景 - 灰度版本迁移 传统的版本升级方式 使用solarmesh的版本升级方式 使用solarmesh的版本升级方式 1. 打好部署包 2. 等到半夜 3. 部署一个机器 4. 使用模拟的测试数据测试 1. 打好部署包即可部署 2. 用真实的数据测试 3. 挑个良辰吉日分配流量,宣布更新 Copyright © 2021 Cloud To Go 应用场景 - 异地容灾 通过智能路由实现异地容灾 在SolarMesh中,只需要声明哪些 集群是属于同一个mesh,借助istio0 码力 | 20 页 | 1.29 MB | 1 年前3
 Istio控制平面组件原理解析启动另外一个S进程(Secondary process) • 2. S通知P(Primary process)关闭其管理的端口,由S接管 • 3. S加载配置,开始绑定listen sockets,在这期间使用UDS从P获取合适的listen sockets • 4. S初始化成功,通知P停止监听新的链接并优雅关闭未完成的工作 • 5. 在P优雅关闭过程中,S会从共享内存中获取stats • 5. 到了时间S通知P自行关闭 f","718"]转换成属性词汇异步Flush到Adapter ü通过Template润色数据 ü使用Go的协程异步Flush到Adapter üAdapter展示数据 ü响应envoy数据处理完成问题讨论 Report流程回顾 üEnvoy异步批量发送数据给Mixer üMixer使用协程池处理Adapter ü处理完成所有Adapter才响应Envoy 疑问 协程池堵塞是否会影响envoy性能?Mixer协程池 Worker处理任务Jaeger架构设计Mixer阻塞对envoy的影响 压测环境: ü 模拟接口延迟响应 ü 使用hey压力工具 ü 相同压力 ü 先用hey进行预热 ü 从10份数据中取中位数解决方案 ü方案一 • 业务性能和日志之间的选择,出现阻塞,丢弃日志保性能 ü方案二 • 使用主题订阅模式,减少阻塞问题Istio_Ca——安全证书管理(ICA) u证书生成 u证书挂载 u证书过期证书生成0 码力 | 30 页 | 9.28 MB | 6 月前3 Istio控制平面组件原理解析启动另外一个S进程(Secondary process) • 2. S通知P(Primary process)关闭其管理的端口,由S接管 • 3. S加载配置,开始绑定listen sockets,在这期间使用UDS从P获取合适的listen sockets • 4. S初始化成功,通知P停止监听新的链接并优雅关闭未完成的工作 • 5. 在P优雅关闭过程中,S会从共享内存中获取stats • 5. 到了时间S通知P自行关闭 f","718"]转换成属性词汇异步Flush到Adapter ü通过Template润色数据 ü使用Go的协程异步Flush到Adapter üAdapter展示数据 ü响应envoy数据处理完成问题讨论 Report流程回顾 üEnvoy异步批量发送数据给Mixer üMixer使用协程池处理Adapter ü处理完成所有Adapter才响应Envoy 疑问 协程池堵塞是否会影响envoy性能?Mixer协程池 Worker处理任务Jaeger架构设计Mixer阻塞对envoy的影响 压测环境: ü 模拟接口延迟响应 ü 使用hey压力工具 ü 相同压力 ü 先用hey进行预热 ü 从10份数据中取中位数解决方案 ü方案一 • 业务性能和日志之间的选择,出现阻塞,丢弃日志保性能 ü方案二 • 使用主题订阅模式,减少阻塞问题Istio_Ca——安全证书管理(ICA) u证书生成 u证书挂载 u证书过期证书生成0 码力 | 30 页 | 9.28 MB | 6 月前3
 Istio 与 Knative 踩坑实录Knative的实践和瓶颈3/25 分享主题:字号 实践进展 /01 酷家乐在服务网格和FAAS方向上的实践进展汇总4/25 生产环境Istio稳定运行 酷家乐于2018年8月29日在国际站生产环 境开始全面使用Istio 1.0.1 版本 486 天 服务范围 覆盖了不同业务链路的四十余个服务 40+ 服务 K8S安装环境 覆盖自建机房、IDC机房、云主机、海外云 服务等各种环境和不同的K8S版本 Community 服务网格实践进展6/25 Knative FAAS实践进展7/25 Faas(函数即服务)基础设施 FAAS实践进展8/25 Istio 的价值和问题 /02 酷家乐在使用 Istio 作为服务网格解决方案时的相关实践和经验9/25 隔离中间件 Istio 的价值和问题10/25 服务网格带来自由 Istio 的价值和问题 • 语言和技术栈的自由 • 中间件升级和切换的自由 >> 性能资源损耗 • 根据组织和业务情况推广或改造,新旧体系可并存 • 超大规模应用,几个架构问题有待社区或业界解决17/25 分享主题:字号 Knative 的实践和瓶颈 /03 酷家乐在使用 Knative 作为 Serverless 基础设施时的相关实践和经验18/25 Knative 简介 FAAS 实践进展19/25 酷家乐 FAAS 方案 FAAS 实践进展20/250 码力 | 26 页 | 1.35 MB | 6 月前3 Istio 与 Knative 踩坑实录Knative的实践和瓶颈3/25 分享主题:字号 实践进展 /01 酷家乐在服务网格和FAAS方向上的实践进展汇总4/25 生产环境Istio稳定运行 酷家乐于2018年8月29日在国际站生产环 境开始全面使用Istio 1.0.1 版本 486 天 服务范围 覆盖了不同业务链路的四十余个服务 40+ 服务 K8S安装环境 覆盖自建机房、IDC机房、云主机、海外云 服务等各种环境和不同的K8S版本 Community 服务网格实践进展6/25 Knative FAAS实践进展7/25 Faas(函数即服务)基础设施 FAAS实践进展8/25 Istio 的价值和问题 /02 酷家乐在使用 Istio 作为服务网格解决方案时的相关实践和经验9/25 隔离中间件 Istio 的价值和问题10/25 服务网格带来自由 Istio 的价值和问题 • 语言和技术栈的自由 • 中间件升级和切换的自由 >> 性能资源损耗 • 根据组织和业务情况推广或改造,新旧体系可并存 • 超大规模应用,几个架构问题有待社区或业界解决17/25 分享主题:字号 Knative 的实践和瓶颈 /03 酷家乐在使用 Knative 作为 Serverless 基础设施时的相关实践和经验18/25 Knative 简介 FAAS 实践进展19/25 酷家乐 FAAS 方案 FAAS 实践进展20/250 码力 | 26 页 | 1.35 MB | 6 月前3
 百度APP基于Istio实现基础架构升级 - lightning talk - MichaelXu务实、高稳定性、低迁移成本。 l 核心思路 Ø 先单跳,后双跳。 Ø 服务发现下沉到Envoy。 Ø 基于 RPC + 服务发现实现透明流量劫持。 Ø 自建配置中心,产品化封装。 l 关键技术 Ø 内核劫持,使用Loopback IP 与 服务发现一一对应。 Ø RPC劫持,构建可快速扩展标准方案。 Ø 自身稳定性,降级(兜底)、隔离、监控多种方式保证。 ①bns, 百度内部基础设施层,服务发现。 ②bns-agent 。 Ø rpc框架查询bns-agent IP与治理策略数据。 Ø bns-agent判断否使用envoy进行服务治理。 Ø rpc框架根据反馈的IP,治理策略信息请求对 应IP,会cache数据,需要即时更新。 Ø envoy离线或者被干预则立即通知bns-agent, fallback会使用原有治理策略。 #IstioCon 架构介绍 Ø Mesh控制中心: ü 运维中心:基于Mesh的统一运维操作中心。 LocalityAware负载均衡策略 业务价值 LocalityAware负载均衡策略以下游节点的吞吐 除以延时作为分流权值,优化长尾平响问题。 Mesh价值 1. 优秀策略支持给业务方跨语言跨框架使用。 2. 支持LocalityAware Plus负载均衡策略,提 升单点容错能力。 业务价值 降低业务因Redis回退引发的雪崩问题。(业务层RPC 框架Retry策略托管到Mesh,通过平响分位值动态抑0 码力 | 9 页 | 2.20 MB | 1 年前3 百度APP基于Istio实现基础架构升级 - lightning talk - MichaelXu务实、高稳定性、低迁移成本。 l 核心思路 Ø 先单跳,后双跳。 Ø 服务发现下沉到Envoy。 Ø 基于 RPC + 服务发现实现透明流量劫持。 Ø 自建配置中心,产品化封装。 l 关键技术 Ø 内核劫持,使用Loopback IP 与 服务发现一一对应。 Ø RPC劫持,构建可快速扩展标准方案。 Ø 自身稳定性,降级(兜底)、隔离、监控多种方式保证。 ①bns, 百度内部基础设施层,服务发现。 ②bns-agent 。 Ø rpc框架查询bns-agent IP与治理策略数据。 Ø bns-agent判断否使用envoy进行服务治理。 Ø rpc框架根据反馈的IP,治理策略信息请求对 应IP,会cache数据,需要即时更新。 Ø envoy离线或者被干预则立即通知bns-agent, fallback会使用原有治理策略。 #IstioCon 架构介绍 Ø Mesh控制中心: ü 运维中心:基于Mesh的统一运维操作中心。 LocalityAware负载均衡策略 业务价值 LocalityAware负载均衡策略以下游节点的吞吐 除以延时作为分流权值,优化长尾平响问题。 Mesh价值 1. 优秀策略支持给业务方跨语言跨框架使用。 2. 支持LocalityAware Plus负载均衡策略,提 升单点容错能力。 业务价值 降低业务因Redis回退引发的雪崩问题。(业务层RPC 框架Retry策略托管到Mesh,通过平响分位值动态抑0 码力 | 9 页 | 2.20 MB | 1 年前3
 Kubernetes容器应用基于Istio的灰度发布实践ery 若干服务发现的接口定义 2. Controller List/Watch KubeAPIserver上service、 endpoint等资源对象 3. DiscvoeryServer使用 ServcieDiscovery接口上的服务发 现方法和用户配置的规则构造xDS 4. Envoy从Discovery获取xDS,动态 更新 Kubernetes Service Instance 企业级高可靠、高性能K8S服务 服务网格 K8S原生Service Mesh Istio在华为云:华为云容器应用 Istio在华为云:服务网格 只需在创建集群时选 择“启用服务网格” 即可使用Istio服务治 理功能 Istio在华为云: 灰度发布流程 Y N Y N Istio在华为云: 灰度发布 Istio & Kubernetes 在Google Cloud Services0 码力 | 38 页 | 14.93 MB | 1 年前3 Kubernetes容器应用基于Istio的灰度发布实践ery 若干服务发现的接口定义 2. Controller List/Watch KubeAPIserver上service、 endpoint等资源对象 3. DiscvoeryServer使用 ServcieDiscovery接口上的服务发 现方法和用户配置的规则构造xDS 4. Envoy从Discovery获取xDS,动态 更新 Kubernetes Service Instance 企业级高可靠、高性能K8S服务 服务网格 K8S原生Service Mesh Istio在华为云:华为云容器应用 Istio在华为云:服务网格 只需在创建集群时选 择“启用服务网格” 即可使用Istio服务治 理功能 Istio在华为云: 灰度发布流程 Y N Y N Istio在华为云: 灰度发布 Istio & Kubernetes 在Google Cloud Services0 码力 | 38 页 | 14.93 MB | 1 年前3
 Kubernetes容器应用基于Istio的灰度发布实践ery 若干服务发现的接口定义 2. Controller List/Watch KubeAPIserver上service、 endpoint等资源对象 3. DiscvoeryServer使用 ServcieDiscovery接口上的服务发 现方法和用户配置的规则构造xDS 4. Envoy从Discovery获取xDS,动态 更新 Kubernet es Service Instance 企业级高可靠、高性能K8S服务 服务网格 K8S原生Service Mesh28 Istio在华为云:华为云容器应用29 Istio在华为云:服务网格 只需在创建集群时选 择“启用服务网格” 即可使用Istio服务治 理功能30 Istio在华为云: 灰度发布流程 Y N Y N31 Istio在华为云: 灰度发布32 Istio & Kubernetes 在Google Cloud0 码力 | 34 页 | 2.64 MB | 6 月前3 Kubernetes容器应用基于Istio的灰度发布实践ery 若干服务发现的接口定义 2. Controller List/Watch KubeAPIserver上service、 endpoint等资源对象 3. DiscvoeryServer使用 ServcieDiscovery接口上的服务发 现方法和用户配置的规则构造xDS 4. Envoy从Discovery获取xDS,动态 更新 Kubernet es Service Instance 企业级高可靠、高性能K8S服务 服务网格 K8S原生Service Mesh28 Istio在华为云:华为云容器应用29 Istio在华为云:服务网格 只需在创建集群时选 择“启用服务网格” 即可使用Istio服务治 理功能30 Istio在华为云: 灰度发布流程 Y N Y N31 Istio在华为云: 灰度发布32 Istio & Kubernetes 在Google Cloud0 码力 | 34 页 | 2.64 MB | 6 月前3
 13 Istio 流量管理原理与协议扩展 赵化冰com Service Mesh Service Mesh Layer 处理服务间通信(主要是七层通信)的云原生基础设施层: Service Mesh 将各个服务中原来使用 SDK 实现的七层通信相关功能抽象 出来,使用一个专用层次来实现,Service Mesh 对应用透明,因此应用 可以无需关注分布式架构带来的通信相关问题,而专注于其业务价值。 流量控制:服务发现、请求路由、负载均衡、灰度发布、错误重试、0 码力 | 20 页 | 11.31 MB | 6 月前3 13 Istio 流量管理原理与协议扩展 赵化冰com Service Mesh Service Mesh Layer 处理服务间通信(主要是七层通信)的云原生基础设施层: Service Mesh 将各个服务中原来使用 SDK 实现的七层通信相关功能抽象 出来,使用一个专用层次来实现,Service Mesh 对应用透明,因此应用 可以无需关注分布式架构带来的通信相关问题,而专注于其业务价值。 流量控制:服务发现、请求路由、负载均衡、灰度发布、错误重试、0 码力 | 20 页 | 11.31 MB | 6 月前3
共 11 条
- 1
- 2













