Service Mesh结合容器云平台的思考和实践
故障处理 • 故障注入 • … Mixer • 前提条件检查:安全认证,黑白名单, ACL检查 • 限流管理 • 遥测报告:日志监控 控制平面 数据平面 Istio-Auth • 服务间认证 • 终端用户认证Istio的核心组件 • Envoy 是一个高性能轻量级代理,它掌控了service的入口流量和出口流量,它提供了很多内置功能,如动态负 载服务发现、负载均衡、TLS终止、HTTP/2 金丝雀部 署)、流量管理(超时、重试、熔断)功能。Pliot接收用户指定的高级路由规则配置,转换成Envoy的 配置,使这些规则生效。 • Istio-Auth 服务间认证和终端用户认证功能Istio的Pilot功能解析Pilot官方架构Istio – EnvoyPilot-Agent的核心流程解读Pilot工作流程Pilot-Agent的部署形式 pilot-agent在pilot/cmd包下面,是个单独 d包下面,是个单独 的二进制。 pilot-agent跟envoy打包在同一个docker镜 像里,镜像由Dockerfile.proxy定义, Makefile(include了tools/istio- docker.mk)把这个dockerfile build成了 ${HUB}/proxy:${TAG}镜像,也就是 Kubernetes里跟应用放在同一个pod下的 sidecar。非Kubernetes情况下需要把0 码力 | 28 页 | 3.09 MB | 5 月前3Service Mesh 发展趋势(续) 蚂蚁金服 | 骑士到中盘路向何方?
要架构,还是要性能? 让我们来对ServiceMesh做一次灵魂拷问,首先:Istio的回答:架构优先,性能暂放一边 Part 1:ServiceMesh灵魂拷问一:要架构还是要性能? Istio 0.1 - 1.0 Mixer 0.1 - 1.0 In- process AdapterIstio Control Plan 为什么Istio选择Mixer和Proxy分离的架构? Part 1:Ser ConfigurationsOut-of-process Adapter 7/39 Istio的新回答:架构继续优先,性能继续放一边 Part 1:ServiceMesh灵魂拷问一:要架构还是要性能? Istio 1.1 – 1.2 Mixer 1.1 - 1.2Istio Control Plan 为什么Istio选择Out-of-Process Adapter? Part 1:Servic Infrastructure Backend ? Adapters Configurations 优点: • 架构更优雅,职责更分明,边界更清晰 • Out-of-Process Adapter不再是Istio的组成部分 • 安装部署 • 配置 • 维护Part 1:ServiceMesh灵魂拷问一:要架构还是要性能? Mixer v1 架构的优点 • 集中式服务: • 提高基础设施后端的可用性0 码力 | 43 页 | 2.90 MB | 5 月前3大规模微服务架构下的Service Mesh探索之路
蚂蚁有大量的扩展和定制化需求 • 我们非常认可envoy在数据平面上的表现开源方案选择之第二代Service Mesh Istio • 第一选择,重点关注对象 • 奈何迟迟不能发布生产可用版本 • 性能和稳定性远远不能满足蚂蚁的 要求 • 但我们非常认可Istio的理念和方向 Conduit • 只支持k8s,而蚂蚁尚未普及k8s • 数据平面由Rust编写,过于小众,难于 从社区借力。 司的选择之一:自研 华为:CES Mesher • 使用Golang编写 • 由go chassis演进而来 • 走的是已有类库->加proxy->再加 控制平面的路线 • 部分对接Istio • 细节暂时不清楚,即将开源 新浪微博:Motan Mesh • 也是使用Golang编写 • 全新实现(原有类库是基于Java) 老成持重的稳健思路:以proxy为切入口,第 一时间获取跨语言和技术栈下沉的红利,立足 数据平面选择Envoy:成熟产品,符合 腾讯语言体系,内部广泛使用 • 控制平面据传“挣扎了一下”,最终还 是选择Istio,进行定制和扩展,解耦k8s国内公司的选择之三:另辟蹊径 UCloud:Service Mesh • 非常有意思的轻量ServiceMesh实践 • 从Istio中剥离Pilot和Envoy • 去掉Mixer和Auth • 定制Pilot,实现ETCD Adapter0 码力 | 37 页 | 7.99 MB | 5 月前3Service Mesh是下一代SDN吗:从通信角度看Service Mesh的发展
Service Mesh是下一代SDN吗? 从通信的角度看Service Mesh的发展 赵化冰 中兴通讯 软件专家/Istio Committer 2019.10.26 Service Mesh Meetup #7 成都站什么是Service Mesh?- by Willian Morgan(Buoyant) A service mesh is a dedicated infrastructure 复杂的服务拓 扑,服务网格负责在这些拓扑中实现请求的可靠传递。 在实践中,服务网格通常实 现为一组轻量级网络代理,它们与应用程 序一起部署,但对应用程序透明。什么是Service Mesh?- by Istio 服务发现 负载均衡 流量控制 ... 黑白名单 限流 ... 身份认证 通信加密 权限控制 ... 调用追踪 指标收集 ...什么是Service Mesh?- 从网络的视角 Service Mobile DexMesh Ingress Pod Microservice Envoy (Telemetry, Policy check) 配置数据(服 务信息,路由 信息等) 定制Istio组件 应用微服务 业务请求 控制流 图例说明 Pilot Mixer APP: Canary Deployment K8s API Server 管控规则 灰度发布 网格增强组件0 码力 | 27 页 | 11.99 MB | 5 月前3七牛容器云ServiceMesh实践
优势 • 兼容Istio生态,融入Service Mesh生态 • 南北向流量使用Envoy • 兼容Kubernetes标准Restful接口 • 统一的Kubernetes管理接口 • Gimbal生态 • 多集群入口流量整合管理 • 劣势 • 缺少大规模落地案例 • 功能/非功能仍需加强Contour & Istio • 南北向流量 • API版本共存(Istio & Kubernetes Kubernetes Ingress) • 东西向流量 • Istio支持全量功能 • Contour支持Tracing能力 • 数据面共存 • 共用边车组件Envoy七牛现有Service Mesh体系 • Istio产品化 • 东西流量产品化 • 南北流量产品化 • TLS管理优化 • Contour增强 • 入口流量管控 • 跨集群调度 • 发展策略 • API版本兼容两种方式 80%以上产品线部署Contour & Istio • 涉及K8S集群约20+集群 • 功能迭代 • 先南北,后东西 • 先原生,后二开 • 先管控面,后数据面落地场景—Spock测试平台 • 历史问题 • 分布式系统性能测试问题 定位难 • 多版本并发测试 • 故障注入较困难(代码侵 入性强) • 测试环境不稳定,后端Pod 频繁重启 • 解决方案 • Contour产品化 • Istio的灰度发布和流量管理0 码力 | 15 页 | 3.86 MB | 5 月前3在Kubernetes上部署高可用的Service Mesh监控
cluster.Voila!Monitoring your service meshMonitoring your service mesh - istio ● https://www.katacoda.com/courses/istio /deploy-istio-on-kubernetes ● Mixer, pilot and envoy exposes prometheus metrics to collect data from istio components. ● Deploy example bookinfo app using istio.Monitoring your service mesh - istio ● https://www.katacoda.com/courses/istio /deploy-istio-on-kubernetes ● Mixer to collect data from istio components. ● Deploy example bookinfo app using istio.Monitoring your service mesh - istio ● https://www.katacoda.com/courses/istio /deploy-istio-on-kubernetes ● Mixer0 码力 | 35 页 | 2.98 MB | 5 月前3蚂蚁金服Service Mesh渐进式迁移方案
5 总结 DNS寻址方案的后续规划ü 对未来长期目标的认可 • Service Mesh(带控制平面,如Istio) • Kubernetes • 微服务 ü 现实中有很多挑战 • 还有很多应用没有实现微服务化 • 还有很多应用没有运行在kubernetes之上 • Istio目前还不够稳定,也无法原生支持我们的规模 • 现有系统中的众多应用不可能一夜之间全部迁移 ü 最重要的:平滑迁移 Mesh (Istio模式) 部署在K8s上 Service Mesh (Sidecar模式) 部署在 非k8s上 Service Mesh (Istio模式) 应用终极形态 应用现状 1 1 1 2 2 2 3 4 4 4 比较理想,绝大部分 投入最终都将保留 Service Mesh (Sidecar模式) Service Mesh (Istio模式) 带完善的控制 带完善的控制 平面,如Istio 只有Sidecar, 直接集成周边 不现实 Istio的非k8s支 持投入产出比 太差 背景1:原生Istio无法支撑我们的规模 背景2:k8s(Sigma3.1)将加快普及 K8s普及在即, 不适合再大面积 铺开,快速会师ü 和路线1的核心差别 • 是先上k8s,还是先上Service Mesh • 而且是终极形态的Service Mesh(意味着更偏离目标)0 码力 | 40 页 | 11.13 MB | 5 月前3Service Mesh 在蚂蚁金服生产级安全实践
证书管理流程基于 Secret Discovery Service Sidecar 的证书管理方案 Istio With Envoy SDS Istio 基于 Envoy 的 SDS方案,实现了 SDS Server 和 SDS 配置管理。Istio 方案中选择 UDS 通信方案,Istio的 方案证书管理流程由 Citadel , Citadel Agent , Pilot 协同完成 ,Citadel 会先检查缓存中是否已有证书,如果不 存在的话,会基于Citadel 启动时配置的二级ROOTCA签发证书基于 Secret Discovery Service Sidecar证书管理方案 Istio With Envoy SDS Benefits: The private key never leaves the node: It is only in the Citadel agent SDS 证书管理方案 ISTIO Policy | Mesh Policy ScopeConfigService Mesh Sidecar 的TLS 生产级落地实践 开关切换 RPC 通信场景下,为保证平滑无损的TLS切换能力,需 要分别控制 Server (Provider) 和 Client (Consumer)端的 TLS 行为 对于Server 端利用Istio 的Policy CRD0 码力 | 19 页 | 808.60 KB | 5 月前3严选 ServiceMesh 实践
概念正式提出9/24 云原生 Service Mesh 框架 - Istio • 由 Google,IBM 和 Lyft 联合开发,Go 语 言,与 K8s 一脉相承且深度融合 • K8s 提供了部署、升级和有限的运行流量管 理能力 • Istio 补齐了 K8s 在微服务治理上的短板 (限流、熔断、降级、分流等) • Istio 以 Sidecar 的形式运行在 Pod 中, 自动注入,自动接管流量,部署过程对业务 • 提供了完整的 Service Mesh 解决方案 • 数据面:Envoy • 控制面:Pilot,Mixer,Citadel,Galley10/24 功能视角 - 服务治理能力 – 基于Istio+Envoy 类型 功能 能力提供方 服务调用方(Client) 服务提供方(Server) 服务注册与发现 注册发现:云外基于 Consul,云内基于 K8s 默认的 ETCD √ 调用控制 当前演进方向 整体基于 Envoy+Istio 方案: • 数据面以 Envoy Proxy 作为代理组件 • 控制面以 Pilot 为核心组件 • 平台开放与扩展主要通过 Kubernetes CRD与Mesh Configuration Protocol(简称为 MCP,一套标准 GRPC 协议) • 高可用设计主要基于 Kubernetes 及 Istio 机制实现14/24 Service0 码力 | 25 页 | 2.07 MB | 5 月前3Service Mesh 高可用在企业级生产中的实践
• 流量控制 • 安全 Service Mesh 的优缺点 缺点 • 增加了复杂度 • 整体链路的复杂度 • 操作运维的复杂度 • 需要更专业的运维技能 • 带来延迟 • 平台的适配 Istio-Handbook:Service Mesh 概述6/总页数 互联互通,平滑迁移 Spring Cloud & Dubbo Service Mesh Monolithic 混合微服务架构 微服务高可用设计手段 – 公称断路器28/总页数 治理策略 & 高可用 • 微服务高可用设计手段 – Istio 断路器29/总页数 治理策略 & 高可用 • 微服务高可用设计手段 – Hystrix 断路器30/总页数 治理策略 & 高可用 • 微服务高可用设计手段:Istio vs Hystrix Istio Hystrix 运作方式 黑盒方式 白盒方式 熔断粒度 实例级别 实例级别+方法级别 实例级别+方法级别 半开状态 不支持 支持 最大熔断比例 支持 不支持 fallback 不支持 支持31/总页数 治理策略 & 高可用 • 微服务高可用设计手段:Istio vs Hystrix Istio Hystrix 运作方式 黑盒方式 白盒方式 熔断粒度 实例级别 实例级别+方法级别 半开状态 不支持 支持 最大熔断比例 支持 不支持 fallback 不支持 支持32/总页数 治理策略0 码力 | 38 页 | 1.38 MB | 5 月前3
共 25 条
- 1
- 2
- 3