Service Mesh结合容器云平台的思考和实践微服务结合容器云平台的思考和实践 2018.06.25 徐运元关于我 2008年毕业于浙江大学,曾在思科和浙大网新有超过 9年的工作经验和5年的云计算领域工作经验,带领团 队完成公司第一代基于Kubernetes的云平台开发和第 二代基于Kubernetes的DevOps云平台开发 来自于浙江大学SEL实验室目录 CONTENTS Kubernetes平台下的微服务演进 Pilot核心功能解读 易于访问的外围(负载均衡) • 服务注册和发现 致富问题 • 认证和授权 • 智能路由 • 流量管理 • 服务降级 • … • 微服务拆分原则 • 业务API设计 • 数据一致性保证 • 可扩展性考虑 • …Kubernetes对于微服务的支撑 功能列表 详情 快速资源分配 容器编排和调度 服务部署&弹性伸缩 Deployment 服务注册&服务发现 Service概念和分布式DNS API网关 终端用户认证Istio的核心组件 • Envoy 是一个高性能轻量级代理,它掌控了service的入口流量和出口流量,它提供了很多内置功能,如动态负 载服务发现、负载均衡、TLS终止、HTTP/2 & gRPC流量代理、熔断、健康检查等功能。 • Mixer 翻译过来是混音器,Mixer负责在整个Service Mesh中实施访问控制和使用策略。Mixer是一个可扩展组 件,内部提供了多个模块化的适配器(adapter)。0 码力 | 28 页 | 3.09 MB | 6 月前3
Service Mesh的实践分享Mesh雏形 • 物理机、sidecar • Local & Remote,主与备 • 轻量级客户端、本地调用 • Local Proxy负责服务治理与 远程通信 • Remote Proxy负责备份和非 主流流量 JavaApp Local Proxy OSP Server Service Registry Service Config Center Remote Proxy Cluster Proxy地址文件 • Mount到所有pod • 客户端容器监听文件,根据地 址文件找Proxy • 切换地址到remote proxy,轻 易实现优雅退出和滚动升级 • 增强隔离性 • Local Proxy被pod共享 • 自保护,对来源方限流和流量 转移 • 资源适配 • 根据宿主机的硬件配置定制不 同资源配置的Daemonset Local Proxy Pod 写入地址 监听变化 • 因为是内部项目,优雅性和治理效果之间,选择 了后者 App Local Proxy OSP OSP client App Envoy App EnvoyClient端不基于IPTable劫持 • Istio的设计很美好,但现实总是很残酷 • IPTable性能不总是足够好 • 任何组件都有不可用的时候。客户端无论如何都要有自切换的能力和可 用的备份 • 尽量减少外部组件依0 码力 | 30 页 | 4.80 MB | 6 月前3
金融级云原生 PaaS 探索与实践业务实时监控,日志收集; • 机房级和地域级容灾能力; 业务背景业务背景 CAFÉ API Server Aggregation Layer 异地多活架构 同城双活架构 K8S API Server 基础发布运维 跨集群应用 资源管理 IaaS层(Aliyun/OpenStack/VMWare/Bare Metal) PaaS 核心层 核 心 流 程 两地三中心架构 跨机房和地域统一应用运维 跨集群发布策略 多集群管理 跨集群网络 跨集群镜像管理 蓝绿发布 灰度分组发布 中间件变配 (DRM/Scheduler/Message) Mesh流调拨和治理 弹性建站/下站 容器腾挪/迁移 容灾切换和恢复 应急预案管理 … 分钟级容灾切换和恢复 全面变更风险管理 无限弹性可扩展 业务架构 产品层 云原生 PaaS 产品架构方案 7/209/20 二、多集群管控 多集群管控10/20 关系型存储; 数据量 容灾 • 基于部署单元分发 多集群管控13/20 三、发布运维体系 发布运维体系14/20 应用管理&交付 • 基于统一管控背景下的 Dockerfile 管理和生成; • 基于组件关联的 FedAppInstance + revision 版本控制; • 快速构建能力 - binary2Image 能力; 发布运维体系15/20 发布运维体系 发布运维0 码力 | 20 页 | 1.71 MB | 6 月前3
Service Mesh Meetup #3 深圳站request(MR)请求合并到 develop 分支; • 4. MR 触发 Jenkins,Jenkins/Drone 触发 Sonar 代码质量检测系统; • 5. Sonar 将 report 和 issue 以 comments 的方式写到 Gitlab MR 中; • 6. Developer 对 MR 进行反复修复直至通过 Sonar 的分析; • 7. Reviewer 对 MR 进行 不是一种新团队; DevOps 不是一种新角色; DevOps 是一种文化:一切自动化,工具化,规范化;选择哪个 CI/CD 工具?Docker stats 查看 Docker 服务所占用的CPU和内存开销DroneDrone • 一款使用 Go 开发,基于容器技术的 CI/CD 系统,能够单独部署,支持几乎所有的 Git 平台(Github,Gitlab,Bitbucket,Gogs,Gitea ght-reading- go/blob/master/articles/sonarqube-for-golang/2018-07-22-sonarqube-for- golang.mdDrone 和 Jenkins 联调测试方法 本地即可测试 drone 上是否可以调用成功: >docker run --rm \ -e JENKINS_URL=-e JENKINS_USER= 0 码力 | 45 页 | 18.62 MB | 6 月前3
蚂蚁金服双十一 Service Mesh 超大规模落地揭秘Mesh-现状 5.客户端中间件版本的统一 9% 3.流量调度的诉求 18% 4.框架不断升级 14% 2.机器资源逐年增加 27% 1.业务和框架耦合 32%8 因为我们要解决在 SOA 下面,没有解决但亟待解决的: 基础架构和业务研发的耦合,以及未来无限的对业务透明的稳定性与高可用相关诉求。 为什么要 Service Mesh-结论9 为什么要 ServiceMesh-结论-方案 应用代码 SOFABoot_Old SOFABoot/SOFARPC API SOFABoot_New JVM RPC 检测 pod 变量,注 入启动参数 判断开启了 MOSN 发布和订阅服务 直接调用,关闭寻 址功能 其他16 方案落地-容器替换 Pod Pod Old Pod New With MOSN Pod New With MOSN 扩容 缩容 资源 Buffer 分时调度操作步骤23 分时调度-MOSN价值 MOSN 作用:保活态节点流量转发,降低保活态节点内存占用 保活意义: * 应用长连接维持 * DB 连接维持 * 缓存维持 * 无需预热可快速恢复 MOSN APP MOSN APP Client Pod 运行态 Pod 保活态 100% 100% 100% 1% 99%24 双十一成果 覆盖双十一核心链路数十万容器0 码力 | 26 页 | 2.71 MB | 6 月前3
Service Mesh 高可用在企业级生产中的实践可用性级别 年度停机时间 基本可用 2个9 99% 87.6小时 较高可用 3个9 99.9% 8.8小时 具备故障自动恢复 能力可用 4个9 99.99% 53分钟 极高可用 5个9 99.999% 5分钟18/总页数 治理策略 & 高可用 不可用因素 程序和配置出 bug 线程假死、配 置格式出错 机器故障 宕机 机房故障 核心交换机故 障、机房停电 容量 服务容量不足0 码力 | 38 页 | 1.38 MB | 6 月前3
大规模微服务架构下的Service Mesh探索之路以蚂蚁金服的体量,性能不够好则难于接受 • 架构与性能之间的权衡和取舍需要谨慎考虑 ü 稳定性要求 • 以蚂蚁金服的标准,稳定性的要求自然是很高 • 高可用方面的要求很非常高 ü 部署的要求 • 需要用于多种场合:主站,金融云,外部客户 • 需要满足多种部署环境:虚拟机/容器,公有云/私有云,k8s • 需要满足多种体系:Service Mesh,Sofa和社区主流开发框架 Service Mesh落 维持版本更新,同步升级 未来肯定会开源 可扩展和可定制化是必备的 可 控 性 社 区 支 持 技术输出 内部落地 如何让开源产品接受我们的改动? 如何让社区和客户认可我们的产品?开源方案选择之第一代Service Mesh Linkerd • 无控制平面 • Scala编写,基于JVM资源消耗大 • 可扩展性有限,dtab不易理解和使用 • 功能不能满足蚂蚁的需求,没法做到 类似envoy API • 设计优秀,性能和稳定性表现良好 • C++编写,和蚂蚁的技术栈差异大 • 蚂蚁有大量的扩展和定制化需求 • 我们非常认可envoy在数据平面上的表现开源方案选择之第二代Service Mesh Istio • 第一选择,重点关注对象 • 奈何迟迟不能发布生产可用版本 • 性能和稳定性远远不能满足蚂蚁的 要求 • 但我们非常认可Istio的理念和方向 Conduit •0 码力 | 37 页 | 7.99 MB | 6 月前3
Service Mesh 发展趋势(续) 蚂蚁金服 | 骑士到中盘路向何方?如web assembly技术,还有产品形态上的创新,如google traffic director对servicemesh的虚拟机形态的创新支持。 在ServiceMesh出道四年之际,也希望和大家一起带 着问题来对ServiceMesh未来的发展进行一些深度思 考。 标题中续字的缘由Part 0:灵魂拷问 你是什么垃圾? 你清楚你的定位吗? 你配吗? 你是什么东西? 你算什么东西? 为什么Istio选择Mixer和Proxy分离的架构? Part 1:ServiceMesh灵魂拷问一:要架构还是要性能? Proxy Mixer In- Process Adapter Infrastructure Backend Proxy 优点: • 架构优雅,职责分明,边界清晰 • Mixer的变动不影响Proxy • Proxy无需和Adapter耦合 • 读取配置 Mixer v1 架构的优点 • 集中式服务: • 提高基础设施后端的可用性 • 为前提条件检查结果提供集群级别的全局2级缓存 • 灵活的适配器模型,使其以下操作变得简 单: • 运维添加、使用和删除适配器 • 开发人员创建新的适配器(超过20个适配器)Part 1:ServiceMesh灵魂拷问一:要架构还是要性能? Mixer v1 架构的缺点 • 管理开销 • 管理Mixer是许多客户不想负担的0 码力 | 43 页 | 2.90 MB | 6 月前3
Service Mesh是下一代SDN吗:从通信角度看Service Mesh的发展通问题Service Mesh是下一代的SDN吗? 通信网络 l 互不兼容的专有设备 l 基于IP的通信缺乏质量保证 l 低效的业务部署和配置 ... 微服务系统 l 互不兼容的代码库 l 不可靠的远程方法调用 l 低效的服务运维 ... 通信网络和微服务系统面临类似的问题:Service Mesh是下一代的SDN吗? Network Layer Look at Solution Layer Programmable API APP ...... Data Plane Control Layer Application Layer通过Service Mesh控制面统一管理F5和Envoy https://aspenmesh.io/2019/03/expanding-service-mesh-without-envoy/ Control Plane Security Policy: Mesh 主要为7层 SDN对Service Mesh发展的启发: Ø 北向接口 • 面向业务和运维 • 具有较高的抽象层次,比较容易提取统一的控制面标准? • 主要面向layer 7及以上? • SMI能否统一控制面标准?如何避免成为最小公分母,扩展支持其它协议? Ø 南向接口 • 面向流量和路由配置 • xDS v2将统一数据面标准? • xDS接口包含有较多实现相关内容:Listener0 码力 | 27 页 | 11.99 MB | 6 月前3
蚂蚁金服Service Mesh渐进式迁移方案每一步都为下一步奠定基础 • 谢绝中途推倒重来 循序渐进 • 不要有一步登天的幻想,小步快跑 • 每一步的工作量和复杂度都控制在可 接受范围内 • 每一步都简单方便,切实可行 可操纵性 • 操作层面上要有足够的弹性 • 每个步骤都是可分批进行 • 步步为营,扩大战果 • 杜绝一刀切k8s和Service Mesh落地方案演进路线 部署在 非k8s上 不是Service Mesh形态 部署在K8s上 不现实 Istio的非k8s支 持投入产出比 太差 背景1:原生Istio无法支撑我们的规模 背景2:k8s(Sigma3.1)将加快普及 K8s普及在即, 不适合再大面积 铺开,快速会师ü 和路线1的核心差别 • 是先上k8s,还是先上Service Mesh • 而且是终极形态的Service Mesh(意味着更偏离目标) ü 好处是第一步(非k8s上向Sidecar模式演进)非常自然 在k8s还没有铺开前,先吃下非k8s下Sidecar模式快速落地的红利(路线2) - 然后避开非k8s下继续演进的大坑,回归长期目标(路线1) ü 好处(和路线2一样) • 在k8s未铺开前,先向前迈进一步,避免卡壳 ü 缺点 • 存在少量的投资浪费(不过和拿到的红利相比是值得的) ü 存在变数 • 是Sidecar模式的Service Mesh普及快?还是k8s普及快 ü 结论: • 特殊时期(k8s铺开前)的选择0 码力 | 40 页 | 11.13 MB | 6 月前3
共 27 条
- 1
- 2
- 3













