内容来源: 2017 年 2 月 25 日, 华为 PaaS 性能专家钟成在 "Rancher 容器实战分享季 - 杭州站之西湖春的唤醒" 进行FusionStage2.0 - 华为云容器实践演讲分享. IT 大咖说作为独家视频合作方, 经主办方和讲者审阅授权发布.
嘉宾演讲视频回顾及 PPT: http://suo.im/3h8xS1
摘要
介绍华为基于 kubernetes 打造的云化软件基础设施: FusionStage2.0. 包括应用开发流水线框架, 应用调度与资源管理框架, 微服务运行与治理框架这三大组件, 以及在这个过程中研发的关键技术与特性, 及在 CNCF 开源社区的活动.
全面云化的问题和挑战
挑战 1
大规模分布式应用难以开发, 测试, 运维.
广义摩尔定律并未失效: 单芯片的晶体管集成度放缓, 但云计算领域的价格随着规模变大, 硬件降价后依然可以维持摩尔定律, 企业和个人使用分布式应用的成本降低.
大数据, 人工智能类应用的兴起: 传统商业应用更注重于业务处理, 而随着大数据和人工智能成为新的商业竞争力, 进一步推动分布式应用的广泛使用.
分布式应用的部署运维依然艰难: 除了像 Google,Facebook 这样的公司, 大部分公司还停留在手工运维大量机器的时代.
挑战 2
臃肿的单体应用架构无法满足日趋敏捷和快速的客户要求.
大代码基线, 错综复杂依赖的单体应用架构, 导致往往新增一个小特性需要数月到半年之久.
开发周期长: 庞大代码基线, 涉及 100~200 人团队开发维护; 组件耦合大, 责任不清楚, 牵一发而动全身.
部署慢, 扩容慢: 部署过程不可重复, 出错率高; 不支持自动弹性伸缩.
升级难: 固定时间窗, 集中大规模人力中断服务升级.
挑战 3
烟囱式应用系统构建, 难于共享, 资源利用率低.
静态资源分配, 分散管理: 各分散的业务部门通常按照规划的最大资源申请物理机, 虚机资源, 物理资源仍被私有化, 无法实现共享, 利用率低. 通常数据中心利用率在 10% ~ 20%.
应用架构七国八制: 技术架构, 中间件有各业务部门 (合作 ISV) 独立选型, 采购, OS, 中间件选择不统一, 类型众多.
IaaS 通过虚拟化的技术实现物理资源的池化, 但往往由于人为静态独占资源, 并不能很好的解决共享和资源利用率的问题.
挑战 4
开发 (Dev) 与生产运维 (Ops) 割裂, 无法实现端到端自动化.
资源获取和研发环境准备效率低, 通常需要走冗长的审批流程, 缺乏标准化, 服务化和自助式 IT 能力.
部门墙厚导致代码到业务上线周期长: 开发人员不知道最终如何部署, 测试人员不清楚测试重点和风险点, 运维人员不了解架构由来和约束等.
割裂式的研发模式无法实现代码到上线的端到端自动化, 业务开发上线周期长, 运维效率低.
当前业界的三个生态
DockerSwarm
部署容易: 内置于最流行的 DockerEngine 内, 部署安装比较简单, 仅需要 2 个命令.
无中心化设计: 通过 Raft 协议形成一个多节点集群, 没有外置的一致性存储(etcd, zookeeper), 也没有中心节点.
网络和抽象支持不足: libnetwork 的支持程度不如 CNI, 仅支持 overlay 网络, 使用概念大多从 kubernetes 借鉴而来.
Mesos
生态成熟: 支持目前大多数大数据应用, Hadoop,Spark,Storm...
二层调度: 下层调度框架给上层调度框架提供粗粒度的资源 offer 请求, 上层使用调度算法将任务分配到这些资源上.
使用门槛较高: 需要分布式应用开发者有独立的调度算法开发能力, 且使用 C++ 开发, 周边支持较弱.
Kubernetes
抽象概念合理: Pod,Service,ClusterIP,Label,ReplicaSet,StatefulSet...
和具体容器实现解耦: 支持 docker/rkt 等, 仅把容器当成一种特殊的运行时.
和 I 层对接还有待完善: 组件较多, 在多种公有云上部署还需要独立的集群管理组件, 存储, 网络均依赖于 I 层.
FusionStage2.0 介绍
传统 IT 全面云化转型的三阶段渐进式演进建议
从大企业 IT 转型实践看, 传统企业应用架构发展需要经历三个阶段.
虚拟化: 大团队开发周期长, 手工式运维, 利用率低 10~20%.
自动化: 具备部分 DevOps 能力, 自动部署与伸缩, 提升利用率 50%.
AllCloud: 兼容微服务和传统服务并存, 全自动化运维, 线性无极伸缩, 利用率 70%.
PaaS 平台是企业 IT 云化转型三阶段演进的核心平台. PaaS 核心是封装应用系统云化, 微服务化的分布式复杂性. 三个阶段是需求驱动的, 各个应用可以根据自己的需求选择.
Fusion Stage 平台功能定义
微服务治理框架: 为应用提供自动注册, 发现, 治理, 隔离, 调用分析等一系列分布式 / 微服务治理能力, 屏蔽分布式系统的复杂度.
应用调度与资源管理框架: 打通从应用建模, 编排部署到资源调度, 弹性伸缩, 监控自愈的生命周期管理自动化.
应用开发流水线框架: 打通从编写代码提交到自动编译打包, 持续集成, 自动部署上线的一系列 CI/CD 全流程自动化.
云中间件服务: 应用云化所需的数据库, 大数据, 通信和应用中间件服务; 通过服务集成管控可集成传统非云化的中间件能力.
一, 应用调度与资源管理框架
以应用为中心进行统一资源管理和调度, 易于管理.
混合编排: 扩展 Kubernetes 的 Pod 定义, 用于部署进程类应用.
统一资源管理: 支持对接主流异构 I 层(OpenStack, Vmware...).
关键特性: 跨 DC/Region/AZ 的部署和管理.
跨域集中部署: RDC,DC,AZ, 集群等层次化部署.
应用建模设计器: 免除脚本编写部署描述文件, 支持灵活的部署策略.
感知应用的部署算法: 亲和性 -- 就近部署, 就近路由, 减少网络消耗; 反亲和性 -- 高可靠性考虑, 减少宕机影响, 避免干扰.
关键特性: 通过联邦技术实现应用多集群资源共享.
按集群特性调度: 某些应用只支持部署到特定集群上, 例如特定的 region, 特定的服务提供商等.
集群间应用自动迁移: 在某个集群容量溢出, 或故障时, 应用能够自动在不同集群间迁移.
跨云管理: 能够将负载部署在不同的云提供商, 并能够很容易的在不同的云提供商之间自动的增加, 减少业务量, 自动迁移.
扩展集群规模: 百级集群, 千级主机, 万级容器.
二, 微服务运行与治理框架
多语言: 支持多语言的原生接口.
可扩展: 提供可扩展框架, 支持不断扩展微服务的高级能力.
高性能: 链路复用, 按需建链等技术实现高性能服务通信.
高可靠: 采用可隔离仓, 熔断机制等技术, 保障用户应用的高可靠性.
可监控: 采用跟踪链分析, 可监控端到端服务调用链, 各服务的调用频率, 时延等各项指标.
关键特性: 开放微服务治理架构, 支持多语言, 多技术堆栈微服务互通.
统一微服务治理标准: 通过服务治理客户端, 处理微服务与服务治理中心的交互.
插件式多协议自动转换: 提供协议插件框架, 支持协议插件热拔插, 通过协议插件与不同通信协议对接.
跨技术堆栈互通: 使用 RESTFul, 自定义高效 RPC 等多种协议, 保证高效的跨语言微服务通信的能力
关键特性: 海量微服务调用链跟踪和监控, 支持与客户现有监控系统进行对接.
支持平台, 资源, 应用的监控和微服务调用链分析.
大规模: 支持百万容器监控, 秒级查询响应.
兼容集成: 和企业现有监控系统的对接, 保证运维人员的体验.
高可用: 调用链跟踪与协议无关, 非侵入, 低损耗.
关键特性: 中间件服务的统一接入与管控.
集中管理所有服务, 统一的服务模式;
应用透明服务模式, 应用开发不需要修改;
支持第三方服务接入, 可以扩展企业既有中间件;
提供标准化的中间件服务的接入和管理的能力. 包括部署和伸缩管理, 实例监控, 计量等功能.
三, 高性能, 灵活定制的应用开发流水线框架
挑战和诉求:
软件环境供给慢: 开发环境分散管理, 开发环境配置发放慢(~1 周).
环境不一致出错率高: 整个开发环境由不同部门人员运维, 开发人员自行部署, 配置中间件, 依赖包等, 出错率高.
保持现有使用习惯: 已经在现网使用的工具链如何保留.
关键技术:
可定制化流水线: 流水线流程可按客户的组织定义进行定制. 通过自定义流水将所有步骤串联, 实现全流程自动化.
客户工具插件式接入: 客户现网使用的工具可以通过插件的方式接入.
ELB 服务: 高可靠, 高性能弹性负载均衡
华为内部广泛使用, 双 11 抢购考验, 保障高性能高可靠;
提供跨 AZ 的负载分发能力, 提高可靠性和运维便利性;
提供自动弹性扩展能力, 可以按流量自动调整规格;
部署支持线性可扩展, 无单点故障;
提供私网和公网两种类型;
支持 L4 和 L7 负载均衡;
支持 Https 协议和证书管理;
DCS 服务: 高速分布式缓存 DCS
使用特点: 高性能读写(百万级并发), 数据量 G 级别, 多种数据类型, 需要持久化.
解决问题: 提高数据查询和读写效率, 减轻管理维护工作量, 降低数据库存储成本.
DMS 服务: 高可用, 分布式消息中间件服务 DMS
提供 web Console 管理消息队列;
提供消息 API 使用消息队列;
支持消息队列的创建, 查看, 删除;
支持消息队列的消息发送和消息消费;
支持多个消费组同时对一个消息队列的消息进行消费;
支持消息 API 访问的安全认证;
支持消息队列的使用统计监控.
来源: https://juejin.im/post/5ac851186fb9a028c36908d2