MongoS sharding元数据管理器失败,要求实例手动重置

问题描述:

我的MongoS服务器不在凝视,他们在日志中发送此错误。MongoS sharding元数据管理器失败,要求实例手动重置

分片[平衡]捕获的异常而做平衡:服务器的 分片元数据管理器初始化失败,将这种状态保持在 直到实例手动复位::引起:: HostNotFound:无法解析DNS主机confserv_1.xyz.com

2016-05-02T17:57:06.612+0530 I SHARDING [Balancer] about to log metadata event into actionlog: { _id: "DB2255-2016-05-02T17:57:06.611+0530-5727479aa1051c5fb04fcc49", server: "mongoS1", clientAddr: "", time: new Date(1462192026611), what: "balancer.round", ns: "", details: { executionTimeMillis: 35, errorOccured: true, errmsg: "Server's sharding metadata manager failed to initialize and will remain in this state until the instance is manually reset :: caused by :: HostNotFoun..." } } 

当我连接使用主机名,它做工精细配置服务器。
我试图重新启动MongoS服务器,它不会出现。

我检查蒙戈代码,发现在
https://github.com/mongodb/mongo/blob/master/src/mongo/db/s/sharding_state.cpp

/ TODO: remove after v3.4. 
// This is for backwards compatibility with old style initialization through metadata 
// commands/setShardVersion. As well as all assignments to _initializationStatus and 
// _setInitializationState_inlock in this method. 
if (_getInitializationState() == InitializationState::kInitializing) { 
    auto waitStatus = _waitForInitialization_inlock(deadline, lk); 
    if (!waitStatus.isOK()) { 
     return waitStatus; 
    } 
} 

if (_getInitializationState() == InitializationState::kError) { 
    return {ErrorCodes::ManualInterventionRequired, 
      str::stream() << "Server's sharding metadata manager failed to initialize and will " 
          "remain in this state until the instance is manually reset" 
          << causedBy(_initializationStatus)}; 
} 

提到这个错误,但它并没有提到任何需要什么样的人工干预。 当前Mongo版本是3.2.6

+1

'无法解析DNS'听起来像是一个管理问题。解决方案包括'ping','traceroute','nmap'等等,这似乎是OT。 – mnemosyn

+0

尝试从mongos实例连接到配置服务器。可能是该配置服务器端口未打开。 – titogeo

+0

我检查了一次连接丢失,之后它恢复了,但是MongoS没有收到它。我们重新启动了MongoS服务器,并停止了重新启动平衡器。 – viren

我刚碰到这个问题,同时试图加强安全配置。就你而言,我能够从所有mongos实例连接到配置服务器。

在我的情况下,我还在测试一个副本集的成员在不同的数据中心的情况下,我只有在踩下某些初选后才有问题。

最后我注意到,不是因为错误信息假装,而是在一个数据中心的一些主节点上发生了问题,这些主节点无法路由回配置服务器。在修复路由问题(最终/ etc/hosts)之后,mongo方面没有发生更多的问题。