Diego 架构
来源:互联网 发布:淘宝 全球购 费用 编辑:程序博客网 时间:2024/06/11 11:11
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 驱动
- Diego Brain
- 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 作为一个Task。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 0
- Diego 架构
- Cloudfoundry Diego 中consul的应用
- Diego 下一代的Cloud Foundry运行时
- ROS机器人Diego 1#制作总结
- ROS机器人Diego 1#制作(十九)diego机器人的moveit驱动
- UC San Diego 的一个计算机图形学的网址
- 当Android遇上x86:Intel San Diego智能手机全面解析
- San Diego’s AIS Rides Out Power Outage
- 基于bosh-lite部署CloudFoundry-V3-diego的运行时
- 2015年6月美国San Diego之旅
- ROS机器人Diego 1#制作(一)BOM清单
- ROS机器人Diego 1#制作(二)base controller---rosserial_arduino
- ROS机器人Diego 1#制作(三)base controller---ros_arduino_bridge
- ROS机器人Diego 1#制作(十三)launch启动文件
- ROS机器人Diego 1#整合Tensorflow MNIST,玩数字识别
- ROS机器人Diego 1#整合Tensorflow object_detection,图像识别
- C Right-Left Rule (Rick Ord's CSE 30 - UC San Diego)
- 丛林小英雄迪亚哥 Go Diego Go 14张DVD,朵拉的表兄弟
- 【单片机笔记】中颖单片机开发笔记
- centos7 mysql数据库安装
- CSDN博客积分规则和获取积分方法
- C/C++ 二级指针
- 413.Arithmetic Slices
- Diego 架构
- mysql 导入错误 /*!40101 SET NAMES utf8mb4 */;
- eclice快捷键
- redis配置密码
- 2017年9月17日PAT甲级考试反思
- mybatis异常invalid comparison: java.util.Date and java.lang.String(date和string无法比较)
- jeecg 自定义datagurid
- [html&css]Pass Through
- Android新浪微博登录