首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Akka.net:我应该为灯塔/种子节点指定“拆分脑解析器”配置吗?

Akka.net:我应该为灯塔/种子节点指定“拆分脑解析器”配置吗?
EN

Stack Overflow用户
提问于 2021-09-08 23:34:25
回答 1查看 137关注 0票数 0

我使用Akka.net集群特性实现了这个应用程序。写代码的人已经离开了公司。我正在努力理解代码,我们正在计划部署。

集群有2种节点类型。

QueueServicer:支持分片,只有这些节点才能参与分片。

LightHouse:它们只是种子节点,没有别的。

灯塔:2个节点

QueueServicer :3个节点

我看到一个QueueServicer节点无法加入集群。两个灯塔节点都拒绝连接。它不断尝试加入,但从未成功。这种情况已经发生了5天左右,而且节点也从未消亡过。它的CPU和内存使用率很高。此外,当过滤搜索日志时,它没有任何队列处理器参与者运行。垃圾收集需要很长的时间。我在这个节点的日志中看到了以下内容。

{“时间戳”:“2021-09-08T22:26:59.025Z”,"logger":"Akka.Event.DummyClassForStringSources",“message”:试图与无法到达的远程地址akka.tcp://myapp@灯塔联系-1:7892。地址现在为5000毫秒的门禁,所有到这个地址的信息都将被发送到死信中。原因:akka.tcp://myapp@灯塔导致关联失败-1:7892由:[System.AggregateException:一个或多个错误发生。(连接拒绝akka.tcp://myapp@灯塔-1:7892)-> Akka.Remote.Transport.InvalidAssociationException:连接拒绝akka.tcp://myapp@灯塔-1:7892 at Akka.Remote.Transport.DotNetty.TcpTransport.AssociateInternal(Address remoteAddress)

{“时间戳”:“2021-09-08T22:26:59.025Z”,"logger":"Akka.Event.DummyClassForStringSources",“message”:试图与无法到达的远程地址akka.tcp://myapp@灯塔-0:7892相关联。地址现在为5000毫秒的门禁,所有到这个地址的信息都将被发送到死信中。原因:关联失败,因为akka.tcp://myapp@灯塔-0:7892由:[System.AggregateException:一个或多个错误发生。(连接拒绝akka.tcp://myapp@灯塔-0:7892)-> Akka.Remote.Transport.InvalidAssociationException:连接拒绝akka.tcp://myapp@灯塔-0:7892 at Akka.Remote.Transport.DotNetty.TcpTransport.AssociateInternal(Address remoteAddress)

还有其他的“现在监督”,“停止”,开始的“日志”,我在这里省略了。

您能否验证HCON配置对于拆分脑解析器和分片是否正确?

我认为灯塔/SeeNodes不应该指定切分配置。我觉得这是个错误。我还认为,拆分大脑解析器配置在灯塔/种子节点中可能是错误的,不应该为种子节点指定。

谢谢你的帮助。

这是QueueServicer裁剪的HOCON

阿克卡{

 /T1593-1988暗色记录器= "Akka.Logger.log4net.Log4NetLogger,Akka.Logger.log4net“

更高标准日志配置启动= on

更高级别=“调试”

准准演员{

自愿性、无偿性、无偿性-供给者=集群

 /T1587-1996商业合同转轨

}

(B)附属机

}

}

代码语言:javascript
复制
remote {
    dot-netty.tcp {
    ….
    }
}

cluster {
    seed-nodes = ["akka.tcp://myapp@lighthouse-0:7892",akka.tcp://myapp@lighthouse-1:7892"]
    roles = ["QueueProcessor"]
    sharding {
        role = "QueueProcessor"
        state-store-mode = ddata
        remember-entities = true
        passivate-idle-entity-after = off
    }

    downing-provider-class = "Akka.Cluster.SplitBrainResolver, Akka.Cluster"
    split-brain-resolver {
                               active-strategy = keep-majority
                               stable-after = 20s
        keep-majority {
            role = "QueueProcessor"
        }
     }
    down-removal-margin = 20s
}

extensions = ["Akka.Cluster.Tools.PublishSubscribe.DistributedPubSubExtensionProvider,Akka.Cluster.Tools"]

}

这是灯塔的HOCON

阿克卡{

 /T1593-1988暗色记录器= "Akka.Logger.log4net.Log4NetLogger,Akka.Logger.log4net“

更高标准日志配置启动= on

更高级别=“调试”

准准演员{

自愿性、无偿性、无偿性-供给者=集群

 /T1587-1996商业合同转轨

}

(B)附属机

}

}

代码语言:javascript
复制
remote {
    dot-netty.tcp {
    …
    }
}

cluster {
    seed-nodes = ["akka.tcp://myapp@lighthouse-0:7892",akka.tcp://myapp@lighthouse-1:7892"]
    roles = ["lighthouse"]
    sharding {
        role = "lighthouse"
        state-store-mode = ddata
        remember-entities = true
        passivate-idle-entity-after = off
    }

    downing-provider-class = "Akka.Cluster.SplitBrainResolver, Akka.Cluster"
    split-brain-resolver {
                                  active-strategy = keep-oldest
                                  stable-after = 30s
              keep-oldest {
            down-if-alone = on
            role = "lighthouse"
              }
      }
 }

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-17 16:36:53

我本打算早点回复的。

下面是您的问题:您正在使用两种不同的拆分脑解析器配置--一个用于QueueServicer,另一个用于灯塔。因此,您的集群如何解决自己将是完全不同的,这取决于谁是集群的每一半的领导者。

我将坚持一种简单的保持多数策略,并在整个集群的所有节点上统一使用它--我们很可能在Akka.NET v1.5中默认启用它。

如果您有任何问题,请随时与我们联系:https://petabridge.com/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69110696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档