Diego - cloud foundry新的容器管理系统 下图展示Diego如何处理请求:

  1. CC传递请求给stage,通过CC-Bridge运行app。
  2. CC-Bridge翻译staging在LRPs(Tasks and Long Running Processes)中运行请求,然后通过HTTP API向BBS(Bulletin Board System)提交请求
  3. BBS提交任务和LRPs给Diego Brain中的拍卖者(Auctioneer)
  4. 拍卖者通过竞拍将任务与LRPs分发给Cells
  5. 一旦拍卖者分配一下任务或者LRP给Cell, 一个进程内部的执行者就会在Cell中创建一个Garden容器。这个任务或者LRP就会在容器中运行
  6. BBS tracks想要LRPS,运行LRP实例,分配任务给Converger,Converger周期性分析这些信息,纠正差异保证ActualLRP和DesiredLRP计数器的一致性
  7. Metron Agent,输出日志,错误信息和度量信息给Loggregator.

Diego核心组建

核心组建运行和监控任务和LRPs。

Diego Brain

分发任务和LRPs给Diego Cells,同步ActualLRP计数器(真实LRP)和DesiredLRP计数器(期望LRP)保证容错和长期一致性,由Auctioneer和Converger两部分组成

Auctioneer

  • 使用拍卖算法分发任务和LRPs
  • 使用HTTP与Cell Reps通信
  • 在BBS中使用一个锁防止一个拍卖者同时参与多个拍卖

    Converger

  • 从运行模式到分析快照,保证一致性和容错
  • 同步DesiredLRP计数器和ActualLRP计数器,如果DesiredLRP 超过了 ActualLRP,Converger向Auctioneer请求开始一个拍卖,相反Converger发送一个停止消息给Rep
  • 监控潜在的丢失的消息,如果需要的话重新发送
  • BBS中维持一个锁,防止在同一时间汇集方法给一个Converger

Diego Cell Components

管理和维持任务与LRPs

Rep

  • 代表一个Cell去竞拍
  • Cell与BBS消息中介者
  • 确保任务和LRPs在BBS中和容器中的表现一致
  • 维持Cell在BBS中存在
  • 让进程中的执行者(Executor)通过创建容器运行任务和LRPs

Executor

  • 运行逻辑的进程
  • 实现一般的执行方法
  • 输出STDOUT 和STDERR给Cell中运行的Metron代理

    Garden

  • 提供跨平台的服务端与客户端去管理Garden容器
  • 为容器实现定义garden-linux接口

    Metron Agent

    输出应用日志,错误和度量给Loggregator

    Database VMs

    Diego Bullentin Board System

  • 维持实时的集群状态,包括所有的desired LRPs 运行LRP实例,和正在执行的任务
  • 通过HTTP提供核心组件和扩展客户端远程调用API,包括SSH代理,CC桥接和路由发送

    etcd

  • 提供持久化的key-value数据存储

    Access VMs

    File Server

    "Blob Store"

    SSH proxy

    运行在实例容器中的SSH代理。

    Consul

  • 提供动态服务注册与DNS负载
  • 提供持久化存储,维持分布式锁和参与的组建

    Consuladapter

    etcd的客户端

    Cloud Controller Bridge

    翻译app从指定的从CC发送给BBS的请求

    Stager

  • 翻译CC给一般任务和LRPs的执行请求
  • 任务完成时给CC回应

CC-Uploader

  • 执行者上传给CC的中介者
  • 把简单的HTTP post请求(Executor给CC的)翻译成复杂的martipart-form请求

    Nsync

  • 监听app请求通过BBS更新desiredLRPs计数器和更新DesiredLRPs
  • 周期性的检查cc的每个app,保证DesiredLRPs计数器的正确性

    TPS

  • 提供给CC当前运行的LRPs的信息,cf apps的回应
  • 监控ActualLRP的活动报告给CC

    Platform-specific组建

    Garden Backends

    一个接口集合,任意平台指定的后端必须实现,包含以下动作
  • 创建/删除容器
  • 分配容器资源限制
  • 打开和分配网络和端口给容器
  • 文件复制进容器,复制出文件
  • 容器内运行进程
  • STDOUT STDERR数据输出容器
  • 任意的元数据注释容器
  • 容器快照,使可以快速重新部署

App lifecycle Binaries

以下三个平台特定的文件部署应用和管理其生命周期

  • Builder,准备执行一个CF应用,CC-Bridge每次执行请求到来时把编译器当作一个任务运行,编译器做一些程序第一次运行前必须要做的事情
  • Launcher 运行一个CF app。CC-Bridge把Launcher设置成一个DesiredLRP动作,Launcher使用正确的系统上下文,包括工作目录和环境变量执行开始命令行。
  • Healthcheck, 容器内运行的监控运行着的CF app状态。CC-Bridge设置Healthcheck当作一个DesiredLRP监控动作。

    其它组建

    Route-Emitter

  • 监控DesiredLRP和ActualLRP状态。当检测到变化时发送路由注册和注销消息给CF router
  • 周期性发送整个路由表给router

results matching ""

    No results matching ""