Cloud Foundry基本问题

时间:2016-05-26 06:37:36

标签: cloudfoundry bosh

我是Cloud Foundry / Bosh的新手,并且有一系列基本问题。

1)Droplet vs Garden容器:我知道droplet包含源代码+ build pack,这些drop在garden容器中执行。恕我直言,集装箱很好运输到其他系统。为什么会出现液滴的中间概念?容器本身是不是会产生液滴?

2)Diego cell: Diego cell的作用是什么(我认为它的工作只是启动/停止花园容器)?迭戈细胞平台是否依赖(例如,特定细胞只能运行windows-garden或其他可以运行linux-garden容器)?我们每个容器需要一个单元吗?

3)在Diego cell的描述中,我读了" 每个应用程序VM都有一个Diego Cell,它在本地执行应用程序启动和停止操作,管理VM的容器,并将应用程序状态和其他数据报告给BBS和Loggregator。" 什么是这里提到的应用VM?这是不是意味着容器?

4)让我们假设,我使用Bosh创建我的云代工实例。一段时间后,我需要将我的系统扩展到两个VM(由于负载增加)。我是否需要为第二个VM创建一个新的清单(因为早期的清单也将在此VM上部署整个CF)?

2 个答案:

答案 0 :(得分:8)

粗略地说,容器是一个根文件系统映像,还有一些资源限制和有关要挂载的卷,要运行的进程等的元数据等。

Garden 是用于创建和运行容器规范的API。任何人都可以编写实现Garden API的服务器,核心Cloud Foundry团队维护 garden-linux garden-runC garden-windows 的实施方式。

Droplet 是"内置"从源代码创建的工件,通常安装或流式传输到Garden容器中然后运行。有时您不需要单独的Droplet,并希望将根文件系统以及所有源代码和/或构建的工件烘焙到单个映像中。但是,通常,您希望在代表您的代码的Droplet和根文件系统之间进行此分离。一个主要的好处是,大多数容器常见的低级依赖关系中的CVE可以在Cloud Foundry平台上的所有租户和所有正在运行的应用程序上统一修复,而无需任何开发人员重新推送其代码。例如。如果openssl之类的内容需要新修补程序,并且您的Cloud Foundry安装有数千名开发人员和数十万个正在运行的Garden容器,那么如果运营商可以推出{{1}则会更好使用单个命令修补所有容器。

Diego cell 是一个虚拟机,它是Cloud Foundry架构的一部分。 Cloud Foundry本身是一个分布式系统,具有负责不同事物的不同组件。有一个组件负责用户授权和身份验证,有一些组件用于聚合来自应用程序的日志,还有一个组件负责提供面向开发人员的API,用于创建,扩展和管理应用程序等.Diego cell' s负责基本上接受运行容器化工作负载的请求并运行它们。用户运行应用程序的请求由面向用户的API使用,并转换为对Diego后端的请求。 Diego本身有几个组件,包括一个调度程序,调度程序的工作是选择执行某项工作的单元格。

您可以认为该单元有两个组件:(1)用于运行容器的Garden服务器,以及(2)可以代表Garden服务器到Diego调度程序的代表,所以相反而花园有任何迭戈特定的知识(花园可以独立运作),调度程序会在同一个单元格中与每个Garden的Diego代表交谈。

我不确定"应用VM"你提出的报价意味着什么。在Cloud Foundry上运行的每个应用程序都可以使用多个并行实例运行(用于容错,更好的并发等)。每个应用程序实例都在一些Diego单元格中作为Garden容器运行。 Cloud Foundry的生产部署将拥有许多Diego单元。每个单元可以运行许多(最多数百个)Garden容器。为了获得更好的容错能力,Diego调度程序将尝试将给定应用程序的实例放在不同的Diego单元格上,而不是将它们全部塞进同一个单元格中,因为如果单个单元格出现故障,整个应用程序就会崩溃。

您无需创建新的清单来扩展BOSH部署。只需更改您希望拥有更多虚拟机的任何作业/实例组的openssl值,然后重新运行instances

答案 1 :(得分:2)

1)Droplet是一个容器图像,当您使用 cf push 上传应用程序时,该图像会持久存储。只要系统创建具有相同图像的新容器(例如,重新启动应用程序或扩展到多个实例),就会重复使用此映像。如果没有Droplet,则每次需要新实例时都必须重新上传应用程序并创建容器映像。

2)Diego单元在一个容纳许多容器的大型VM中运行。典型的Diego细胞可能是32G大小,而典型的容器可能是1G。 Diego细胞目前只运行Linux-Garden容器。

3)应用程序VM只是托管Diego单元的VM。我发现这句话有点令人困惑,因为我倾向于使用术语Diego cell来指代单元软件和托管它的“应用程序VM”。

4)Bosh将使用多个VM来部署Cloud Foundry。单VM部署确实存在(例如,参见http://pivotal.io/pcf-dev),但它们未与Bosh一起部署。