使用 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将集群加入到其他节点?
您需要为两个参与者系统提供相同的网络地址端点数组,通常通过硬编码第一个节点的值或两个参与者系统的值。请注意,这些网络地址不是任意的,它们必须与配置中设置的主机名和管理端口相匹配。
case DiscoveryMethod.Config:
b
.WithConfigDiscovery(options =>
{
options.Services.Add(new Service
{
Name = clusterConfig.ManagementOptions.ServiceName,
Endpoints = new[]
{
$"localhost:10000",
$"localhost:10001",
}
});
});