Балансировщик осколков MongoDB застрял в состоянии 0

Я сделал шардинг на одной коллекции с 2 шардами. Версия MongoDB: 2.6.4. Все выглядит нормально, но 100% данных находятся на одном осколке.

Когда я делаю:

use config
db.locks.find( { _id : "balancer" } ).pretty()

Я получил:

{
    "_id" : "balancer",
    "state" : 0,
    "who" : "ip-10-0-11-128:27018:1424099612:1804289383:Balancer:846930886",
    "ts" : ObjectId("553a1223e4d292075ec2a8a6"),
    "process" : "ip-10-0-11-128:27018:1424099612:1804289383",
    "when" : ISODate("2015-04-24T09:51:31.498Z"),
    "why" : "doing balance round"
}

Таким образом, балансировщик застрял в состоянии 0. Я попытался перезапустить его, но он все еще находится в состоянии 0.

Также:

sh.isBalancerRunning()
> false

Но:

sh.getBalancerState()
> true

Ошибки в моем файле журнала:

    2015-04-24T10:15:47.921+0000 [Balancer] scoped connection to 10.0.11.128:20000,10.0.11.159:20000,10.0.11.240:20000 not being returned to the pool
2015-04-24T10:15:47.921+0000 [Balancer] caught exception while doing balance: error checking clock skew of cluster 10.0.11.128:20000,10.0.11.159:20000,10.0.11.240:20000 :: caused by :: 13650 clock skew of the cluster 10.0.11.128:20000,10.0.11.159:20000,10.0.11.240:20000 is too far out of bounds to allow distributed locking.

Кто-нибудь знает, как это исправить? Спасибо, Иван


person Ivan Longin    schedule 24.04.2015    source источник
comment
Похоже, мои серверы не синхронизированы по времени. На одном из осколочных серверов есть 10-минутная задержка, и, вероятно, поэтому он не работает :/   -  person Ivan Longin    schedule 24.04.2015


Ответы (1)


При беглом взгляде на код кажется, что мы можем допустить около 30 секунд перекоса между серверами в кластере. В linux мы рекомендуем людям использовать ntp, чтобы свести перекос к минимуму (ntp обычно удерживает его в пределах секунды или двух). ntp обычно уже установлен в большинстве дистрибутивов Linux.

группа пользователей MongoDB

используя следующую команду, чтобы выполнить однократную синхронизацию ntp

ntpdate pool.ntp.org
person Yuvaraj Loganathan    schedule 21.09.2015