更新了单独群集中的Clusternodes

时间:2018-07-23 13:10:42

标签: ignite

我们想将Apache Ignite集成到我们的应用程序中。我们的应用程序已部署在客户网络上的多台服务器上,并且能够自我更新。

问题在于,在更新应用程序时,我们同时具有运行不同版本的服务器。因此,更新后的服务器将重新加入群集,并根据旧类获取数据的副本。在更新所有服务器后,数据将被移交给我们,最终得到了一组更新的服务器和旧数据。

我的目标是与更新的服务器组成一个新的空集群。我已经读过有很多选项可以做到这一点,例如更改多播组或localPort。但是我需要一个适用于多播和直接IP连接且不更改端口的解决方案。由于防火墙的限制,更改端口可能会成为问题。

我想知道是否有可能过滤ipFinder提供的节点并检查它们是否为同一版本。

1 个答案:

答案 0 :(得分:3)

我认为您有几种选择:

  1. 您可以在更新之前停用集群,并仅在最后一个应用程序实例更新后https://apacheignite.readme.io/docs/baseline-topology#section-cluster-activation-tool激活集群。
  2. 销毁缓存并在最后一个应用程序实例更新时再次创建
  3. 您可以设置节点属性(例如,设置应用程序版本)和缓存过滤器,因此新版本将使用新的缓存,该缓存仅在属性为“版本4”的节点上存储数据,而上一个缓存仅在属性为“版本4”的节点上存储数据。版本3”,因此,当所有实例都将更新时,将没有属性为“版本3”的节点,只有新版本的缓存会保留并在节点“版本4”上存储数据。 (https://ignite.apache.org/releases/latest/javadoc/org/apache/ignite/configuration/CacheConfiguration.html#getNodeFilter--) 但是,在这种情况下,您需要为每个新的应用程序版本使用新的缓存名称。
相关问题