2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

  • 2014-07-25
  • 本文字数:1212 字

    阅读完需:约 4 分钟

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 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-07-25 21:565507

评论

发布
暂无评论
发现更多内容

Go 通过 Map/Filter/ForEach 等流式 API 高效处理数据

万俊峰Kevin

微服务 stream go-zero Go 语言

ReactNative进阶(一):ReactNative 学习资料汇总

No Silver Bullet

React Native 1月月更

Hive on Spark和Spark sql on Hive,你能分的清楚么

华为云开发者联盟

sql 分布式计算 Sparksql hive on spark 数据源

潘娟:Keep open,Stay tuned 开源为我打开的全新世界 | TiDB Hackathon 2021 评委访谈

PingCAP

带你认识7种云化测试武器

华为云开发者联盟

测试 接口测试 华为云DevCloud 云化测试 Mock 服务

面试官:为什么不同返回类型不算方法重载?

王磊

netty系列之:选byte还是选message?这是一个问题

程序那些事

Java Netty 程序那些事 UDT 1月月更

什么是Log4Shell?Log4j漏洞解读

龙智—DevSecOps解决方案

log4j Log4j 2 Log4Shell

EMQ 映云科技入围 Venture50 行业榜单,数字科技企业风向标!

EMQ映云科技

物联网 Venture50

架构营模块八作业

GTiger

架构实战营

科技驱动经济发展的时代全面到来

CECBC

一文了解区块链如何帮助打击虚假信息

CECBC

今天你的静态变量和静态代码块执行了吗?

华为云开发者联盟

Java 类加载 静态 静态变量 静态代码块

前端开发Vue中的v-指令的使用

@零度

Vue 前端开发

大数据开发之Hive SQL的优化分享

@零度

大数据 Hive SQL

Flink类型系统的根及相关接口

编程江湖

flink

书单 | 学习数据可视化?看这些书就够了!

博文视点Broadview

Kafka原理——Kafka为何如此之快?

Kafka中文社区

【Golang】浅谈协程并发竞争资源问题

恒生LIGHT云社区

golang 后端 协程 并发 Go 语言

10个问题让你快速避开java中的jdbc常见坑

华为云开发者联盟

Java 数据库 JDBC fetchSize Prepared Statement

测试阻碍交付,如何破解这一难题?

飞算JavaAI开发助手

「自我检验」熬夜总结50个Vue知识点,全都会你就是神!!!

Sunshine_Lin

面试 Vue 前端 进阶 ES6

数据库批量插入这么讲究的么?

秦怀杂货店

Java 数据库 批量插入

作业4

施正威

网络安全好学吗?基础入门篇,NMAP高级使用技巧和漏洞扫描发现

学神来啦

网络安全 渗透测试 kali基础 nmap kali Linux

SphereEx 完成近千万美元 Pre-A 轮融资,加速构建新一代数据库生态引擎

SphereEx

开源 融资 ShardingSphere SphereEx 嘉御资本

编写Spring MVC控制器的技巧

编程江湖

Spring MVC

【量化】量化交易入门系列3:经典的量化交易策略(中)

恒生LIGHT云社区

量化投资 量化交易 量化

Java开发之测试框架知识分享

@零度

Java

nodejs 异步I/O和事件驱动

编程江湖

nodejs

一文整理区块链技术为企业带来的九大好处

CECBC

采用Cloud Foundry的BOSH来管理有状态的Docker容器_DevOps & 平台工程_Carlos Sanchez_InfoQ精选文章