内容来源:2017年2月25日,华为PaaS性能专家钟成在“Rancher容器实战分享季-杭州站之西湖春的唤醒”进行《FusionStage2.0—华为云容器实践》演讲分享。IT 大咖说(ID:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。
阅读字数:3187 | 5分钟阅读
获取嘉宾演讲视频回放及PPT,请点击:http://t.cn/EPMR9Rl
摘要
介绍华为基于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访问的安全认证;
支持消息队列的使用统计监控。
今天的分享就到这里,谢谢大家!