【发布时间】:2016-08-18 15:05:49
【问题描述】:
我有一个由 2 个服务器组成的副本集。在测试故障转移时,我关闭了主服务器。我希望所有客户端都开始访问另一台服务器。相反,他们不断尝试击中主节点并超时。次要从不将自己选为主要。
要么我错误地配置了客户端,要么 mongo 副本集需要三台服务器才能进行故障转移。哪一个?这是我的配置。
var settings = new MongoClientSettings
{
Credentials = new[] { credential },
ConnectionMode = ConnectionMode.ReplicaSet,
WriteConcern = WriteConcern.WMajority,
WaitQueueTimeout = TimeSpan.FromMinutes(30),
MaxConnectionPoolSize = 3000
};
string[] hosts = ConfigurationManager.AppSettings["MongoServerIpsSemiColonSeparated"].Split(';');
var servers = hosts.Select(x => new MongoServerAddress(x)).ToList();
settings.Servers = servers;
settings.ReplicaSetName = ConfigurationManager.AppSettings["NameOfReplicaset"];
Client = new MongoClient(settings);
【问题讨论】:
-
值得直接检查您的副本集的状态,看看故障转移是否有效 - 如果可能的话,不要只相信客户端已经切换。
-
@VinceBowdren 是的,做到了。剩下的服务器说是次要的,它无法连接到任何其他副本集成员。
标签: c# mongodb replicaset