PivotalCloudFoundry上DevOps的实践周晖Pivotal资深架构师•云原生应用和传统巨石应用的对比•PCF为何能适应云原生应用架构(CNA)•PCF对开发环境的支持•PCF对DevOps的支持•业界唯一的微服务框架--Spring微服务框架•PCF目前提供的微服务框架•云原生应用的实际案例测试目录传统应用和互联网业务应用的需求不同带来的技术要求•需求是持续发展的•是一个产品,持续发展•用户访问量难以预测,而且一般是持续增长•用户访问的并发量是万级、十万、百万•在线业务,业务不能停顿,互联网应用24小时服务,任何时候中断服务都是事故。传统应用特征互联网应用特征•需求比较固定•是个项目,完成以后就是运维•用户访问量可以预测,较为固定•用户访问的并发量在百级、千级•非在线业务,允许一定时间的业务停顿(比如夜间停机),包括系统维护等,•敏捷业务,敏捷开发•持续集成•应用平台的弹性•支持海量并发•业务不停顿,灰度发布,发布回滚,系统在线升级。互联网应用技术要求云原生应用架构云原生应用的特征•符合十二要素•微服务•自服务的敏捷基础设施•基于API的协作•Antifragility(反脆弱性)巨石应用架构例子UserRegistrationCatalogOrdersProfileSearchRecommendationListsAccount巨石应用的整体伸缩UserRegistrationCatalogOrdersProfileSearchRecommendationListsAccountUserRegistrationCatalogOrdersProfileSearchRecommendationListsAccountUserRegistrationCatalogOrdersProfileSearchRecommendationListsAccountUserRegistrationCatalogOrdersProfileSearchRecommendationListsAccountUserRegistrationCatalogOrdersProfileSearchRecommendationListsAccountUserRegistrationCatalogOrdersProfileSearchRecommendationListsAccountUserRegistrationCatalogOrdersProfileSearchRecommendationListsAccountUserRegistrationCatalogOrdersProfileSearchRecommendationListsAccount一体化应用的每个模块的访问量不一样,整体伸缩不合理012500002500000375000050000006250000CatalogSearchRecommendationListsOrdersProfileUserAccountRegistrationRequestsRequests整体弹性伸缩浪费的资源7倍以上云原生应用的微服务是这样的闪购网站•云原生应用和传统巨石应用的对比•PCF为何能适应云原生应用架构(CNA)•PCF对开发环境的支持•PCF对DevOps的支持•业界唯一的微服务框架--Spring微服务框架•PCF目前提供的微服务框架•云原生应用的实际案例测试目录11CNA架构需面对的难点•分布式系统的复杂性•远程调用多•跨多个服务的应用功能设计•依赖性管理/API版本化•重构模块的边界•无状态和有状态的分离12Source:“MicroservicePrerequisites,”MartinFowler,August2014.采用CNA的必要基础•需要开发、测试、运行平台的支持•快速提供应用环境•通用的框架•基本的监控•快速应用部署•DevOps的支持13PCF提供对CNA的支撑•应用环境的自动化供应•按需的/自动化的弹性伸缩•故障自动恢复/自愈能力•路由/负载均衡•数据服务的自动操作•监控•微服务的框架•通用的应用服务(日志、APM、Session共享)物理服务器网络、存储操作系统数据库Web服务器应用服务器应用TraditionalIaaS数据库Web服务器应用服务器应用IaaS应用PaaSPaaSPaaS云解决了什么问题?IaaS:硬件的自动化管理,人与机器的解耦合获得效率/提高资源利用率PaaS:应用的自动化管理,应用与OS的解耦合获得弹性/简化运维IaaSCloudFoundryPaaS云基础--基于轻量级OS容器物理服务器虚拟化GuestOSGuestOSGuestOS应用服务器应用服务器应用服务器AppAppApp物理服务器虚拟化DEA(Linux/Win容器引擎)操作系统(Linux/Win)虚拟OS—Linux/Win容器是隔离的,只有10M左右的库文件,非常的轻量级,节省OS运行所需资源。虚拟OSWardenApp应用服务器虚拟OSWardenApp应用服务器虚拟OSWardenApp应用服务器虚拟OSWardenApp应用服务器虚拟OSWardenApp应用服务器虚拟OSWardenApp应用服务器轻量级的体现:100个应用实例和容器冷启动=75secs100个应用实例和容器扩展到400个=110secs40个故障应用实例和容器完全恢复=60secsPaaS的业界逻辑架构16Source:•预集成和测试过的解决方案•开箱即用的功能•“Justworks”,特定需求进行定制Unstructured•定制工作量比较大,针对每种不同的unstructured的需求进行定制•基于容器或容器镜像为主•带来非常好的灵活性,当时构建的代价高PaaSPlatform–对开发者可见部分MessageBus/Queuing/RoutingServiceBrokersCapacityPlanningLoggingMonitoringApplicationStaging/ApplicationServicesApplicationSchedulingContainerSchedulingServiceDiscoveryContainerClusterManagementContainerNetworkingContainerRuntimeContainerOSContainerRuntimeContainerOSPhysicalHost(orVM)PhysicalHost(orVM)DevOpsToolsContainerContainerContainerConfigurationManagementMarketplace/ImageManagementSecurityContainerContainerContainer两类实现CONFIDENTIALCloudFoundry逻辑视图PC–浏览器访问CF命令行Mobile–App访问STS开发工具动态路由器(GoRouter)NATS消息总线servicepoolRabbitMQPCFDBuaa-AuthN云控制器(大脑)Stager(组装器)核心业务VM虚机Docker镜像应用系统serviceBrokerBuildPack应用构建包WardencontainerLinuxGarden应用系统OpsPCF安装、在线升级商业版PCF独有部件NATS消息总线开源也提供的部件开源也提供的部件商业版提供的部件HAuaa-AuthNWeb浏览器WinWarden应用系统VM虚机集中日志采集HAProxyHAProxy用量/计费GemFireSession共享Neo4JSpringXDmySQLP-HadoopcassandraSSHFSAPMRiakCSELK日志Jenkins移动计算动态路由器(GoRouter)动态路由器(GoRouter)动态路由器(GoRouter)云控制器BOSHRedisMongoDBKafkaSpring微服务SSO提醒服务LDAP集成AZ支持IaaSvSphere,OpenStackOauthV2SSOLDAP服务器授权服务器BBSetcdBBSetcd监控服务器策略逻辑资源调度Diego大脑监控代理监控代理CCBridgeWeb界面PaaS门户PCF监控网管集成自动弹性伸缩S3兼容存储服务CloudFoundry的典型部署架构物理存储SiSiSiSiDS1物理服务器110.150.43.560核1.7T内存负载均衡A10.150.43.200物理服务器110.150.43.560核1.7T内存物理服务器110.150.43.560核1.7T内存物理服务器110.150.43.560核1.7T内存vSwitch0DS2DS3DS4vSphere集群1vSphere集群2负载均衡B10.150.43.182动态路由器10.150.43.195动态路由器10.150.43.196NATS10.150.43.183etcd10.150.43.185HM10.150.43.186云控制器10.150.43.190UAA10.150.43.198登录10.150.43.202日志采集10.150.43.214CCWork10.150.43.193NATS10.150.43.184HM10.150.43.187云控制器10.150.43.191UAA10.150.43.199登录10.150.43.203日志采集10.150.43.215CCWork10.150.43.194ConsoleDB10.150.43.204UAADB10.150.43.197NFS10.150.43.188CCDB10.150.43.189PCF部件池DEA110.150.43.151DEA210.150.43.207DEA310.150.43.208DEA410.150.43.152DEA510.150.43.153DEA610.150.43.154DEA1010.150.43.209DEA1110.150.43.210DEA1210.150.43.211DEA1310.150.43.155DEA1410.150.43.156DEA1510.150.43.206应用池服务池MySQL110.150.43.57MySQL210.150.43.59应用监控110.150.43.185应用监控210.150.43.185自动弹性伸缩110.150.43.185自动弹性伸缩210.150.43.185系统监控采集10.150.43.236系统监控110.150.43.185系统监控210.150.43.185Redis10.150.43.51RabbitMQ10.150.43.75RabbitMQ10.150.43.76OPS10.150.43.3MySQL310.150.43.58DEA710.150.43.157DEA810.150.43.158DEA910.150.43.159DEA610.150.43.160DEA1710.150.43.161DEA1810.150.43.162传统架构向基于PCF的PaaS迁移样例PivotalCloudFoundry服务区应用区消息中间件(MQ)IBMHTTPServerIBMWASIBMWASIBMESB(MB)WCSDB2数据库DB2数据库JBOSS应用轻量级运行体…轻量级运行体Kafka服务…服务MySQL服务DB2服务BrokerRabbitMQ服务MQ服务BrokerRedis服务Hadoop服务WAS应用轻量级运行体Tomcat应用轻量级运行体Spring应用轻量级运行体WebServerNginx