Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Hazelcast滚动更新_Java_Kubernetes_Openshift_Hazelcast - Fatal编程技术网

Java 使用Hazelcast滚动更新

Java 使用Hazelcast滚动更新,java,kubernetes,openshift,hazelcast,Java,Kubernetes,Openshift,Hazelcast,我有一个小的Hazelcast集群在Openshift 4(kubernetes)中运行,在许多吊舱中。我的问题是,当我推出新版本时,有时需要在新版本中更改hazelcast实例的配置。然后问题就出现了,因为pod和旧集群仍然在运行,因为新的pod还没有正确启动。新升级的成员将失败,因为它们的配置与正在运行的集群(旧POD)不兼容。我们正在使用此处描述的无头服务发现类型。hazelcast集群中的数据可以在部署之间删除,在启动新集群时,我们不需要保留旧集群中的任何数据 我想要一种方法告诉新成员和

我有一个小的Hazelcast集群在Openshift 4(kubernetes)中运行,在许多吊舱中。我的问题是,当我推出新版本时,有时需要在新版本中更改hazelcast实例的配置。然后问题就出现了,因为pod和旧集群仍然在运行,因为新的pod还没有正确启动。新升级的成员将失败,因为它们的配置与正在运行的集群(旧POD)不兼容。我们正在使用此处描述的无头服务发现类型。hazelcast集群中的数据可以在部署之间删除,在启动新集群时,我们不需要保留旧集群中的任何数据

我想要一种方法告诉新成员和旧成员,要么忽略他们的差异,将他们作为两个彼此找不到的独立集群启动,要么干脆不在新成员和旧成员之间复制

我已经研究了可移植序列化功能,但它给我的印象是太过分了,因为我们不需要集群数据在部署之间生存。我还不确定当我们更改hazelcast实例的配置时,它是否会有所帮助,这将使集群不兼容


最后,我考虑更改kubernetes的部署策略,以便在新POD启动之前杀死旧POD,但这将导致部署时应用程序停机,这不是很好。

Hazelcast配置的某些部分无法在运行时配置,这意味着您将无法进行滚动升级。换句话说,您将无法拥有一个成员同时以不同配置运行的集群


如果数据对您不重要,那么您可以始终使用蓝色/绿色部署,这意味着您首先启动整个新群集(使用新配置),切换到新群集,然后停止旧群集。

感谢您的回复。hazelcast kubernetes中的无头服务发现方法是否有一个很好的实现方法?为部署创建的任何服务似乎都解析为相同的DNS,至少在我们的环境中是这样,这会导致集群成员找到彼此,无论我将hazelcast集群指向哪个服务。不,我认为您需要自己“协调”它。也就是说,使用两个不同的服务名称,然后将应用程序从一个切换到另一个。您是否碰巧知道我在哪里可以找到配置中哪些部分可能不兼容的描述?我已经在joiners和serializers部分看到了不兼容警告,但在手册中似乎找不到列出配置的哪些部分必须相同的页面。当然,您可以添加新的数据结构。检查此链接: