Marklogic Cloudformation模板-替换群集,保留卷(和VPC)

Marklogic Cloudformation模板-替换群集,保留卷(和VPC),marklogic,marklogic-8,Marklogic,Marklogic 8,我已经修改了MLCloudFormation模板(ML8.08),将VPC、卷和集群资源分离到它们自己的模板/堆栈中。这两个目标是:1)允许我们将数据保留在EBS卷上,但在群集空闲时(数周、数月),删除ML群集堆栈以节省EC2费用;2)删除所有集群堆栈实例,并用不同实例类型的新实例替换它们(以优化性能) 但是,我们遇到了一个问题:卷包含主机名(基本上是AWS内部IP),如果您停止整个群集并启动一个新群集,则由于IP地址不匹配,群集处于不可用状态。通过自动缩放组替换单个节点是可行的,因为这只会替换

我已经修改了MLCloudFormation模板(ML8.08),将VPC、卷和集群资源分离到它们自己的模板/堆栈中。这两个目标是:1)允许我们将数据保留在EBS卷上,但在群集空闲时(数周、数月),删除ML群集堆栈以节省EC2费用;2)删除所有集群堆栈实例,并用不同实例类型的新实例替换它们(以优化性能)

但是,我们遇到了一个问题:卷包含主机名(基本上是AWS内部IP),如果您停止整个群集并启动一个新群集,则由于IP地址不匹配,群集处于不可用状态。通过自动缩放组替换单个节点是可行的,因为这只会替换1个节点(并使用DynamoDB维护第二个IP地址,以便在重新启动后获得相同的IP地址)


寻找关于这是否可能/可行或潜在的其他方法的建议。

CF堆栈设计为完全关闭而不删除它们。 如果你删除了它们,你会要求大量的“你自己的”

不删除堆栈,只需将每个区域的节点设置为0即可更新堆栈。 这将安全地缩小到0个EC2实例,保持数据完整,保持元数据(在DDB表中)同步,并且每当您想唤醒em时,只需更新堆栈设置一些值>0即可

如果您试图部分重用逻辑,但没有完全重用,那么会有很多约定和不明显的依赖关系

是的,如果删除堆栈,但保留卷或DDB数据库,如果将这些卷或DDB数据库附加到其他集群,则可能会发生非常糟糕的事情--

如果您复制卷并将它们附加到不同的群集上,那将是非常糟糕的事情。不要这样做。

自从我们在2018年11月开始使用这些模板以来,这些模板似乎已经更新,现在每个区域规范都有一个节点(带有关闭/休眠的注释)而不是一个总节点数规范。我们将看一看,看看这是否是我们可以适应的。也许你从别处得到了你的原始模板。每个区域的节点从一开始就在示例模板中。注意:这些是示例模板——它们工作得太好,可能与生产模板混淆,也可能与实际运行时实现混淆。模板仅“配置”合理的默认值,底层功能是“托管集群”——如果您对模板进行更改,则需要了解模板背后的功能,以避免严重破坏它(以及可能出现的行为异常的部署)