Diego 架构
2017-09-19 12:25
155 查看
Diego是Cloud Foundry中全新的容器管理系统。本文简要概述Diego的架构和组件。
本文包含以下几个部分:
架构图
Diego 核心组件
Diego Brain
Auctioneer
Diego Cells
Rep
Executor
Garden
Metron Agent
Database VMs
Diego Bulletin Board System
MySQL
Access VMs
File Server
SSH Proxy
Consul
Go MySQL 驱动
Cloud Controller Bridge 组件
Stager
CC-Uploader
Nsync
TPS
平台特定组件
Garden 后台
应用生命周期二进制文件
目前实现
其他组件
Route-Emitter
下图及其描述给出了Diego处理应用请求的流程和方式。
![](https://img-blog.csdn.net/20170919094027482?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl0dGxlX2NyYWJfMDkyNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
1、Cloud Controller 将stage和run应用的请求发送给Cloud Controller Bridge(CC-Bridge);
2、CC-Bridge 将staging和running请求转换为Tasks和Long Running Processes(LRPs),然后通过HTTP上的API将其提交到Bulletin Board System(BBS);
3、BBS将Tasks和LRPs提交给Auctioneer(Diego Brain的一部分);
4、Auctioneer通过Auction将这些Tasks和LRPs分配给Cells。Diego Brain使用SSL/TLS协议和Diego Cells 进行通信;
5、只要Auctioneer将某个Task或LRP分配给Cell,in-process Executor 就会在Cell中创建一个Garden 容器。Task或LRP运行在容器中;
6、BBS跟踪desired LRPs、运行时LRP实例和in-flight Tasks。它还定期对这些信息进行分析,并纠正错误,以确保
7、作为Cell的一部分,Metron Agent 将应用日志、错误和指标转发给Cloud Foundry Loggregator。
Diego Brain
Diego Cells
Database VMs
Access VMs
Consul
通过SSL/TLS与Cell Reps进行通信;
在BBS上维护一个锁,以限制每次只能对一个Auctioneer进行auctions。
中介Cell和BBS之间的所有通信
确保BBS中Tasks和LRPs与Cell容器保持同步
保持BBS中Cell的存在
通过请求in-process Executor 创建容器和RunAction来运行Tasks和LRPs
实现详细的通用Executor操作
将STDOUT和STDERR传输到运行在Cell上的Metron agent
定义容器实现的Garden-runC接口
通过HTTP为Diego 核心组件和外部客户端提供RPC风格的API ,包括SSH Proxy,CC-Bridge和Route Emitter。
通过将所需状态(存储在数据库中)与实际状态(来自于运行实例)进行比较来确保Tasks和LRPs的一致性和容错性。
通过以下方式保持
如果
如果
监控潜在错过的消息,如有必要重新发送。
为维护分布式锁和组件存在提供一致的键值存储
当Tasks完成时,向Cloud Controller发送响应
将来自Executor的简单HTTP POST请求转换为Cloud Controller的复杂多部分表单上传
定期对每个应用进行Cloud Controller轮询,以确保Diego保持准确的
监控
Builder 构建(stage) CF应用。在每次staging请求时,CC-Bridge 运行Builder 作为一个T
4000
ask。Builder对应用代码执行静态分析,并在应用首次运行之前进行任何必要的预处理。
Launcher 运行CF应用。CC-Bridge将Launcher设置为应用的
Healthcheck 对容器中运行的CF 应用进行状态检查。CC-Bridge将Healthcheck设置为应用的
Docker 应用生命周期 实现了Docker部署策略。
监控
定期将整个路由表发送到Cloud Foundry的router
本文包含以下几个部分:
架构图
Diego 核心组件
Diego Brain
Auctioneer
Diego Cells
Rep
Executor
Garden
Metron Agent
Database VMs
Diego Bulletin Board System
MySQL
Access VMs
File Server
SSH Proxy
Consul
Go MySQL 驱动
Cloud Controller Bridge 组件
Stager
CC-Uploader
Nsync
TPS
平台特定组件
Garden 后台
应用生命周期二进制文件
目前实现
其他组件
Route-Emitter
架构图
Cloud Foundry 采用Diego架构来管理应用的容器。Diego各组件承担来自Cloud Controller的应用调度和管理职责。下图及其描述给出了Diego处理应用请求的流程和方式。
1、Cloud Controller 将stage和run应用的请求发送给Cloud Controller Bridge(CC-Bridge);
2、CC-Bridge 将staging和running请求转换为Tasks和Long Running Processes(LRPs),然后通过HTTP上的API将其提交到Bulletin Board System(BBS);
3、BBS将Tasks和LRPs提交给Auctioneer(Diego Brain的一部分);
4、Auctioneer通过Auction将这些Tasks和LRPs分配给Cells。Diego Brain使用SSL/TLS协议和Diego Cells 进行通信;
5、只要Auctioneer将某个Task或LRP分配给Cell,in-process Executor 就会在Cell中创建一个Garden 容器。Task或LRP运行在容器中;
6、BBS跟踪desired LRPs、运行时LRP实例和in-flight Tasks。它还定期对这些信息进行分析,并纠正错误,以确保
ActualLRP和
DesiredLRP数量之间的一致性;
7、作为Cell的一部分,Metron Agent 将应用日志、错误和指标转发给Cloud Foundry Loggregator。
Diego 核心组件
Diego核心组件运行并监控Tasks和LRPs。核心组件主要包含以下几个:Diego Brain
Diego Cells
Database VMs
Access VMs
Consul
Diego Brain
Diego Brain 组件将Tasks和LRPs分配给Diego Cells,并纠正ActualLRP与
DesiredLRP之间的差异,以确保容错和长期的一致性。Diego Brain由Auctioneer组成。
Auctioneer
利用auction包来运行Tasks和LRPs的Diego Auctions;通过SSL/TLS与Cell Reps进行通信;
在BBS上维护一个锁,以限制每次只能对一个Auctioneer进行auctions。
Diego Cells
Diego Cell组件负责管理和维护Tasks和LRPs。Rep
代表Tasks和LRPs的Diego Auctions中的Cell中介Cell和BBS之间的所有通信
确保BBS中Tasks和LRPs与Cell容器保持同步
保持BBS中Cell的存在
通过请求in-process Executor 创建容器和RunAction来运行Tasks和LRPs
Executor
在Rep中作为逻辑进程运行实现详细的通用Executor操作
将STDOUT和STDERR传输到运行在Cell上的Metron agent
Garden
提供独立于平台的服务器和客户端来管理Garden容器定义容器实现的Garden-runC接口
Metron Agent
将应用日志、错误和应用程序以及Diego指标转发给Loggregator Doppler组件。Database VMs
Diego Bulletin Board System
维护Diego集群状态的实时表示,包括所有desired LRPs、运行时LRP实例和in-flight Tasks。通过HTTP为Diego 核心组件和外部客户端提供RPC风格的API ,包括SSH Proxy,CC-Bridge和Route Emitter。
通过将所需状态(存储在数据库中)与实际状态(来自于运行实例)进行比较来确保Tasks和LRPs的一致性和容错性。
通过以下方式保持
DesiredLRP计数和
ActualLRP计数同步:
如果
DesiredLRP计数超过
ActualLRP计数,则要求Auctioneer开始auction;
如果
ActualLRP计数超过
DesiredLRP计数,则向托管实例的Cell的Rep发送停止消息。
监控潜在错过的消息,如有必要重新发送。
MySQL
为Diego提供一致的键值数据存储Access VMs
File Server
blobstore 提供静态资产,可以包含通用应用生命周期二进制文件和应用特定的droplets 和build 工件。SSH Proxy
在实例容器中运行的SSH客户端和SSH服务器之间的连接。Consul
通过DNS解析提供动态服务注册和负载均衡为维护分布式锁和组件存在提供一致的键值存储
Go MySQL 驱动
Diego BBS将数据存储在MySQL中。Diego使用Go MySQL驱动程序与MySQL通信。Cloud Controller Bridge 组件
Cloud Controller Bridge(CC-Bridge)组件将应用特定的请求从Cloud Controller 转换到BBS。这些组件包括:Stager
将Cloud Controller 的staging 请求转换为通用Tasks和LRPs当Tasks完成时,向Cloud Controller发送响应
CC-Uploader
中介来自于Executor的上传到Cloud Controller将来自Executor的简单HTTP POST请求转换为Cloud Controller的复杂多部分表单上传
Nsync
监听应用请求来更新DesiredLRPs计数和通过BBS更新
DesiredLRPs
定期对每个应用进行Cloud Controller轮询,以确保Diego保持准确的
DesiredLRPs计数
TPS
为Cloud Controller提供有关当前运行的LRPs的响应cf apps和
cf app APP_NAME请求的信息
监控
ActualLRP崩溃活动并向Cloud Controller报告
平台特定组件
Garden 后台
Garden包含一组每个特定于平台的后台必须实现的接口。应用生命周期二进制文件
以下三个平台特定的二进制文件部署应用并管理其生命周期:Builder 构建(stage) CF应用。在每次staging请求时,CC-Bridge 运行Builder 作为一个T
4000
ask。Builder对应用代码执行静态分析,并在应用首次运行之前进行任何必要的预处理。
Launcher 运行CF应用。CC-Bridge将Launcher设置为应用的
DesiredLRP的Action。Launcher使用正确的系统上下文来执行start命令,包括工作目录和环境变量。
Healthcheck 对容器中运行的CF 应用进行状态检查。CC-Bridge将Healthcheck设置为应用的
DesiredLRP的Monitor action。
目前实现
Buildpack 应用生命周期 实现了Cloud Foundry基于buildpack的部署策略。Docker 应用生命周期 实现了Docker部署策略。
其他组件
Route-Emitter
作为每个Diego Cell上的一个全局route-emitter或本地route-emitters监控
DesiredLRP和
ActualLRP状态,当它检测到变化时,向Cloud Foundry 的router 发出路由注册和注销信息
定期将整个路由表发送到Cloud Foundry的router
相关文章推荐
- 1.1 mysql 架构
- 基于MVC和三层架构,用jsp-Servlet-JavaBean实现登录和注册
- 架构产品微服务
- 各大型网站架构分析收集
- flux架构浅谈:什么数据才应该放store
- 微服务之微服务架构的优势与不足(一)
- 在Visual Studio中使用层关系图描述系统架构、技术栈
- .NET应用架构设计—重新认识分层架构(现代企业级应用分层架构核心设计要素)
- 日均百万PV架构第二弹(缓存时代来临) 推荐
- Citrix StoreFront架构
- [翻译]了解ASP.NET底层架构(六)
- 软件架构的定义与问题
- TI Z-Stack协议栈架构分析
- 图片存储架构学习:独立的图片服务器
- 小经验: 网站的通用架构
- 主流Linux/Unix文件系统架构简介
- 秒杀系统架构优化思路
- 区块链架构与应用
- Tomcat 系统架构与设计模式,第 2 部分: 设计模式分析
- 数据库秒级平滑扩容架构方案