BOSH组成部分
BOSH-init
创建和更新Director的东西。
CLI
BOSH的操作接口,直接与Director API相互作用。
Director
BOSH的核心组建,控制虚拟机的创建和部署,和控制其他软件和服务的生命周期事件。 通过以下几种方式触发创建任务:
- 翻译CLI发送过来的命令
- 预定的备份或者快照任务
- 如果有必要使虚拟机的实际状态与期望状态保持一致
这些任务一旦创建Director就添加到任务队列中,Worker进程从队列中取任务并执行。
Task Queue
异步的任务队列,Director与worders之间管理任务。存于数据库中。
Workers
取任务并执行的进程。
CPI
Director操纵基础设施的API。创建管理stemcells,虚拟机,disks。屏蔽基础设施的差异。
Health Monitor
通过接收Agents的状态和生命周期事件监控虚拟机的健康状态,如果监视虚拟机到有问题,会发送一个警告(通过notification插件)或者处罚Resurrector.
Resurrector
这个插件自动创建虚拟机(Health monitor指定的丢失或者反应迟钝的)
DNS Server
PowerDNS,提供DNS解析。
persistent data
Database
Director使用Postgres存储期望部署状态。包括stemcells,releases,和deployments。
Blobstore
通过CLI上传的release被插入到Blobstore。当部署release时,编译结果存储进Blobstore。
Agent
每个虚拟机上都有一个代理,监听和执行Director的指令。Agent通过接收Director任务说明书去分配角色任务给虚拟机。 比如,分配一个运行Mysql的任务给虚拟机。 Director发送指令给Agent,指令包含需要哪些安装包和怎么去配置这些安装包。Agent使用这些指令在虚拟机中安装和配置mysql。
Message bus
NATS
Director和Agents之间通过轻量级的消息队列通信。 目的:
- 执行需要的指令
- 通知监护程序健康状态改变
Registry
当Director创建或者更新虚拟机时,Registry存储配置信息。so that it can be used during bootstrapping stage of the VM组建相互作用示例
创建虚拟机
- 操作者执行一个动作,需要创建一个虚拟机
- CLI传递指令给Director
- Director使用CPI告诉IaaS分配一个虚拟机。
- IaaS提供给Director一些信息(IP地址和IDs)虚拟机中的Agent需要去配置虚拟机。
- Director更新Registry中的配置信息。
- Agent在Registry中取配置信息
- Registry回应配置信息 IP地址和IDs。
- Agent使用IP和IDs去配置VM