1

我正在研究使用多 cpi 和单个 BOSH 导向器部署的 Cloud Foundry 的新架构部署。如果 BOSH director 部署在 DC-A 并管理 2 个 vCenter,一个在 DC-A,另一个在 DC-B,如果 DC-A 下线,BOSH 在 DC-B 中运行主备的选项有哪些以便它可以立即接管部署而无需执行备份和恢复?

4

1 回答 1

1

是的,多 CPI BOSH 的多 DC BOSH 部署运行良好!当人们想到这种多 DC 设计时,您的问题经常被提出。

BOSH Director 没有高可用性 (HA),而且我现在知道没有主动/被动设置。这样做的原因是,失去一位 BOSH 董事并不是什么大不了的事。该 Director 管理的节点仍将在基础架构之上运行。在你把你的导演带回来之前,它们不会是“可管理的”。

但是,如果我们考虑这种主动/被动设置的要求,我会想到以下内容:

  1. 他们必须共享完全相同的 CPI 安装和设置。没有大碍。

  2. 他们必须共享同一个 SQL 数据库和同一个 blobstore(对象存储)。这没什么大不了的,但这会导致同时使用外部 SQL 存储和外部 blobstore。然后,“被动” BOSH Director 至少必须禁用其 resurrector 插件,以免与“主动” BOSH Director 的 resurrector 竞争。(事实上​​,被动的 BOSH Director 必须完全停止,见下文。)

  3. 它们必须共享相同的 NATS 消息总线,该总线通常位于 BOSH Director 上,因此专用于它。从 Director 中提取此 NATS 并使用高可用性设置单独运行它很容易。但接下来的问题是:哪个 Director 使用 NATS 消息?两个 Director 不能竞争使用这些消息。这就是为什么“被动” BOSH Director 需要对其进程进行monit stop编辑,或对整个实例bosh stop进行编辑。

  4. 使用CLI(v2,包括可以像本地精简 BOSH Director 一样工作的此组件)bosh stop无法实现此要求。因此,这两个 BOSH Director 必须由“引导”BOSH Director 部署(这很常见,我什至在某些客户生产环境中看到了这种引导 Director 模式的多达四个阶段!)boshbosh-init

  5. 现在想象你拥有一切。一个引导 BOSH Director,部署一个单独的 HA NATS 和两个 Director,具有相同的 CPI 设置、相同的外部 SQL 数据库和相同的外部 blobstore。然后它会工作!每当您失去主动者时,您就会bosh start成为被动者,并且它会接管。但是你应该小心,以前活动的那个不会突然弹出,否则它会竞争消耗 NATS 消息,并可能会弄乱数据库和 blobstore。这就是 BOSH 缺少一些“锁定”功能的地方,即一次只允许一个活动的 Director。在这里,可以根据一些数据库记录来实现一些非常简单的事情,这些记录将指定哪个是主动的,哪个是被动的。手动切换此记录将触发被动 Director 变为主动。

这是下一个 Cloud Foundry 黑客马拉松的好主意!

于 2019-10-07T23:07:56.137 回答