当前位置: 首页 > 知识库问答 >
问题:

如何停止和关闭整个hazelcast群集?

程卓君
2023-03-14

如何停止并关闭hazelcast集群?我从测试中观察到,每当一个节点ist被HazelcastInstance#关闭()停止时,集群都会尝试重新平衡或备份数据。我如何首先“停止”集群,然后将其关闭?(或者我的观察是错误的?)

共有3个答案

轩辕亮
2023-03-14

测试时,我经常使用Hazelcast.shutdownAll()

这将杀死所有实例。

颜新
2023-03-14

回答永远不会太迟:)

如果希望在关机期间不触发迁移事件,可以将群集状态更改为被动:

hazelcastInstance.getCluster().changeClusterState(PASSIVE);

我建议在以下情况下进行此操作:

if (partitionService.isClusterSafe()) {
    hazelcastInstance.getCluster().changeClusterState(PASSIVE);
    hazelcastInstance.getCluster().shutdown(); 
    // or send exit command to each node, as in mrck answer - remember that then action must be an AllowedDuringPassiveState
}

在被动和冻结状态下,Hazelcast不会进行迁移,因此,关闭集群时不会出现错误。如果块有助于确保,那么更改状态和关闭是安全的,以防止数据丢失

申高峯
2023-03-14

您可以使用isClusterSafe,如下例所示:

public class ShutdownCluster {

public static void main(String[] args) throws Exception {

    HazelcastInstance member1 = Hazelcast.newHazelcastInstance();
    HazelcastInstance member2 = Hazelcast.newHazelcastInstance();
    HazelcastInstance member3 = Hazelcast.newHazelcastInstance();

    if(member1.getPartitionService().isClusterSafe()) {
        IExecutorService executorService = member1.getExecutorService(ShutdownCluster.class.getName());
        executorService.executeOnAllMembers(new ShutdownMember());
    }
}

private static class ShutdownMember implements Runnable, HazelcastInstanceAware, Serializable {

    private HazelcastInstance node;

    @Override
    public void run() {
        node.getLifecycleService().shutdown();
    }

    @Override
    public void setHazelcastInstance(HazelcastInstance node) {
        this.node = node;
    }
}
}
 类似资料:
  • 我有一个主(屏幕)gui窗口,需要打开几个“多输入”窗口(jdialog或当不可能使用jframe时),例如添加首选项(4个文本字段,带有2个文件选择器和2个单选按钮)。在这些JDialogs(或JFrames)中按OK/Cancel时,我的整个应用程序将关闭。我不想那样。我该怎么防止呢? 第一次尝试:我尝试了intelliJ选项“新- 第二次尝试:我“手工”编写了一个类,创建了一个JDialog

  • 问题内容: 我想使用新配置重新启动elasticsearch节点。正常关闭节点的最佳方法是什么? 关闭进程是关闭服务器的最佳方法,还是我可以使用一些神奇的URL关闭节点? 问题答案: 更新的答案。 API已在elasticsearch 2.x中删除。 一些选项: 在您的终端(基本上是开发模式)中,只需键入“ Ctrl-C” 如果您以守护程序()的身份启动它,请找到PID并终止该进程:将彻底关闭El

  • 我有一个使用Twitter4j启动的Android应用程序,如果我不再需要该流,我正在寻求有关如何停止/关闭它的帮助。我在偏好更改时启动流,但需要根据用户操作在应用程序的其他部分停止它。 以下是我启动流的方式,这是我在文档中找到的典型方式: 任何帮助将不胜感激,谢谢!

  • 我正在使用ProcessBuilder启动一个外部进程,但我需要能够杀死它。现在,我没有问题杀死进程,但由于某种原因,错误流没有关闭,所以读取流的线程永远不会完成。这让我无法关闭我的程序。 从这里开始线程读取输入和错误流。 这是我用来停止该进程的代码。 我从来没有得到“error end”,调试程序显示线程只是位于“readline()”。 等待进程的代码在它自己的线程中运行(与终止进程的代码分开

  • 问题内容: 当我使用WebEngine创建播放YouTube视频的新舞台时,关闭它之后-Youtube继续在backgroung上播放。如果我使用“ Platform.exit”-它会关闭我的所有JavaFX App,但我只想关闭为YouTube创建的阶段。 这是我针对YouTube播放器的课程: 在“主舞台”中单击按钮后,我的YouTube播放器舞台正在创建: 问题答案: 您无法处置WebEng

  • 我们正在尝试创建一个带有两个Docker容器的Hazelcast集群,并从客户端应用程序访问它,但我们可以启动一个Hazelcast容器,而启动另一个容器时,getting无法加入集群。现在关机。例外 我们使用以下命令启动docker容器。