 Istio 在 Free Wheel 微服务中的实践FreeWheel的Istio实践 • 在FreeWheel,我们已经有一套复杂的自定义认证、授权机制,为了 充分利用Istio,我们通过扩展Istio来整合这些系统,涉及两方面: • 扩展Sidecar:加入认证支持,提供了对业务系统的认证支持,将用 户相关信息以header的形式传入mesh,后续的授权、监控、限流 都可以用Istio原生的机制来完成 • 扩展Mixer:选择一部分流量来应用对应的授权逻辑 FreeWheel的Istio实践 是对Proxy上报的Attribute的特定处 理机制的框架,支持四类: • Preprocess: 汇总流量相关元数据 和环境(k8s)相关的元数据 • Report: 上报数据 • Check: 决策是否允许当前访问 • Quota: 决策容量是否足够 Mixer or Sidecar,这是一个问题 • Mixer提供了一种非常灵活的模型,让Handler可以在流量中动态的选 择一部分来引入额外的机制(如权限控制、限流等),在应用运维中0 码力 | 31 页 | 4.21 MB | 1 年前3 Istio 在 Free Wheel 微服务中的实践FreeWheel的Istio实践 • 在FreeWheel,我们已经有一套复杂的自定义认证、授权机制,为了 充分利用Istio,我们通过扩展Istio来整合这些系统,涉及两方面: • 扩展Sidecar:加入认证支持,提供了对业务系统的认证支持,将用 户相关信息以header的形式传入mesh,后续的授权、监控、限流 都可以用Istio原生的机制来完成 • 扩展Mixer:选择一部分流量来应用对应的授权逻辑 FreeWheel的Istio实践 是对Proxy上报的Attribute的特定处 理机制的框架,支持四类: • Preprocess: 汇总流量相关元数据 和环境(k8s)相关的元数据 • Report: 上报数据 • Check: 决策是否允许当前访问 • Quota: 决策容量是否足够 Mixer or Sidecar,这是一个问题 • Mixer提供了一种非常灵活的模型,让Handler可以在流量中动态的选 择一部分来引入额外的机制(如权限控制、限流等),在应用运维中0 码力 | 31 页 | 4.21 MB | 1 年前3
 Envoy原理介绍及线上问题踩坑。 • 2. 控制面通信 • Pilot-agent进程本身创建UDS接收Envoy连接,用于证书更新下发。并且与istiod建立证书更新通道。 • Envoy 通过pilot-agent转发机制与istiod建立长连接,通过xDS协议接收系统下发的监听器、路由、集群节点等更新信息。 • 3. 数据面通信 • 客户端请求进入容器网络,并被iptables规则拦截,经过DNAT后进入Envoy L4网络过滤器 基于L4层1对1上下游网络连接代理 envoy.filters.network.wasm L4网络过滤器 基于WASM(WebAssembly)技术,支持沙箱、热升级、 跨语言的扩展机制,处理L4层新连接、数据收发。 envoy.filters.network.dubbo_pro xy L4网络过滤器 解析dubbo RPC协议并提取请求中方法、接口、 metadata等信息,并根据元数据进行路由选择。 基于L4层请求限流,通过令牌桶防止定期时间间隔内 过多下游请求 envoy.filters.http.wasm L7 HTTP过滤器 基于WASM(WebAssembly)技术,支持沙箱、热升级、 跨语言的扩展机制,处理L7层HTTP请求编解码。 envoy.filters.http.router L7 HTTP过滤器 HTTP路由及负载均衡的入口点,作为L7层过滤器链中 最后一个过滤器。 监听过滤器 L4网络过滤器0 码力 | 30 页 | 2.67 MB | 1 年前3 Envoy原理介绍及线上问题踩坑。 • 2. 控制面通信 • Pilot-agent进程本身创建UDS接收Envoy连接,用于证书更新下发。并且与istiod建立证书更新通道。 • Envoy 通过pilot-agent转发机制与istiod建立长连接,通过xDS协议接收系统下发的监听器、路由、集群节点等更新信息。 • 3. 数据面通信 • 客户端请求进入容器网络,并被iptables规则拦截,经过DNAT后进入Envoy L4网络过滤器 基于L4层1对1上下游网络连接代理 envoy.filters.network.wasm L4网络过滤器 基于WASM(WebAssembly)技术,支持沙箱、热升级、 跨语言的扩展机制,处理L4层新连接、数据收发。 envoy.filters.network.dubbo_pro xy L4网络过滤器 解析dubbo RPC协议并提取请求中方法、接口、 metadata等信息,并根据元数据进行路由选择。 基于L4层请求限流,通过令牌桶防止定期时间间隔内 过多下游请求 envoy.filters.http.wasm L7 HTTP过滤器 基于WASM(WebAssembly)技术,支持沙箱、热升级、 跨语言的扩展机制,处理L7层HTTP请求编解码。 envoy.filters.http.router L7 HTTP过滤器 HTTP路由及负载均衡的入口点,作为L7层过滤器链中 最后一个过滤器。 监听过滤器 L4网络过滤器0 码力 | 30 页 | 2.67 MB | 1 年前3
 Istio控制平面组件原理解析S升级为P • 官方博客:Envoy hot restart什么时候会进行热重启?监控envoy ü获取非正常退出状态 ü抢救机制触发 ü抢救令牌减少一个(总共10个) ü在2(n-1) * 200毫秒后执行(为什么不立即执行) ü失败再次触发抢救机制 ü10个令牌用完,没有抢救成功,放弃退出优雅关闭envoy ü K8s发送SIGTERM信号让容器优雅关闭 ü Pilot-Ag0 码力 | 30 页 | 9.28 MB | 6 月前3 Istio控制平面组件原理解析S升级为P • 官方博客:Envoy hot restart什么时候会进行热重启?监控envoy ü获取非正常退出状态 ü抢救机制触发 ü抢救令牌减少一个(总共10个) ü在2(n-1) * 200毫秒后执行(为什么不立即执行) ü失败再次触发抢救机制 ü10个令牌用完,没有抢救成功,放弃退出优雅关闭envoy ü K8s发送SIGTERM信号让容器优雅关闭 ü Pilot-Ag0 码力 | 30 页 | 9.28 MB | 6 月前3
 13 Istio 流量管理原理与协议扩展 赵化冰(header: user: ***) Pilot 代码改动 • 解析 CRD • 生成 xDS 配置下发 优点: • 控制面改动小,可以快速实现对新协议的支持 问题: • Pilot 目前缺少一个良好的协议扩展机制 • Pilot 需要理解 Envoy filter 中协议特定的知识 • Pilot 代码中维护众多七层协议的代价较大 12 Istio 协议扩展:常见七层协议的路由 Protocol Destination Redis Proxy https://github.com/zhaohuabing/istio-redis-culster EnvoyFilter 15 Istio 协议扩展:控制面扩展机制 优点: • 对 Istio 和 Envoy 无侵入 • 扩展性强,基本可以支持任何七层协议 问题: • 工作量较大,相当于实现了一个独立的 xDS 服务器 Aeraki: 为Istio提供七层协议扩展的开源项目,可以支持0 码力 | 20 页 | 11.31 MB | 6 月前3 13 Istio 流量管理原理与协议扩展 赵化冰(header: user: ***) Pilot 代码改动 • 解析 CRD • 生成 xDS 配置下发 优点: • 控制面改动小,可以快速实现对新协议的支持 问题: • Pilot 目前缺少一个良好的协议扩展机制 • Pilot 需要理解 Envoy filter 中协议特定的知识 • Pilot 代码中维护众多七层协议的代价较大 12 Istio 协议扩展:常见七层协议的路由 Protocol Destination Redis Proxy https://github.com/zhaohuabing/istio-redis-culster EnvoyFilter 15 Istio 协议扩展:控制面扩展机制 优点: • 对 Istio 和 Envoy 无侵入 • 扩展性强,基本可以支持任何七层协议 问题: • 工作量较大,相当于实现了一个独立的 xDS 服务器 Aeraki: 为Istio提供七层协议扩展的开源项目,可以支持0 码力 | 20 页 | 11.31 MB | 6 月前3
 Istio + MOSN 在 Dubbo 场景下的探索之路Galley、Citadel、Sidecar-Inject 和 Pilot 成为 Istiod。 功能 • 根据不同的平台(Kubernetes、Console) 获取一些资源(Kubernetes 中使用 Informer 机制获取 Node、Endpoint、 Service、Pod 变化) • 根据用户的配置(CR、MCP 推送,文件) 触发推送流程 推送流程 • 记录变化的资源类型 • 根据变化的资源类型整理本地数据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 推送,文件) 触发推送流程 推送流程 • 记录变化的资源类型 • 根据变化的资源类型整理本地数据0 码力 | 25 页 | 3.71 MB | 6 月前3
 百度APP基于Istio实现基础架构升级 - lightning talk - MichaelXu核心业务线已完成微服务改造,数万个微服务对架构服务治理能力提出了更高的要求。 l 高级架构能力能否多语言、多框架支持? l 运维架构能力是否具备可移植性?是否能低成本复制新的产品线? l 可观测性不足,是否有通用机制提升产品线可观测性? Ø 部分模块上下游超时配置不合理,超时倒挂,集中管理调整成本比较高。 Ø 多数模块对单点异常,慢节点等异常缺乏容忍能力,推动每个模块独立修复,成本高,上线周期长。 Ø 因重0 码力 | 9 页 | 2.20 MB | 1 年前3 百度APP基于Istio实现基础架构升级 - lightning talk - MichaelXu核心业务线已完成微服务改造,数万个微服务对架构服务治理能力提出了更高的要求。 l 高级架构能力能否多语言、多框架支持? l 运维架构能力是否具备可移植性?是否能低成本复制新的产品线? l 可观测性不足,是否有通用机制提升产品线可观测性? Ø 部分模块上下游超时配置不合理,超时倒挂,集中管理调整成本比较高。 Ø 多数模块对单点异常,慢节点等异常缺乏容忍能力,推动每个模块独立修复,成本高,上线周期长。 Ø 因重0 码力 | 9 页 | 2.20 MB | 1 年前3
 SolarMesh 基于Istio构建的流量监管平台问题的源头 服务间交互的复杂性: Ø 难以可视化 Ø 难以全面测试 Ø 多服务联动时问题难以察觉 Ø ... 服务间通信的复杂性: Ø 网络延迟 Ø 消息序列化 Ø 不可靠的网络 Ø 异步机制 Ø ... 开发难 排错难 测试难 运维难 Ø 服务变得非常多 Ø 版本变得非常复杂 Ø 上线十分痛苦 Ø 排查问题更难 Ø 解决手段更复杂 Ø 学的东西更多 Copyright0 码力 | 20 页 | 1.29 MB | 1 年前3 SolarMesh 基于Istio构建的流量监管平台问题的源头 服务间交互的复杂性: Ø 难以可视化 Ø 难以全面测试 Ø 多服务联动时问题难以察觉 Ø ... 服务间通信的复杂性: Ø 网络延迟 Ø 消息序列化 Ø 不可靠的网络 Ø 异步机制 Ø ... 开发难 排错难 测试难 运维难 Ø 服务变得非常多 Ø 版本变得非常复杂 Ø 上线十分痛苦 Ø 排查问题更难 Ø 解决手段更复杂 Ø 学的东西更多 Copyright0 码力 | 20 页 | 1.29 MB | 1 年前3
共 7 条
- 1













