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

带有远程节点的Akka(.net)群集:解除关联的异常

袁鸿达
2023-03-14

使用akka(. net)我试图实现简单的集群用例。

  1. 群集-用于节点向上/向下事件
  2. 远程-用于向特定节点发送消息

有两个参与者:主节点,它监听集群事件,从属节点,它连接到集群。

Address address = new Address("akka.tcp", "ClusterSystem", "master", 8080);
cluster.Join(address);

当群集事件发生时。MemberUp消息已被保留主节点创建参与者链接:

ClusterEvent.MemberUp up = message as ClusterEvent.MemberUp;
ActorSelection nodeActor = system.ActorSelection(up.Member.Address + "/user/slave_0");

向此参与者发送消息会导致错误:

与远程系统akka的关联。tcp://ClusterSystem@从机:8090失败;地址现在为5000毫秒。原因是:[解除关联]

主配置:

    akka {
        actor {
            provider = ""Akka.Cluster.ClusterActorRefProvider, Akka.Cluster""
        }

        remote {
            helios.tcp {
                port = 8080
                hostname = master
                bind-hostname = master
                bind-port = 8080
                send-buffer-size = 512000b
                receive-buffer-size = 512000b
                maximum-frame-size = 1024000b
                tcp-keepalive = on
            }
        }
        cluster{
            failure-detector {
                heartbeat - interval = 10 s
            }
            auto-down-unreachable-after = 10s
            gossip-interval = 5s
        }
        stdout-loglevel = DEBUG
        loglevel = DEBUG

        debug {{  
            receive = on 
            autoreceive = on
            lifecycle = on
            event-stream = on
            unhandled = on
        }}
    }

从配置:

akka {
        actor {
            provider = ""Akka.Cluster.ClusterActorRefProvider, Akka.Cluster""
        }

    remote {
        helios.tcp {
            port = 8090
            hostname = slave
            bind-hostname = slave
            bind-port = 8090
            send-buffer-size = 512000b
            receive-buffer-size = 512000b
            maximum-frame-size = 1024000b
            tcp-keepalive = on
        }
    }
    cluster{
        failure-detector {
            heartbeat - interval = 10 s
        }
        auto-down-unreachable-after = 10s
        gossip-interval = 5s
    }
    stdout-loglevel = DEBUG
    loglevel = DEBUG

    debug {{  
        receive = on 
        autoreceive = on
        lifecycle = on
        event-stream = on
        unhandled = on
    }}

}

共有1个答案

许奇
2023-03-14

这是你的问题:

cluster{
            failure-detector {
                heartbeat - interval = 10 s
            }
            auto-down-unreachable-after = 10s
            gossip-interval = 5s
        }

心跳间隔和自动下降不可达后是相同的持续时间-因此,您的节点几乎总是在10秒后自动断开关联,因为您在赌失败检测器可能会失败的竞争条件。

自动下降后无法达到是一个危险的设置-不要使用它。你最终会导致大脑分裂或更糟。

并确保故障检测间隔始终低于自动关闭间隔。

 类似资料:
  • 问题内容: 在Akka actor中,如何找到群集的节点?即,本地节点认为当前可访问的节点。 谢谢-丹尼尔 问题答案: 您实际上不需要订阅或。您可以只访问集群扩展的成员,例如,

  • 我计划部署Kafka集群。我有以下查询: 1)为了保护生产者和消费者与Kafka broker的通信,可以使用SSL。如果我有一个由9个代理和3个zookeeper节点组成的集群,并且如果我不想使用自签名证书,我是否必须为每个节点购买一个证书(9个3证书,成本太高)? 正如我所读到的,生产者/消费者直接联系其中一个经纪人节点,而不联系动物园管理员。 谢谢, 病毒的

  • 我想在我的集群中有一个调度器,它会在一段时间后发送一些消息。从我看到的调度器是每个actorsystem,从我的测试只针对本地actor系统。不是集群那一个。因此,如果在一个节点上调度某个任务,如果它被关闭,那么所有调度的任务都将被丢弃。 如果我创建一个集群单例来负责调度,那么已经制定的调度是否可以在其他节点上重新创建?还是我应该将它作为一个具有已经创建的调度元数据结构的持久执行元,并在预启动阶段

  • 我在跟踪http://jayatiatblogs.blogspot.com/2011/11/storm-installation.html尝试在Amazon Web服务上使用带有Ubuntu14.04 LTS的少数虚拟机(EC2)配置Apache Storm远程集群。 我的主节点是10.0.0.230,从节点是10.0.0.79。我的zookeeper位于我的主节点中。当我使用storm-jar-

  • 我是Docker Swarm的新手。我试图用compose文件在Docker swarm上部署redis集群。我希望redis集群使用端口6380,所以我配置了端口,并让它在compose文件中挂载redis配置文件。 但是当我运行时,我得到了一个错误的声明,“对不起,集群配置文件redis-node.conf已经被不同的Redis集群节点使用了。请确保不同的节点使用不同的集群配置文件。” 这是我

  • 根据如何在Ubuntu中安装Apache Hadoop2.6.0(多节点/集群设置),我将Hadoop2.6.0设置为1个主服务器和2个从服务器。毕竟,我在master和slaves上检查了jps,看起来都很好:master上的NameNode、SecondaryNameNode、ResourceManager;和DataNode,从服务器上的NodeManager。但是当我浏览到Hadoopma