IstioMeetupChina 服务网格热升级技术分享IstioMeetup 服务网格数据平面热升级技术分享 ServiceMesh Data-Plane Hot-Upgrade 阿里云服务网格团队 – 史泽寰 • 为什么需要服务网格数据面热升级 • 实现热升级 • 实践热升级 目录 Catalog 2 为什么需要服务网格数据面热升级 Why do we need Hot-Upgrade for ServiceMesh Data-Plane Data-Plane • 造成请求失败,影响业务质量 • 重启Pod导致业务容器也被重启,需要执行重新初始化 • 不增加workload数量升级,则服务容量受损 • 增加workload保持服务容量不变,应对大规模场景难以在扩容规模和操作便捷度上取 得令人满意的平衡 传统Sidecar升级方式的缺点 3 为什么需要服务网格数据面热升级 Why do we need Hot-Upgrade for ServiceMesh Data-Plane • 只替换/重启Sidecar • 替换/重启过程中进/出不会出现请求失败,连接失败 • 易于运维,可以控制升级策略 理想的Sidecar升级 4 • 为什么需要服务网格数据面热升级 • 实现热升级 • 实践热升级 目录 Catalog 5 • Envoy热重启 • 以Epoch + 1的方式启动新实例,触发热重启 • ListenSocket转移到新实例0 码力 | 14 页 | 2.25 MB | 1 年前3
百度APP基于Istio实现基础架构升级 - lightning talk - MichaelXu#IstioCon 百度APP基于Istio实现 基础架构升级 许超 #IstioCon 背景 l 核心业务线已完成微服务改造,数万个微服务对架构服务治理能力提出了更高的要求。 l 高级架构能力能否多语言、多框架支持? l 运维架构能力是否具备可移植性?是否能低成本复制新的产品线? l 可观测性不足,是否有通用机制提升产品线可观测性? Ø 部分模块上下游超时配置不合理,超时倒挂,集中管理调整成本比较高。 部分模块上下游超时配置不合理,超时倒挂,集中管理调整成本比较高。 Ø 多数模块对单点异常,慢节点等异常缺乏容忍能力,推动每个模块独立修复,成本高,上线周期长。 Ø 因重试导致雪崩,底层RPC框架需要重复建设来定制动态熔断能力。 Ø 升级一级服务建设中,发现很多模块单点、多点故障不能容忍,能否低成本解决? Ø 比如常用运维降级、止损能力各个产品线重复建设,方案差异大,OP期望运维能力在不同产品线之间能够通用化, 集中化管理,甚至做到自动决策 内核劫持:Loopback方案 Ø loopback地址的管理和分配。 Ø 需要打通业务和loopback之间的映射管 理。 RPC劫持:可扩展方案 Ø envoy启动后注册port到bns-agent。 Ø rpc框架查询bns-agent IP与治理策略数据。 Ø bns-agent判断否使用envoy进行服务治理。 Ø rpc框架根据反馈的IP,治理策略信息请求对 应IP,会cache数据,需要即时更新。0 码力 | 9 页 | 2.20 MB | 1 年前3
Envoy原理介绍及线上问题踩坑微服务架构通过细粒度的服务解耦拆分,带来缩短开发周期、独立部署、易扩展等好处的同时,同时带来对服务发现、负 载均衡、熔断等能力前所未有的诉求。 • 第一阶段为dubbo、SpringCloud侵入式开发框架,语言强相关。 • 非侵入服务网格最早为2016年Linkerd。 • 2017年,Goole、IBM、Lyft发布Istio。Istio目前为服务网格的事实标准,并且是2019年Github增长最快的TOP client backend 8123 Virtual outbound -15001 Envoy backend:8123 127.0.0.1:8123 zipkin Pod1 Pod2 业务容器 业务容器 Istio-proxy容器 Istio-proxy容器 Istio-init 容器 Istio-init 容器 Pod内共享网络 Pod内共享网络 Virtual inbound -15006 。 • 启动virtualoutbound/virtualinbound网络监听,每个工作线程都对此监听端口进行监听。 由内核随机挑选监听线程处理新连接。 • 进行连接负载均衡处理后,选择最终的业务监听器处理新连接。 • 之后对于此连接的所有处理都在此线程进行,包括下游数据集解码,路由选择、上游数据编 码发送等。 • 同时此工作线程还要处理定期观测信息与主线程同步(通过异步加回调)、线程内配置及集0 码力 | 30 页 | 2.67 MB | 1 年前3
Istio 在 Free Wheel 微服务中的实践Istio的架构和基本原理 • FreeWheel的Istio实践 • 未来工作 • FreeWheel的痛点 我们是谁? • FreeWheel 是一家为客户提供数字视频广告管理技术和服务的公司。其业务端产 品需要对接客户,提供视频广告投放优化界面,类似于 Web ERP,是一个典型 的三层架构。 微服务之痛 • 两年来,我们将若干复杂的Rails单体应用拆分、迁移到微服务架构, 逻辑用G • 在FreeWheel,我们已经有一套复杂的自定义认证、授权机制,为了 充分利用Istio,我们通过扩展Istio来整合这些系统,涉及两方面: • 扩展Sidecar:加入认证支持,提供了对业务系统的认证支持,将用 户相关信息以header的形式传入mesh,后续的授权、监控、限流 都可以用Istio原生的机制来完成 • 扩展Mixer:选择一部分流量来应用对应的授权逻辑 FreeWheel的Istio实践 Sidecar内的服务流量默认是不被劫持的,如果需要劫持需要添加额 外的annotation 扩展Mixer接入授权 • 右图为Mixer的基本原理,Template 是对Proxy上报的Attribute的特定处 理机制的框架,支持四类: • Preprocess: 汇总流量相关元数据 和环境(k8s)相关的元数据 • Report: 上报数据 • Check: 决策是否允许当前访问 • Quota: 决策容量是否足够0 码力 | 31 页 | 4.21 MB | 1 年前3
SolarMesh 基于Istio构建的流量监管平台服务变得非常多 Ø 版本变得非常复杂 Ø 上线十分痛苦 Ø 排查问题更难 Ø 解决手段更复杂 Ø 学的东西更多 Copyright © 2021 Cloud To Go 为什么我们需要服务网格 - 业务上k8s带来的问题 Ø 集群内的情况不可见 Ø 环境不统一,很难复现问题 Ø 集群中的网络限制 Ø ... Ø 学习k8s成高 Ø 测试方法发生了改变 Ø 有些问题只能在集群内出 现,难以测试 1. 流量告警 / 发现页面报错 2. 看图 3. 直接找到故障位置 Copyright © 2021 Cloud To Go 应用场景 - 灰度版本迁移 传统的版本升级方式 使用solarmesh的版本升级方式 1. 打好部署包 2. 等到半夜 3. 部署一个机器 4. 使用模拟的测试数据测试 1. 打好部署包即可部署 2. 用真实的数据测试 3. 挑个良辰吉日分配流量,宣布更新 •SLO,为SolarMesh提供服务质量检测的能力 SolarMesh的特点 Copyright © 2021 Cloud To Go 控制端与业务端隔离 控制面与数据面隔离 solarmesh坏了,istio还在,业务不会中断 istiod坏了,envoy还在,业务也不会中断 Copyright © 2021 Cloud To Go 无需重启 秒级切换 Copyright © 2021 Cloud0 码力 | 20 页 | 1.29 MB | 1 年前3
全栈服务网格 - Aeraki 助你在
Istio 服务网格中管理任何七层流量Aeraki - 在 Isito 服务网格中管理所有七层流量 ❏ Demo - Dubbo Traffic Management ❏ MetaProtocol - Service Mesh 通用七层协议框架 #IstioCon Protocols in a Typical Microservice Application Service Service Service Service Service 内嵌路由 ○ 修改内嵌路由后,Envoy 会重建 listener,导致业务出现短 暂中断。 #IstioCon MetaProtocol:Service Mesh 通用七层协议框架 大部分七层协议的路由、熔断、负载均衡等能力的实现逻辑是类似的, 没有必要每个协议都全部从头实现,重复造轮子。 ● MetaProtocol 框架在 Service Mesh 提供七层协议的通用能力: ○ 数据面:MetaProtocol 断等公共的基础能力 ○ 控制面:Aeraki + Istio 提供控制面管理,实现按请求 header 路由、灰度发布、地域感知LB、流量镜像等高级 流量管理能力。 ● 基于 MetaProtocol 框架扩展开发,只需要实现 encode、 decode 的少量接口即可在 Istio 中支持一个新的七层协议 ● 为七层协议如 Dubbo、Thrift 等等添加 RDS 能力 #IstioCon0 码力 | 29 页 | 2.11 MB | 1 年前3
Istio 与 Knative 踩坑实录酷家乐在服务网格和FAAS方向上的实践进展汇总4/25 生产环境Istio稳定运行 酷家乐于2018年8月29日在国际站生产环 境开始全面使用Istio 1.0.1 版本 486 天 服务范围 覆盖了不同业务链路的四十余个服务 40+ 服务 K8S安装环境 覆盖自建机房、IDC机房、云主机、海外云 服务等各种环境和不同的K8S版本 5 集群 服务网格实践进展5/25 Istio Community Istio 作为服务网格解决方案时的相关实践和经验9/25 隔离中间件 Istio 的价值和问题10/25 服务网格带来自由 Istio 的价值和问题 • 语言和技术栈的自由 • 中间件升级和切换的自由 • 不被供应商绑定的自由11/25 兼容新旧服务体系 Istio 的价值和问题12/25 兼容新旧调用链体系 Istio 的价值和问题13/25 灰度发布 Istio 的价值和问题14/25 Pilot、Mixer 性能瓶颈 Istio 的价值和问题16/25 总结 Istio 的价值和问题 • 已经可以稳定用在生产环境 • 工程架构收益 >> 性能资源损耗 • 根据组织和业务情况推广或改造,新旧体系可并存 • 超大规模应用,几个架构问题有待社区或业界解决17/25 分享主题:字号 Knative 的实践和瓶颈 /03 酷家乐在使用 Knative 作为 Serverless0 码力 | 26 页 | 1.35 MB | 6 月前3
13 Istio 流量管理原理与协议扩展 赵化冰Mesh 将各个服务中原来使用 SDK 实现的七层通信相关功能抽象 出来,使用一个专用层次来实现,Service Mesh 对应用透明,因此应用 可以无需关注分布式架构带来的通信相关问题,而专注于其业务价值。 流量控制:服务发现、请求路由、负载均衡、灰度发布、错误重试、 断路器、故障注入 可观察性:遥测数据、调用跟踪、服务拓扑 通信安全: 服务身份认证、访问鉴权、通信加密 Proxy Application default.svc.cluster.local cluster 配置的 host 为 127.0.0.1:9080。 13.请求被转发到 127.0.0.1:9080,即 reviews 服务进行业务处理。 10 Istio 协议支持现状 • 七层服务治理 – 服务发现(基于服务的逻辑名称) – LB、基于应用协议的错误码进行 Retries 和 Circuit Breaker – 基于七层协议 Protocol service name in message header some key:value pairs in message header 13 Istio 协议扩展:协议无关的通用路由框架 apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: reviews-route spec: hosts:0 码力 | 20 页 | 11.31 MB | 6 月前3
Istio控制平面组件原理解析sockets • 4. S初始化成功,通知P停止监听新的链接并优雅关闭未完成的工作 • 5. 在P优雅关闭过程中,S会从共享内存中获取stats • 5. 到了时间S通知P自行关闭 • 6. S升级为P • 官方博客:Envoy hot restart什么时候会进行热重启?监控envoy ü获取非正常退出状态 ü抢救机制触发 ü抢救令牌减少一个(总共10个) ü在2(n-1) * 200毫秒后执行(为什么不立即执行) Worker处理任务Jaeger架构设计Mixer阻塞对envoy的影响 压测环境: ü 模拟接口延迟响应 ü 使用hey压力工具 ü 相同压力 ü 先用hey进行预热 ü 从10份数据中取中位数解决方案 ü方案一 • 业务性能和日志之间的选择,出现阻塞,丢弃日志保性能 ü方案二 • 使用主题订阅模式,减少阻塞问题Istio_Ca——安全证书管理(ICA) u证书生成 u证书挂载 u证书过期证书生成 ü生成root-cert0 码力 | 30 页 | 9.28 MB | 6 月前3
在网格的边缘试探:企业 Istio 试水指南那Istio还用不用 • 如何安全的试用 Istio目标听众 • 我 • 乙方 • 给大型企业开发某某管理系统 • 系统资源好像没缺过 • 手上有各个时代的应用 • 没有能力/不想维护Istio源码 • 业务负载不算大Istio不能做什么 • 提高代码质量 • 增强负载能力 • 改善交付流程 • 客户充满 Love • 开发需求保持 PeaceIstio能做什么? • 几乎全部功能都无需侵入 • 监控服务质量 它能解决我们的问题么? • 有条件的,慎重的用选定试用功能 • 性价比的灵魂拷问: • 会给业务带来什么风险? • 需要什么程度的投入? • 可能出现什么故障? • 能有什么好处? • 个人看法 • 可观察性 • 路由 • 策略 • 安全试用服务范围 • 不要 All in! • 稳定——性能和业务! • 什么服务不怕死? • 什么服务可以慢? • 集群规模别太大。 • 能切换/回滚。 • 有完善的性能、功能测试方案。禁则 选定测试版本:研读开放Issue以及Release Notes。测试方案部署 • Istio部署 • 复查集群环境 • 调整资源参数 • 调整亲和性参数 • 调整HPA • 日志输出和调试开关复查 • Istio功能裁剪 • 备用业务部署 • 试用服务部署 • 服务YAML复查 • 缺省路由设置 • 根据功能需求,编写和部署 Istio相关功能YAML • 监控和告警部署 • 连接Alertmanager/… • 指标输出方案测试0 码力 | 19 页 | 11.41 MB | 6 月前3
共 14 条
- 1
- 2













