采用Cloud Foundry的BOSH来管理有状态的Docker容器

Cloud Foundry针对Docker发布了一个具有实验性质的开源项目CF-BOSH,这个项目提供的功能和原先的BOSH项目是相同的,也就是大规模分布式服务的部署管理和生命周期管理,但是它却是适用于Docker容器的。

Cloud Foundry BOSH是一套通用工具链,它能够在提供监控、告警和自我修复的功能的同时,将许多处于IaaS上层的多节点应用程序协调地结合起来并管理IaaS的生命周期,这其中就包括有状态数据在内。它会管理VM模板(在Cloud Foundry术语中称之为干细胞(stemcells))、软件发布与部署。BOSH利用了YAML清单并且会创建和管理一个VM池,BOSH会为每个任务从池中取出一个VM,并通过部署清单来更新它的配置。

Cloud Foundry团队的平台工程师Ferran Rodenas列举了Docker版本的BOSH的一些优势:

  1. 可以将多个Docker容器精心地组织进多个虚拟机中。
  2. 可以选择将容器部署到IaaS(AWS、OpenStack、VSphere、VCHS、CloudStack或者Google Compute Engine)中。
  3. 可以自动监控容器并在失败的情况下进行重新启动。
  4. 如果一个容器失败了,那么当它重启时,所有依赖于它的容器也都会重启。
  5. 可以自动监控虚拟机并在失败的情况下重新创建。
  6. 可以将主数据卷绑定到Docker容器上。
  7. 隶属于Docker容器的数据磁盘可以在不丢失数据的情况下调整大小。

面向Docker的Cloud Foundry BOSH版本在部署的时候采用了一种基于YAML文件的声明式方法,该文件定义了任务、或者虚拟机,以及要部署的Docker容器。它不仅仅监视Docker守护进程的工作和监听状态,同样还监视所部署的容器的运行状态。如果由于某些原因,Docker守护进程或者某个容器停止了,BOSH会自动检测到这一失败并在没有任何人类干预的情况下再次重新启动进程直到成功为止。

BOSH包含一个健康度监控器(health monitor),这个监控器会定期ping一个运行在虚拟机内部的代理以此来检查它的状态,当它不能联络到这个代理或者部署状态不是所期望的状态时,它就会触发告警。这个告警可以通过不同方式进行发送,比如电子邮件或者传呼机。另外,它还可以触发一个特别的“复活(resurrector)”响应器来自动替换掉这个虚拟机,重新添加已有的持久化磁盘(persistent disk),并再次部署和启动进程。

现在人们还在做一些其他的工作来尝试将Docker镜像或者Dockerfiles与Cloud Foundry集成到一起。Diego项目通过替换Cloud Foundry的执行代理(DEA)模块以使得其在跨运行时环境(runtime environments)方面更具有扩展性,这些运行时环境就包括Docker。CloudCredo公司编写开发了Decker,Decker采用Docker作为后端来对Cloud Foundry的DEA模块重新进行了实现。

查看英文原文:Managing Stateful Docker Containers with Cloud Foundry BOSH

感谢杨赛对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至[email protected]。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

你可能感兴趣的:(采用Cloud Foundry的BOSH来管理有状态的Docker容器)