严选 ServiceMesh 实践
Envoy 2017年9月15日 发布 最新版本:0.7.1 nginmesh 2016年9月29日第一次被公开提出 Service Mesh 概念正式提出9/24 云原生 Service Mesh 框架 - Istio • 由 Google,IBM 和 Lyft 联合开发,Go 语 言,与 K8s 一脉相承且深度融合 • K8s 提供了部署、升级和有限的运行流量管 理能力 • Istio 6ms左右12/24 性能视角 – cNginx vs Envoy(优化后) • 优化方案 • 采用 sriov 容器网络 • Envoy:将1.13版本中 connection loadbalancer 特性移植到 1.10.x 版本 • Envoy 优化后在低并发(<64)的情况下,容器网络 client sidecar 优于 VM 网络直连 • Envoy 优化后在高并发(>=64)的情况下 CICD • 单元测试 • 性能基准自动测试 • 监控报警 • 版本升级机制 • Envoy 热更新机制 • 灰度发布机制:业务灰度+流量灰度 • 演练测试 • 业务回归验证20/24 一些坑 • Envoy 目前编译版本存在 Bug • 在 Istio pilot 升级到加入 accesslog 相关配置下发功能版本后,Envoy 在一定压力访问或 有客户端主动断开请求时,会进入0 码力 | 25 页 | 2.07 MB | 5 月前3蚂蚁金服网络代理演进之路
防攻击蚂蚁金服网络接入十年变迁 2010年前部署商用设备 前世 01 2010 开始网络代理白盒 化,定制业务逻辑,软 硬件一体解决方案 自研 02 2015 年无线通道协议,安 全升级, 连接收编 All in 无线 03 PC时代 移动时代 万物互联云原生时代 2018 年协议,安全持续升 级(QUIC,MQTT,国密), 云原生 再启程 03前世 F5 BigIP 支持蚂蚁LDC架构,三地五中心容灾架构 • 全面上线SSL加速卡,提供软硬件一体加速方案 2015 • All in 无线,通信通道全面升级(MMTP,MTLS协议) 2016 • 安全防护能力提升,WAF,流量镜像 2018至 今 • 通信协议,架构,安全再次升级(物联终端接入,QUIC协议,国密,可信计算, 海外加速,云原生)金融级三地五中心容灾架构(LDC) 单机房 LDC 同城双活 时,兼容广泛使用的RSA证书 按需握手 • 业务可根据需求灵活选择明文 或密文传输,提升业务效率 动态Record Size • 平衡吞吐与时延 高效 优化 灵活 TLS扩展安全合规能力持续升级 国密算法 • 拥抱监管 • 安全可控 • 金融科技 AntTLS库 • 基于OpenSSL • 全面拥抱TLS1.3 • 国密优化实现,国密单证书标准支撑 • 支持SGX等可信机制 • 多硬件卡Engine0 码力 | 46 页 | 19.93 MB | 5 月前3金融级云原生 PaaS 探索与实践
高性能6/20 业务背景 业务诉求 • 运维成本 突发流量应用 | 机房 生命周期 • 运维效率 大规模下基础设施稳定性 • 业务 Mesh 化 精细化流量控制 基础组件升级 • 业务可复制 业务敏捷 SaaS 面向站点级别输出7/20 PaaS 能力 • 面向多租户多环境; • 基础资源管控; • 应用发布运维体系; • 业务实时监控,日志收集; 基于统一管控背景下的 Dockerfile 管理和生成; • 基于组件关联的 FedAppInstance + revision 版本控制; • 快速构建能力 - binary2Image 能力; 发布运维体系15/20 发布运维体系 发布运维 • 基础运维能力下沉; 原地升级,分组驱动; 流量控制; • 多应用有序发布; • 应用 ReleasePipeline 管理; 应用依赖项顺序; LoadBalancer Controller 创建 更新 等待3s 执行升级 ReadinessGate=true 添加Pod IP 注册Pod IP 添加finalizer ReadinessGate=false 删除Pod ip 注销 Pod IP 摘除 finalizer 处理剩余请求 升级完成 ReadinessGate=true 添加Pod IP 注册 Pod IP0 码力 | 20 页 | 1.71 MB | 5 月前3蚂蚁金服ServiceMesh数据平面 SOFAMosn深层揭秘
SOFA/NodeJS/C++/Python/.. • 业务低成本融入服务,运维体系为什么要自研Golang版本ServiceMesh 2 Ø跨团队协作需要考虑技术栈落地成本 ü 参与团队分别使用C,Golang,Java等多种技术栈 Ø基于蚂蚁SOFA体系的Mesh化思考 ü 无法保证上下游应用同时升级到Mesh模式 ü 基于RPC内容的流量调度 ü 升级窗口有限,方案必须简单高效 Ø运维体系,容器化建设等方面适配 ü 蚂蚁运维架构建立在流量调度的基础上 能力核心能力 1 网络处理 •网络编程接口 •链接管理 •事件机制 •Metrics 收集 •TCP 代理 •TLS 支持 •TProxy 支持 •平滑 reload •平滑版本升级 多协议 •SOFA RPC •HTTP 1.x (待优化) •HTTP 2 (待优化) •Dubbo (研发中) •HSF (研发中) •On TLS 核心路由 •支持 virtual 负载策略Highlights 2 ØX-Protocol: 支持 RPC on HTTP2的通用方案(完善中) Ø支持平滑升级中协议无关存量链接迁移 Ø支持指定 / 更新 Downstream / Upstream 协议配置 ØSOFARPC 支持 Upstream 反向请求Istio集成 3 Ø支持 Istio 0.8 版本 Pilot V4 API ü支持xDS on ADS Ø支持全动态配置启动运行 Ø支持API核心功能点,不断完善中扩展机制0 码力 | 44 页 | 4.51 MB | 5 月前3SOFAMOSN持续演进路径及实践分享
0.4.0 Ø TCP代理/7层通用代理 Ø 简单匹配路由 Ø 集群管理 & 基本负载均衡(RR、 RANDOM) Ø SofaRpc及HTTP/1.1、 HTTP/2.0支持 Ø 进程平滑升级 Ø SOFAMesh集成,支持 xDS on ADS Ø X-Protocol协议扩展机制, 以及Dubbo支持 Ø 支持network/stream filter 扩展 Ø 支持WRR负载均衡 TLS扩展支持,支持自定义 证书获取 Ø RBAC Ø Tracing框架,已支持 SOFA Tracer Ø Metrics扩展,已支持 prometheus Ø 支持Mixer filter Ø 平滑升级迁移支持metrics Ø Access log Ø Listener log、Default log Ø IO、协议、前后端核心 metrics技术案例 – 协议自动识别 TLS链接 核心实现思路: 0优化 优化思路:适配MOSN框架,复用官方实现核心结构体和解析流程 Ø 框架适配 ü IO框架 ü 内存复用框架 ü workerpool协程池框架 Ø 功能支持 ü 请求流式处理模式 ü 热升级 ü metrics ü 修复HTTP/2 headers key不支持冒号开头字段的问题 ü 适配envoy的HTTP2配置项 Ø 代码管理 ü fork x/net/http2 代码 ü 新增mosn_http20 码力 | 29 页 | 7.03 MB | 5 月前3Service Mesh 发展趋势(续) 蚂蚁金服 | 骑士到中盘路向何方?
Mixer的变动不影响Proxy • Proxy无需和Adapter耦合 • 读取配置 -> 连接k8s/Galley • Adapter的运行时资源开销 • 不受Adapter增减/更新/升级影响 • 保持Proxy代码简单 • 保持Proxy代码简单 • 数据平面可替换原则 Kubernete s API Server Adapters ConfigurationsOut-of-process Mixer的变动不影响Proxy • Proxy无需和Adapter耦合 • 读取配置 -> 连接k8s/Galley • Adapter的运行时资源开销 • 不受Adapter增减/更新/升级影响 • 保持Proxy代码简单 • 保持Proxy代码简单 • 数据平面可替换原则 • 集中式服务: • 提高基础设施后端的可用性 • 为前提条件检查结果提供集群级别的全局2级缓存 • Support WebAssembly (WASM) in Envoy - https://github.com/envoyproxy/envoy/issues/4272 - 计划在1.12版本提供(1.11版本发布于7月12日) - envoy-wasm项目:Playground for Envoy WASM filter - https://github.com/envoyproxy/envoy-wasm0 码力 | 43 页 | 2.90 MB | 5 月前3七牛容器云ServiceMesh实践
统一的Kubernetes管理接口 • Gimbal生态 • 多集群入口流量整合管理 • 劣势 • 缺少大规模落地案例 • 功能/非功能仍需加强Contour & Istio • 南北向流量 • API版本共存(Istio & Kubernetes Ingress) • 东西向流量 • Istio支持全量功能 • Contour支持Tracing能力 • 数据面共存 • 共用边车组件Envoy七牛现有Service 共用边车组件Envoy七牛现有Service Mesh体系 • Istio产品化 • 东西流量产品化 • 南北流量产品化 • TLS管理优化 • Contour增强 • 入口流量管控 • 跨集群调度 • 发展策略 • API版本兼容两种方式 • 数据面优先,控制面按需迭代七牛容器云Service Mesh发展 • 产品发展 • 依托容器云PaaS中台 • 辐射业务线:Spock,Kodo,Dora等 • 先内部普及踩坑,后私有云能力产品化 涉及K8S集群约20+集群 • 功能迭代 • 先南北,后东西 • 先原生,后二开 • 先管控面,后数据面落地场景—Spock测试平台 • 历史问题 • 分布式系统性能测试问题 定位难 • 多版本并发测试 • 故障注入较困难(代码侵 入性强) • 测试环境不稳定,后端Pod 频繁重启 • 解决方案 • Contour产品化 • Istio的灰度发布和流量管理 • Istio的Tracing产品化落地场景—云存储系统0 码力 | 15 页 | 3.86 MB | 5 月前3蚂蚁金服双十一 Service Mesh 超大规模落地揭秘
社区产品 蚂蚁产品6 二、为什么我们要 Service Mesh 为什么要 Service Mesh为什么要 Service Mesh-现状 5.客户端中间件版本的统一 9% 3.流量调度的诉求 18% 4.框架不断升级 14% 2.机器资源逐年增加 27% 1.业务和框架耦合 32%8 因为我们要解决在 SOA 下面,没有解决但亟待解决的: 基础架构和业务研发的耦合,以 现有框架升级 容器如何替换 MOSN 如何升级 需要业务改代码吗 能回滚吗? 没资源给你做 buffer 能不能快一点 升级过程不要影响我业务 其他你随便 1问 2问 3问App 容器 14 方案落地-框架升级前 应用代码 SOFABoot SOFABoot/SOFARPC API JVM SOFABoot 研发框架App 容器 15 方案落地-框架升级后 应用代码 4C2G? Elastic Heap CPU超卖17 方案落地-MOSN 升级策略-有感升级 MOSN V1 APP MOSN V1 APP MOSN V2 APP 关闭 Pod 升级容器 容器快速接入了,但是 MOSN 有问题 / Feature 如何升级? 正常运行中18 方案落地-升级策略-无感升级 MOSN V1 APP MOSN V1 APP MOSN V20 码力 | 26 页 | 2.71 MB | 5 月前3阿里巴巴超大规模神龙裸金属 Kubernetes 集群运维实践
获取 PPT自我介绍 •嵌入式、微服务框架 •2017 年加入阿里巴巴,负责阿 里集团数十万集群节点规模化运 维管理系统的研发工作 •2019 年参与集团全面上云项目 并经历了整体架构的云原生升级 演进,稳定支撑双11峰值流量分享内容 • 阿里全站上云 • 神龙 (what & why) • 规模化集群运维实践 • 未来工作云原生全景图阿里全站上云 • 2018年底:阿里经济体全面上云 (数十个集群),节点数量多 (数十万节点) • 业务线多、应用数量多、应用类型复杂 (有状态、无状态、多语言) • 基础环境复杂 • 大规模 在线、离线 混部 (运维打通) • 装机模板、OS版本、内核版本多;内核补丁、参数不同;其他如网卡中断打散 • 稳定性要求高 • 性能、宕机、夯机、抖动系统架构 • 基础监控 • 秒级、分钟级监控 • 内核性能指标采集 • 监控大盘 • 在线率 • 宕机关联度分析 • 宕机趋势 • 机房、单元、分组 • 机型、硬件特征 • 内核版本、hotfix 一致率 • 宕机根因分析诊断 • 硬件故障、运维事件 • vmcore 归类分析 • 内核错误日志分析Machine Operator • 全生命周期 • 导入 • 下线 • 维护 • 组件终态 • 安装 • 升级 • 回滚 • 故障自愈 • 运维事件 • 业务置换Machine0 码力 | 21 页 | 7.81 MB | 5 月前3陌陌Service Mesh架构实践
也逐渐暴露出来9/24 问题 /02 借助Service Mesh解决现有架构痛点10/24 架构痛点分析 服务治理能力滞后 非Java应用 Java应用 SDK迭代进度缓慢 SDK推广升级缓慢 危害 无法实现架构统一 稳定性受损、引发故障 架构方案受限 …11/24 引入Service Mesh 是否足够成熟 是否有替代方案 是否可接受成本 是否能兑现价值 观察阶段 使用Java开发 数据平面Agent14/24 整体架构 数据平面 • 现有协议的流量转发 • Agent平滑升级机制 控制平面 • 轻量的Pilot Proxy • 向Istio的标准协议靠拢 重点目标 长期规划15/24 数据平面实践细节 • 部署方式 • 升级方式 • 容灾方式 • 性能问题 • 资源问题 • 兼容问题 关键设计 关键问题16/24 数据平面部署方式 • 与业务进程相同Pod不同Container 陌陌微服务容器化部署比例在80%以上 并且还在进一步推进 业务接入方式 • 研发人员:升级SDK版本 • SRE:发布系统配置发布项 sidecar模式部署17/24 数据平面升级方式 – 平滑升级机制 平滑要求 • 业务进程不重启 • 流量保持不变 方案选择 • FD迁移 vs 哨兵集群 原理 • sendmsg / recvmsg接口发送FD0 码力 | 25 页 | 1.25 MB | 5 月前3
共 25 条
- 1
- 2
- 3