工业标准的云平台
- 传统IT:用户管理一切,从硬件、OS到Runtime、、应用
- IaaS:用户管理中间件、运行时和应用、数据
- PaaS:用户只管理应用、数据
Cloud Foundry (CF)成为工业标准,也可以部署在IaaS之上。
CloudFoundry如何工作
云如何均衡负载
1. BOSH在物理基础设施之上创建和部署虚拟机(VMs)。
2. Cloud Controller在VM上运行应用和其他进程,负载均衡和管理应用生命周期。
3. Router将外界入口流量路由到运行apps的VM上,通常和用户提供的负载均衡器一起工作。
应用如何Run Anywhere
CF设计了两类VMs:
- 组件VM:平台架构的一部分
- 主机VM:为外界托管apps
CF中,Diego系统分发所有的hosted apps负载到所有的hosted VMs,并通过一个拍卖算法保持它们正常运行。
为满足需要,多个host VMs运行同一个app的多个实例。因此app必须可移植:cf分发应用资源到VM,然后在VM中编译和运行app。这些资源包括:OS栈,一个包含app所用的所有编程语言、库和服务的buildpack。在分发app到VM之前,CloudController会stage这个app:把所有资源合并打包到一个droplet中,这样VM可以解压编译运行应用。
CF如何组织用户和工作空间
通过两个User Authentication and Authorization (UAA) 服务器管理用户账户,支持内部存储用户信息的服务如OAuth2,也支持连接到外部用户信息存储的服务如LDAP或者SAML。
CF在何处存储资源
- Github:源代码,buildpacks,文档等资源
- 内部或者外部的blobstore:大的二进制文件,如droplets
- MySQL, Consul, etcd:存储临时信息,如内部组件状态
CF组件之间如何通讯
CF组件之间的相互通讯,是通过内部http和https协议发布消息,并通过NATS把消息发送到对方。
如何监控和分析一个CF部署
两类日志:组件日志,应用日志
日志聚合系统:聚合组件metrics和应用日志,存储到结构化的Firehose,可通过nozzles导出
组件日志以另外的机制工作:通过syslog agent流式化,可以配置流出到syslog drain
在CF中使用服务
开发者需要写Service Broker