蚂蚁金服Service Mesh渐进式迁移方案
步步为营,扩大战果 • 杜绝一刀切k8s和Service Mesh落地方案演进路线 部署在 非k8s上 不是Service Mesh形态 部署在K8s上 非SM 部署在 非k8s上 Service Mesh (Sidecar模式) 部署在K8s上 Service Mesh (Istio模式) 部署在K8s上 Service Mesh (Sidecar模式) 部署在 非k8s上 Service Mesh 不现实 Istio的非k8s支 持投入产出比 太差 背景1:原生Istio无法支撑我们的规模 背景2:k8s(Sigma3.1)将加快普及 K8s普及在即, 不适合再大面积 铺开,快速会师ü 和路线1的核心差别 • 是先上k8s,还是先上Service Mesh • 而且是终极形态的Service Mesh(意味着更偏离目标) ü 好处是第一步(非k8s上向Sidecar模式演进)非常自然 缺点是再往后走 • 由于没有k8s的底层支持,就不得不做大量工作 • 尤其istio的非k8s支持,工作量很大 • 而这些投入,在最终迁移到k8s时,又被废弃 ü 结论: • 不符合蚂蚁的远期规划(k8s是我们的既定目标) • 会造成投资浪费(k8s铺开在即) 演进路线2分析 部署在 非k8s上 Service Mesh (Sidecar模式) 部署在 非k8s上 Service Mesh0 码力 | 40 页 | 11.13 MB | 5 月前3Service Mesh 发展趋势(续) 蚂蚁金服 | 骑士到中盘路向何方?
Mixer的变动不影响Proxy • Proxy无需和Adapter耦合 • 读取配置 -> 连接k8s/Galley • Adapter的运行时资源开销 • 不受Adapter增减/更新/升级影响 • 保持Proxy代码简单 • 保持Proxy代码简单 • 数据平面可替换原则 Kubernete s API Server Adapters ConfigurationsOut-of-process Mixer V2 Architecture https://docs.google.com/document/d/1QKmtem5jU_2F3Lh5SqL p0IuPb80_70J7aJEYu4_gS-s/edit#heading=h.hvvcgepdykro Owner: mtail@google.com Work-Group: Policies and Telemetry Short self link: v1的优点不应该成为Mixer v2的缺点 优点: • 架构优雅,职责分明,边界清晰 • Mixer的变动不影响Proxy • Proxy无需和Adapter耦合 • 读取配置 -> 连接k8s/Galley • Adapter的运行时资源开销 • 不受Adapter增减/更新/升级影响 • 保持Proxy代码简单 • 保持Proxy代码简单 • 数据平面可替换原则 • 集中式服务:0 码力 | 43 页 | 2.90 MB | 5 月前3Service Mesh的延伸 — 论道Database Mesh
分布式 NewSQLNewSQL的分类 New Architecture Transparent Sharding Middleware Database-as-a-Service What's Really New with NewSQL?数据库中间层的优势 系统 •事务 运维 • DBA 开发 • SQL数据库中间层应具备的能力 分片化 多副本 数据一致性 弹性化 治理能力 App3数据分片:引入中间件 App1 M1 App2 App3 S2 M2 M3 S1 S3 数据库中间件 write sync read读写分离 S App1 M App2 App3 write sync read数据分片 + 读写分离 App1 S1 App2 App3 M2 sync read S2 S3 M1 M3 write数据分片 + 读写分离:引入中间件 读写分离:引入中间件 App1 M1 App2 App3 S2 M2 M3 S1 S3 数据库中间件 write sync read分布式事务:定义 传统事务:ACID Atomicity - 原子性 Consistency - 一致性 Isolation - 隔离性 Durability - 持久性 柔性事务:BASE Basically Available - 基本可用 Soft0 码力 | 35 页 | 4.56 MB | 5 月前3Service Mesh 微服务架构设计
Java SE 7.0 2014年 Java SE 8.0 2017年 Java SE 9.0 2018年 Java SE 10 Java SE 11应用架构演进史 C/S (Client/Server) B/S (Browser/Server) MVC (Model View Controller) SOA (Service-Oriented Architecture) 注 Containers Middlewar e Runtime Data Application s FaaS Function Hardware Virtualizati on OS Containers Middlewar e Runtime Data Application s SaaS Function Hardware Virtualizati on OS Containers Middlewar e Runtime Data Application s PaaS Function Hardware Virtualizati on OS Containers Middlewar e Runtime Data Application s CaaS Function Hardware Virtualizati on OS0 码力 | 36 页 | 26.53 MB | 5 月前3大规模微服务架构下的Service Mesh探索之路
以蚂蚁金服的标准,稳定性的要求自然是很高 • 高可用方面的要求很非常高 ü 部署的要求 • 需要用于多种场合:主站,金融云,外部客户 • 需要满足多种部署环境:虚拟机/容器,公有云/私有云,k8s • 需要满足多种体系:Service Mesh,Sofa和社区主流开发框架 Service Mesh落地要面临的实际要求选择开源产品,还是选择自研? 起点:开源 起点:自研 全新打造;或依托现有SDK • 第一选择,重点关注对象 • 奈何迟迟不能发布生产可用版本 • 性能和稳定性远远不能满足蚂蚁的 要求 • 但我们非常认可Istio的理念和方向 Conduit • 只支持k8s,而蚂蚁尚未普及k8s • 数据平面由Rust编写,过于小众,难于 从社区借力。 • 同样存在技术栈问题 • 公司和产品在社区知名度和影响力有限国内公司的选择之一:自研 华为:CES Mesher • 控制平面据传“挣扎了一下”,最终还 是选择Istio,进行定制和扩展,解耦k8s国内公司的选择之三:另辟蹊径 UCloud:Service Mesh • 非常有意思的轻量ServiceMesh实践 • 从Istio中剥离Pilot和Envoy • 去掉Mixer和Auth • 定制Pilot,实现ETCD Adapter • 脱离k8s运行Sofa Mesh在技术选型时考虑 Envoy • 数据平面:Envoy最符合要求0 码力 | 37 页 | 7.99 MB | 5 月前3Service Mesh的实践分享
vs. Daemonset + remote proxy Sidecar(in Pod) Daemonset 对容器的影响 影响大。Pod中增加sidecar容器,加大整个Pod的资源需 求,对K8s的调度形成压力,特别是在资源紧张的情况下; 而且还容器导致资源浪费(sidecar的使用率问题) 影响小。宿主机预留部分资源启动daemonset 即可 运维难度 难度大。Sidecar故障会影响同一个pod的业务容器,同 Mixer的中央节点问题 • 传统基于日志收集的tracing方 案足够成熟 • 内部实现一套可插拔的鉴权框 架也能接受混合部署 vs. 绑定K8s • 历史原因导致长期都会物理机 和容器并存,内部需求必须要 同时支持物理机和云 • 绑定K8s能够享受K8s的红利, 但也限制了使用范围 +服务治理程度更接地气 • 不停的迭代、落地、反馈,打 造一系列的实用的治理功能 • 规则路由、标签路由、邻近机房 吃光? • 根据来源Pod IP进行流量统计 • 超过流量阈值临时切换到remote proxy • 返回的消息带特殊header,SDK感知该header并进行切换 • 被切走的客户端每10s切换回来local proxy,若仍然超限会再被切走 • 默认单IP限流值是2w qps今年计划(Roadmap) 我是作者名称Roadmap • 智能参数治理 • 实时反馈 • 历史指标 •0 码力 | 30 页 | 4.80 MB | 5 月前3进击的 Traefik | 云原生边缘路由器探秘
10.26 Service Mesh Meetup #7 成都站 云原生边缘路由器探秘杨川胡(阳明) 知群后台负责人,原小米视频后台高级研发 ,《Prometheus 深入浅出》作者,「k8s技 术圈」社区作者,现阶段专注于云原生技术 领域,希望成为一个有产品思维的工程师1 Traefik 介绍 2 Traefik 2.0 核心概念 3 Traefik With Docker 4 Ingress metadata: annotations: kubernetes.io/ingress.class: 'traefik' spec: rules: - host: whoami.k8s.local http: paths: - path: "/whoami" backend: serviceName: webapp servicePort: 80Ingress CRD apiVersion: traefik-webui namespace: kube-system spec: entryPoints: - web routes: - match: Host(`traefik.k8s.local`) kind: Rule services: - name: traefik port: 8080开启 ACME args: - --entrypoints.web.Address=:800 码力 | 35 页 | 8.58 MB | 5 月前3严选 ServiceMesh 实践
概念正式提出9/24 云原生 Service Mesh 框架 - Istio • 由 Google,IBM 和 Lyft 联合开发,Go 语 言,与 K8s 一脉相承且深度融合 • K8s 提供了部署、升级和有限的运行流量管 理能力 • Istio 补齐了 K8s 在微服务治理上的短板 (限流、熔断、降级、分流等) • Istio 以 Sidecar 的形式运行在 Pod 中, 自动注入,自动接管流量,部署过程对业务 服务治理能力 – 基于Istio+Envoy 类型 功能 能力提供方 服务调用方(Client) 服务提供方(Server) 服务注册与发现 注册发现:云外基于 Consul,云内基于 K8s 默认的 ETCD √ 调用控制 协议支持:HTTP 1.X/2.X,GRPC,WebSocket,Dubbo, Thrift √ 路由控制:静态路由、动态路由、流量染色、分流控制等 √ 负载均衡:支持 模式采用方案2进行优化。23/24 服务治理平台 – 升级严选服务治理能力 • 常用服务管理功能:服务上下线、服务实例管理 • 服务生命周期管控与查询 • 服务扩缩容:服务副本数、配额、扩缩容策略; 调整后自动应用至 K8s 集群 02.服务管控 • 服务监控项设置并对接基础监控平台 • 服务质量指标(SLI)定制并监控:如 Latency、QPS 等 04.服务监控 • 借助APM的能力 • 发现异常调用链0 码力 | 25 页 | 2.07 MB | 5 月前3蚂蚁金服 API Gateway Mesh 思考与实践
的定义 /013/21 LB\Ingress API Gateway Sidecar App POD Sidecar App POD Traffic Control Plane K8S Cluster API Gateway in Service Mesh4/21 API Gateway Service Mesh vs 南北流量(内外) API Gateway vs Service … Filter Pipeline Extension JavaScript Lua GoPlugin ScriptFilter File Istio xds rest api k8s configmap config file mobile openapi mgs15/21 可灰度 可回滚 可监控 蚂蚁金服「三板斧」 API Gateway Mesh 落地挑战 风险 sian->protobuf ead->goroutine sigma 已知的风险都不是风险16/21 M O S N A P P Gateway LB Spanner x % x*(100-y) % x*y % 100-x % X:去中心的比例 Y:Mesh 化的比例 M O S N A P P A P P A P P LoadBalancer Spanner http response0 码力 | 22 页 | 1.72 MB | 5 月前3Service Mesh 在蚂蚁金服生产级安全实践
SDS Benefits: The private key never leaves the node: It is only in the Citadel agent and sidecar’s memory. The secret volume mount is no longer needed: The reliance on the Kubernetes secrets is 道 密钥更新通道 安全Sidecar 的认证能力中依赖密钥等敏感信 息,在参考社区SDS方案的基础上,实现敏感 信息的管理及安全下发通道。 用户将密钥等信息通过CRD方式提交至K8s, 通过K8s的RBAC方式控制访问权限 拓展Citadel Watch 密钥相关的CR,筛选后 下发至对应的Citadel Agent节点 安全Sidecar 与 Citadel Agent0 码力 | 19 页 | 808.60 KB | 5 月前3
共 25 条
- 1
- 2
- 3