 13 Istio 流量管理原理与协议扩展 赵化冰Productpage 发起对 reviews 服务的调用:http://reviews:9080/reviews/0 。 2. 请求被 productpage Pod 的 iptables 出向流量规则拦截,处理后重定向到本地 15001 端口。 3. Envoy 在 15001 端口上监听的 VirtualOutbound listener 收到了该请求。 4. 请求被 VirtualOutbound listener Envoy 转发到其中一个 endpoint 10.40.0.15,即 reviews-v1 所在的 pod。 9. 然后该请求被 reviews-v1 pod 的 iptables 入向流量规则拦截,处理后重定向到本地的 15006 端口。 10.Envoy 在 15006 端口上监听的 VirtualInbound listener 收到了该请求。 11.根据匹配条件,请求被 VirtualInbound splitting • 后续规划: • 其他协议支持:Thrift,Redis ,TARS … • 在 TCM 中提供托管的 Aeraki,为客户提供第三方协议支 持 16 Aeraki 项目后续计划 Dubbo [Done] Default routing [Done] Version-based routing [Done] Traffic splitting [Todo] Header based0 码力 | 20 页 | 11.31 MB | 6 月前3 13 Istio 流量管理原理与协议扩展 赵化冰Productpage 发起对 reviews 服务的调用:http://reviews:9080/reviews/0 。 2. 请求被 productpage Pod 的 iptables 出向流量规则拦截,处理后重定向到本地 15001 端口。 3. Envoy 在 15001 端口上监听的 VirtualOutbound listener 收到了该请求。 4. 请求被 VirtualOutbound listener Envoy 转发到其中一个 endpoint 10.40.0.15,即 reviews-v1 所在的 pod。 9. 然后该请求被 reviews-v1 pod 的 iptables 入向流量规则拦截,处理后重定向到本地的 15006 端口。 10.Envoy 在 15006 端口上监听的 VirtualInbound listener 收到了该请求。 11.根据匹配条件,请求被 VirtualInbound splitting • 后续规划: • 其他协议支持:Thrift,Redis ,TARS … • 在 TCM 中提供托管的 Aeraki,为客户提供第三方协议支 持 16 Aeraki 项目后续计划 Dubbo [Done] Default routing [Done] Version-based routing [Done] Traffic splitting [Todo] Header based0 码力 | 20 页 | 11.31 MB | 6 月前3
 全栈服务网格 - Aeraki 助你在
