【发布时间】:2023-03-27 07:20:01
【问题描述】:
我有一个小型 Hazelcast 集群,在 Openshift 4(kubernetes) 中运行在多个 pod 中。我的问题是,当我推出新版本时,有时我需要更改新版本中 hazelcast 实例的配置。然后问题出现了,因为 pod 和旧集群仍在运行,因为新的 pod 还没有正确启动。新升级的成员将失败,因为它们的配置与正在运行的集群(旧 pod)不兼容。我们正在使用此处描述的无头服务发现类型。 https://github.com/hazelcast/hazelcast-kubernetes。 hazelcast 集群中的数据可以在部署之间删除,我们不需要在启动新集群时保留旧集群中的任何内容。
我想要一种方法来告诉新成员和旧成员要么忽略它们的差异,将它们作为两个找不到彼此的独立集群启动,或者根本不在新成员和新成员之间复制.
我研究了便携式序列化功能https://docs.hazelcast.com/imdg/4.1.2/serialization/implementing-portable-serialization,但它让我觉得有点矫枉过正,因为我们不需要集群数据在部署之间生存。我也不确定当我们更改 hazelcast 实例的配置中的某些内容时是否会有所帮助,这将使集群不兼容。
最后,我考虑改变 kubernetes 的部署策略,以便在新的 pod 启动之前杀死旧的 pod,但这会导致我们部署时应用程序停机,这不是很好。
【问题讨论】:
标签: java kubernetes openshift hazelcast