以下内容根据演讲PPT及现场分享整理:
PaaS给开发者带来什么?开发者不再需要关注机器、存储、网络等的开通、管理和监控等细节事物;可以迅速实现应用原型;可以快捷地将服务组装成为应用;可以快速地部署代码的新版本;依靠多启动几个实例,快速地实现应用的弹性伸缩;不再需要实现日志与度量的监控系统。
Cloud Foundry最早是由VMware推出的业界第一个开源PaaS云平台,具有开发框架的选择性、应用服务的选择性、部署云环境的选择性等优点。
Cloud Foundry已经得到了一大批知名厂商的鼎力支持。
Cloud Foundry工作原理简介
Router负责请求的分发;Router通过Diego BBS获取所有应用的运行状态,并维护动态的路由表;一般在Router前增加SLB,并绑定域名。
Authentication中UAA组件作为Cloud Foundry的几种用户管理中心,对平台中的用户信息进行统一管理、认证和授权。
APP Lifecycle中Cloud Controller负责管理APP的发布,当用户Push一个APP的时候,Cloud Controller将请求转交给Diego Cell完成应用的Stage操作;应用的状态通过Diego BBS来进行监控和消息通知。
App Storage and Execution中的Blobstore用于存储二进制文件,包括代码包、Buildpacks和Droplets;应用的运行和Stage都有Diego Cell来分配资源运行;Diego Cell管理应用的生命周期,并汇报应用的状态给BBS;Diego Cell负责将应用的Metrics和Log发送出去。
Blob store中的Buildpacks负责将写好的程序,及其依赖的环境、配置、启动脚本等打包成droplet,这个过程称为stage;支持多种开发语言与框架;CF按照固定的顺序管理buildpacks;支持自定义扩展。
Blob store触发的工作流程图如上图。
Service Broker中的CF通过Service Broker方式支持APP的数据库或者三方SaaS的访问需求;CF通过Service Broker构建第三方服务于CF组件之间的连接;采用的Open Service Broker API规范同时被Kubernates、Open Shift等项目支持。
Messaging中NATS是CF的内部通信系统,是一款基于事件驱动的、轻量级的消息发布-订阅系统,CF通过NATS来解决各个组件间的通讯问题;Consul是一款分布式服务发现与配置管理系统,用于同步APP及各组件的地址等信息;BBS是随Diego发布的消息同步组件,用于管理Cell及APP状态、任务和心跳管理等。
Loggregrator将APP的日志通过流的方式输出给开发者;Metrics Collector用于收集组件的统计和度量,可提供给运维人员作为监控使用。
Cloud Foundry的运维理念
可以总结为:弹性伸缩、运维智能、LaaS隔离、自动化部署工具BOSH四个特点。
BOSH是Bosh Outter Shell的缩写。与“Outter Shell”相对,被BOSH部署和管理的系统称为“Inner Shell”。其中部署和链接图谱如上图。
Cloud访问接口和链接程序如上图。
Stemcell就是一个支持BOSH的虚拟机镜像模板;Stemcell中包括一个BOSH Agent组件,并随机启动运行,这个进程被用于监听虚拟机上BOSH组件的运行状态并负责与BOSH Director进行通信交互,当BOSH Agent接收到BOSH Director发布的任务指令后,会根据此任务指令的要求在虚拟机上进行一系列的动作;BOSH会使用指定的Stemcell创建虚拟机,并通过Agent进行管理;包括Light-stemcell与Heavy-Stemell。
Stemcell运行图如上图。
在阿里云上安装BOSH
获取工程网址:http://github.com/aliyun/bosh-deployment;安装BOSH CLI网址:http://bosh.io/docs/cli-v2.html#install。选一个Region;创建一个专有网络VPC;创建安全组SecurityGroup;选择一个Zone,创建一个专有网络技术交换机Vswitch;如果需要公网访问,创建ElasticIP;获取AccessKeyID/AccessKeySecret;使用bosh create-env命令安装bosh,将相关的参数填进去;使用bosh login命令完成登录;更详细的部分请参阅云栖社区文章:https://yq.aliyun.com/articles/292815。
准备Cloud Foundry运行环境
首先确定域名;创建一个SLB;选择可用区;创建交换机、SNAT、DNAT、选好实例规格。
Update cloud-config.yml中需要注意参数:azs、vm_types、disk_types、network、vm_extensions、compilation。
安装Cloud Foundry
工程登录网址:https://github.com/cloudfoundry/cf-deploymengt 。bosh upload-stemcell;修改cf-deployment.yml,做必要的增加或裁剪;安装CF:$bosh –e my-bosh –d cf deploy cf-deployment.yml\--vars-store cf-vars.yml\-v system_domain=cloudfoundry.cc;登录CF:$cf login –a http://api.cloudfoundry.cc --skip-ssl-validation –u admin –p `bosh int./cf-creds.yml –path/cf_admin_password`。
国区ECS在线安装时,可能会遇到Release下载问题,请先本地下载后upload-release再安装。Buildpacks默认都是在线Buildpack,需要安装完成后替换为离线Buildpacks。为此,我们制作了常用buildpacks的缓存,提供了下载,地址见云栖社区文章。
关联文章:云栖社区:开源PaaS工具Cloud Foundry落地阿里云 https://yq.aliyun.com/articles/292815
本文由云栖社区志愿者小组王晓慧整理,丁匀泰审校。编辑:郭雪梅。