Istio 服务网格中管理任何七层流量负载均衡、熔断、流量镜像、故障注入等)、编解码 ○ 控制面:编写一个 Aeraki 插件——运维/流量管理策略 ● 非 HTTP 协议缺少 RDS 支持: ○ Listener 内嵌路由 ○ 修改内嵌路由后,Envoy 会重建 listener,导致业务出现短 暂中断。 #IstioCon MetaProtocol:Service Mesh 通用七层协议框架 大部分七层协议的路由、熔断、负载均衡等能力的实现逻辑是类似的, Mutation) ● 路由规则协议无关:七层协议名是路由规则中的字段值,而不是字段名称 ● 采用通用的 key:value 键值对来配置路由匹配条件 #IstioCon Aeraki 后续开源计划 ● Istio 增强工具集 ○ 协议扩展:Dubbo、Thrift、Redis、 MetaProtocol ○ 性能优化:LazyXDS ○ 注册表对接:dubbo2istio、consul、0 码力 | 29 页 | 2.11 MB | 1 年前3 全栈服务网格 - Aeraki 助你在
Istio 服务网格中管理任何七层流量负载均衡、熔断、流量镜像、故障注入等)、编解码 ○ 控制面:编写一个 Aeraki 插件——运维/流量管理策略 ● 非 HTTP 协议缺少 RDS 支持: ○ Listener 内嵌路由 ○ 修改内嵌路由后,Envoy 会重建 listener,导致业务出现短 暂中断。 #IstioCon MetaProtocol:Service Mesh 通用七层协议框架 大部分七层协议的路由、熔断、负载均衡等能力的实现逻辑是类似的, Mutation) ● 路由规则协议无关:七层协议名是路由规则中的字段值,而不是字段名称 ● 采用通用的 key:value 键值对来配置路由匹配条件 #IstioCon Aeraki 后续开源计划 ● Istio 增强工具集 ○ 协议扩展:Dubbo、Thrift、Redis、 MetaProtocol ○ 性能优化:LazyXDS ○ 注册表对接:dubbo2istio、consul、0 码力 | 29 页 | 2.11 MB | 1 年前3
 Service Mesh in ChinaCNCF Ambassador ServiceMesher 及云原生社区创始人 https://jimmysong.io • ServiceMesher • 行业现状 • 资料分享 • 社区计划 #IstioCon ServiceMesher 是在中国推广 Service Mesh 技术的核心力量。 Istio 是中国最流行的 Service Mesh 实现。 2018 年 5 月至今0 码力 | 13 页 | 2.66 MB | 1 年前3 Service Mesh in ChinaCNCF Ambassador ServiceMesher 及云原生社区创始人 https://jimmysong.io • ServiceMesher • 行业现状 • 资料分享 • 社区计划 #IstioCon ServiceMesher 是在中国推广 Service Mesh 技术的核心力量。 Istio 是中国最流行的 Service Mesh 实现。 2018 年 5 月至今0 码力 | 13 页 | 2.66 MB | 1 年前3
 Envoy原理介绍及线上问题踩坑如果为http协议,再经过请求过滤器处理http协议头部,如路由选择等功能并创建上游连接池 • 将修改及编码后的http消息通过网络发送到对端Envoy的容器网络。 • Iptables识别为入流量则进入virtualInbound端口。 • ORIGINAL_DST恢复原始目标后,根据virtualInbound配置的监听过滤器找到对应的本地服务器地址。并发起localhost的请求。 • 流量外,其余都通过REDIRECT (DNAT)保存原始目标地址后,进入 Envoy的15001端口。 • inbound方向:从二层网络设备进入POD内的 流量 • 增加ISTIO_INBOUND、 ISTIO_IN_REDIRECT链。 • 跳过15008、22、15090、15021、 15020系统服务外,其余都通过 REDIRECT(DNAT)保存原始目标地址 后,进入Envoy的15006端口。 En 。 由内核随机挑选监听线程处理新连接。 • 进行连接负载均衡处理后,选择最终的业务监听器处理新连接。 • 之后对于此连接的所有处理都在此线程进行,包括下游数据集解码,路由选择、上游数据编 码发送等。 • 同时此工作线程还要处理定期观测信息与主线程同步(通过异步加回调)、线程内配置及集 群管理器状态更新等工作。 • 请求完成后延迟释放内存,解决本次事件处理中回调所引用对象可以被安全访问,并在下次0 码力 | 30 页 | 2.67 MB | 1 年前3 Envoy原理介绍及线上问题踩坑如果为http协议,再经过请求过滤器处理http协议头部,如路由选择等功能并创建上游连接池 • 将修改及编码后的http消息通过网络发送到对端Envoy的容器网络。 • Iptables识别为入流量则进入virtualInbound端口。 • ORIGINAL_DST恢复原始目标后,根据virtualInbound配置的监听过滤器找到对应的本地服务器地址。并发起localhost的请求。 • 流量外,其余都通过REDIRECT (DNAT)保存原始目标地址后,进入 Envoy的15001端口。 • inbound方向:从二层网络设备进入POD内的 流量 • 增加ISTIO_INBOUND、 ISTIO_IN_REDIRECT链。 • 跳过15008、22、15090、15021、 15020系统服务外,其余都通过 REDIRECT(DNAT)保存原始目标地址 后,进入Envoy的15006端口。 En 。 由内核随机挑选监听线程处理新连接。 • 进行连接负载均衡处理后,选择最终的业务监听器处理新连接。 • 之后对于此连接的所有处理都在此线程进行,包括下游数据集解码,路由选择、上游数据编 码发送等。 • 同时此工作线程还要处理定期观测信息与主线程同步(通过异步加回调)、线程内配置及集 群管理器状态更新等工作。 • 请求完成后延迟释放内存,解决本次事件处理中回调所引用对象可以被安全访问,并在下次0 码力 | 30 页 | 2.67 MB | 1 年前3
 百度APP基于Istio实现基础架构升级 - lightning talk - MichaelXu各项服务治理能力的通用化、中台化能力,从而加速服务治理技术的研发和迭代,提升架构 能力可移植性。 #IstioCon 技术方案 l 核心原则 Ø 务实、高稳定性、低迁移成本。 l 核心思路 Ø 先单跳,后双跳。 Ø 服务发现下沉到Envoy。 Ø 基于 RPC + 服务发现实现透明流量劫持。 Ø 自建配置中心,产品化封装。 l 关键技术 Ø 内核劫持,使用Loopback IP 与 服务发现一一对应。 服务发现接入层。 ㊟ 内核劫持:Loopback方案 Ø loopback地址的管理和分配。 Ø 需要打通业务和loopback之间的映射管 理。 RPC劫持:可扩展方案 Ø envoy启动后注册port到bns-agent。 Ø rpc框架查询bns-agent IP与治理策略数据。 Ø bns-agent判断否使用envoy进行服务治理。 Ø rpc框架根据反馈的IP,治理策略信息请求对0 码力 | 9 页 | 2.20 MB | 1 年前3 百度APP基于Istio实现基础架构升级 - lightning talk - MichaelXu各项服务治理能力的通用化、中台化能力,从而加速服务治理技术的研发和迭代,提升架构 能力可移植性。 #IstioCon 技术方案 l 核心原则 Ø 务实、高稳定性、低迁移成本。 l 核心思路 Ø 先单跳,后双跳。 Ø 服务发现下沉到Envoy。 Ø 基于 RPC + 服务发现实现透明流量劫持。 Ø 自建配置中心,产品化封装。 l 关键技术 Ø 内核劫持,使用Loopback IP 与 服务发现一一对应。 服务发现接入层。 ㊟ 内核劫持:Loopback方案 Ø loopback地址的管理和分配。 Ø 需要打通业务和loopback之间的映射管 理。 RPC劫持:可扩展方案 Ø envoy启动后注册port到bns-agent。 Ø rpc框架查询bns-agent IP与治理策略数据。 Ø bns-agent判断否使用envoy进行服务治理。 Ø rpc框架根据反馈的IP,治理策略信息请求对0 码力 | 9 页 | 2.20 MB | 1 年前3
 Istio 在 Free Wheel 微服务中的实践这里实现的例子mymock会完全拒绝所有 被匹配到的流量,右图是mymock Handler的基本原理 • mymock handler 是 mymock adapter的初始化配置 • 完成初始化后rule将checknothing配置 与handler关联起来,其实就是做了流 量的匹配,满足一定条件的流量上应用 mymock handler • mymock adapter直接拒绝被匹配的请 • Mixer会直接影响整个Mesh的稳定性,因此替换时要做到尽可能稳妥 实践总结 • k8s/etcd 配置管理存在性能瓶颈: • 单一 resource 应控制在k级别,达到 10k 量级后响应可能会出现超 时导致配置读写状态异常,进而影响整个系统稳定性 实践总结 • Istio配置管理有局限性: • Endpoint的配置管理有防抖动处理,即使集群中的部署变化再快, 也不会阻塞Istio0 码力 | 31 页 | 4.21 MB | 1 年前3 Istio 在 Free Wheel 微服务中的实践这里实现的例子mymock会完全拒绝所有 被匹配到的流量,右图是mymock Handler的基本原理 • mymock handler 是 mymock adapter的初始化配置 • 完成初始化后rule将checknothing配置 与handler关联起来,其实就是做了流 量的匹配,满足一定条件的流量上应用 mymock handler • mymock adapter直接拒绝被匹配的请 • Mixer会直接影响整个Mesh的稳定性,因此替换时要做到尽可能稳妥 实践总结 • k8s/etcd 配置管理存在性能瓶颈: • 单一 resource 应控制在k级别,达到 10k 量级后响应可能会出现超 时导致配置读写状态异常,进而影响整个系统稳定性 实践总结 • Istio配置管理有局限性: • Endpoint的配置管理有防抖动处理,即使集群中的部署变化再快, 也不会阻塞Istio0 码力 | 31 页 | 4.21 MB | 1 年前3
 Istio控制平面组件原理解析喜欢开源,个人开源项目”Jaeger PHP Client”。 • 喜欢研究源码,对NSQ,Jaeger,Istio(控制平面)等go语言开源项目进行 过研究。 • 除了代码还喜欢爬山和第二天睡醒后全身酸疼的感觉。目录Pilot-Agent——管理生命周期(PA) u启动envoy u热重启envoy u监控envoy u优雅关闭envoy启动envoy ü监听/etc/certs目录 ü生 • 官方博客:Envoy hot restart什么时候会进行热重启?监控envoy ü获取非正常退出状态 ü抢救机制触发 ü抢救令牌减少一个(总共10个) ü在2(n-1) * 200毫秒后执行(为什么不立即执行) ü失败再次触发抢救机制 ü10个令牌用完,没有抢救成功,放弃退出优雅关闭envoy ü K8s发送SIGTERM信号让容器优雅关闭 ü Pilot-Agent接收信号通0 码力 | 30 页 | 9.28 MB | 6 月前3 Istio控制平面组件原理解析喜欢开源,个人开源项目”Jaeger PHP Client”。 • 喜欢研究源码,对NSQ,Jaeger,Istio(控制平面)等go语言开源项目进行 过研究。 • 除了代码还喜欢爬山和第二天睡醒后全身酸疼的感觉。目录Pilot-Agent——管理生命周期(PA) u启动envoy u热重启envoy u监控envoy u优雅关闭envoy启动envoy ü监听/etc/certs目录 ü生 • 官方博客:Envoy hot restart什么时候会进行热重启?监控envoy ü获取非正常退出状态 ü抢救机制触发 ü抢救令牌减少一个(总共10个) ü在2(n-1) * 200毫秒后执行(为什么不立即执行) ü失败再次触发抢救机制 ü10个令牌用完,没有抢救成功,放弃退出优雅关闭envoy ü K8s发送SIGTERM信号让容器优雅关闭 ü Pilot-Agent接收信号通0 码力 | 30 页 | 9.28 MB | 6 月前3
 Istio 与 Knative 踩坑实录版本 • Queue-proxy 过重 • 冷启动时间亟待优化 • 支持代码级更新?23/25 展望-推动组织变革 FAAS 实践进展24/25 总结 FAAS 实践进展 • 深入掌握后可谨慎使用 • 可能颠覆组织和职能的运作方式,推进需要技巧 • 目前社区尚小,亟需扩大开发者群体和用户群感谢聆听 酷家乐技术博客 我的微信0 码力 | 26 页 | 1.35 MB | 6 月前3 Istio 与 Knative 踩坑实录版本 • Queue-proxy 过重 • 冷启动时间亟待优化 • 支持代码级更新?23/25 展望-推动组织变革 FAAS 实践进展24/25 总结 FAAS 实践进展 • 深入掌握后可谨慎使用 • 可能颠覆组织和职能的运作方式,推进需要技巧 • 目前社区尚小,亟需扩大开发者群体和用户群感谢聆听 酷家乐技术博客 我的微信0 码力 | 26 页 | 1.35 MB | 6 月前3
 IstioMeetupChina 服务网格热升级技术分享Catalog 5 • Envoy热重启 • 以Epoch + 1的方式启动新实例,触发热重启 • ListenSocket转移到新实例 • 旧实例进行排水,不再接受新的请求 • 排水结束后旧实例退出,热重启完成 References: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/operations/hot_restart0 码力 | 14 页 | 2.25 MB | 1 年前3 IstioMeetupChina 服务网格热升级技术分享Catalog 5 • Envoy热重启 • 以Epoch + 1的方式启动新实例,触发热重启 • ListenSocket转移到新实例 • 旧实例进行排水,不再接受新的请求 • 排水结束后旧实例退出,热重启完成 References: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/operations/hot_restart0 码力 | 14 页 | 2.25 MB | 1 年前3
 Extending service mesh capabilities using a streamlined way based on WASM and ORASapplyTo: HTTP_FILTER match: …. patch: …. workloadSelector: labels: app: productpage version: v1 20 更新后的Deployment - 以hostpath方式挂载wasm filter文件到Proxy容器 apiVersion: extensions/v1beta1 kind: Deployment metadata:0 码力 | 23 页 | 2.67 MB | 1 年前3 Extending service mesh capabilities using a streamlined way based on WASM and ORASapplyTo: HTTP_FILTER match: …. patch: …. workloadSelector: labels: app: productpage version: v1 20 更新后的Deployment - 以hostpath方式挂载wasm filter文件到Proxy容器 apiVersion: extensions/v1beta1 kind: Deployment metadata:0 码力 | 23 页 | 2.67 MB | 1 年前3
共 10 条
- 1













