我使用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)附属机
}
}
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)附属机
}
}
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"
}
}
}}
发布于 2021-09-17 16:36:53
我本打算早点回复的。
下面是您的问题:您正在使用两种不同的拆分脑解析器配置--一个用于QueueServicer,另一个用于灯塔。因此,您的集群如何解决自己将是完全不同的,这取决于谁是集群的每一半的领导者。
我将坚持一种简单的保持多数策略,并在整个集群的所有节点上统一使用它--我们很可能在Akka.NET v1.5中默认启用它。
如果您有任何问题,请随时与我们联系:https://petabridge.com/
https://stackoverflow.com/questions/69110696
复制相似问题