Ошибка CEPH-кластера mon is down (out of quorum)


В прошлый раз я рассказывал как устранить ошибку "pg inconsistent" и описание вы можете найти в статье "Диагностика состояния и восстановление ceph-кластера". Сегодня переданный на поддержку кластер выдал другое предупреждение:

# ceph health detail
HEALTH_WARN 1/6 mons down, quorum pvc-0,pvc-1,pvc-2,pvc-3,pvc-5
MON_DOWN 1/6 mons down, quorum pvc-0,pvc-1,pvc-2,pvc-3,pvc-5
    mon.pvc-4 (rank 4) addr 10.9.0.189:6789/0 is down (out of quorum)

Я почитал списки рассылки и наткнулся на то, что состояние кластера исправили перезапуском проблемной ноды, но в моем случае такой вариант не пройдет и будем прорабатывать методы более гуманного восстановления ceph-кластера, тем более, что пока это просто предупреждение и кластер работает в штатном режиме.

Прежде всего определимся с сервисами которые отвечают за ceph-кластер:

# systemctl | grep ceph
  ceph-mgr@pvc-4.service                           loaded active     running         Ceph cluster manager daemon                                                 
● ceph-mon@pvc-4.service                           loaded failed     failed          Ceph cluster monitor daemon                                                 
● ceph-osd@16.service                              loaded failed     failed          Ceph object storage daemon osd.16                                           
● ceph-osd@17.service                              loaded failed     failed          Ceph object storage daemon osd.17

Банальный перезапуск службы конечно же ничего не дал:

# systemctl restart ceph-mon@pvc-4.service

Служба падает довольно немногословно:

# systemctl status ceph-mon@pvc-4.service
● ceph-mon@pvc-4.service - Ceph cluster monitor daemon
   Loaded: loaded (/lib/systemd/system/ceph-mon@.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/ceph-mon@.service.d
           └─ceph-after-pve-cluster.conf
   Active: activating (auto-restart) (Result: signal) since Tue 2019-01-29 09:26:40 +07; 6s ago
  Process: 999745 ExecStart=/usr/bin/ceph-mon -f --cluster ${CLUSTER} --id pvc-4 --setuser ceph --setgroup ceph (code=killed, signal=ABRT)
 Main PID: 999745 (code=killed, signal=ABRT)

Jan 29 09:26:40 pvc-4 systemd[1]: ceph-mon@pvc-4.service: Failed with result 'signal'.

Посмотрев лог-файл /var/log/ceph/ceph-mon.pvc-4.log можно обратить внимание, что демон останавливается с сигналом отмена:

--- begin dump of recent events ---
     0> 2019-01-29 09:27:22.664560 7f74eaaa7100 -1 *** Caught signal (Aborted) **
 in thread 7f74eaaa7100 thread_name:ceph-mon

Соответственно, нам придется удалить конфигурацию ceph-монитора на узле и подключить узел к кластеру по новому.

Удаляем хранилище конфигурации ceph-монитора:

# rm -rf /var/lib/ceph/mon/ceph-pvc-4/

Переподключаем монитор к кластеру:

# ceph auth get mon. -o key.txt
# ceph mon getmap -o monmap.bin
# ceph-mon -i pvc-4 --mkfs --inject-monmap map.bin --keyring key.txt

Удаляем файлы токена авторизации и карты распределения:

# rm ./monmap.bin ./key.txt

Дождитесь в логе сообщения:

Recovered from manifest file:/var/lib/ceph/mon/ceph-pvc-4/store.db/MANIFEST-000001 succeeded,manifest_file_number is 1, 
next_file_number is 3, last_sequence is 0, log_number is 0,prev_log_number is 0,max_column_family is 0

Запускаем сервис:

# systemctl start ceph-mon@pvc-4.service