Akka.管理DiscoveryMethod.Config

问题描述 投票:0回答:1

使用 Akka.Management 可以在不使用种子节点的情况下创建集群。 我正在使用“Akka Cluster”作为我的主要工具包来开发一项服务,并且我正在通过“discovery from config”使用“Akka Cluster Bootstrap”来引导它:

                    case DiscoveryMethod.Config:
                    b = b
                        .WithConfigDiscovery(options =>
                        {
                            options.Services.Add(new Service
                            {
                                Name = clusterConfig.ManagementOptions.ServiceName,
                                Endpoints = new[]
                                {
                                    $"{clusterConfig.ManagementOptions.Hostname}:{clusterConfig.ManagementOptions.Port}",
                                }
                            });
                        });
                 break;

运行第一个节点,集群形成,该节点成为领导者。 不清楚的是如何让另一个节点(第二个)加入集群。如果我对第二个节点使用相同的配置,它会像第一个节点一样创建一个新集群。我的意思是第二个节点不会加入第一个节点的集群,而是创建一个与第一个节点相同的新集群。 显然,这两个节点位于同一网络上并使用相同的 ActorSystemName。 问题是:如何使用Akka.Management和DiscoveryMethod.Config将集群加入到其他节点?

akka.net akka-cluster
1个回答
0
投票

您需要为两个参与者系统提供相同的网络地址端点数组,通常通过硬编码第一个节点的值或两个参与者系统的值。请注意,这些网络地址不是任意的,它们必须与配置中设置的主机名和管理端口相匹配。

case DiscoveryMethod.Config:
b
.WithConfigDiscovery(options =>
{
    options.Services.Add(new Service
    {
        Name = clusterConfig.ManagementOptions.ServiceName,
        Endpoints = new[]
        {
            $"localhost:10000",
            $"localhost:10001",
        }
    });
});
© www.soinside.com 2019 - 2024. All rights reserved.