[РЕШЕНО] Мне удалось создать "фантомный" ceph monitor., Proxmox Виртуальная Среда
icemox
Guest
0
26.09.2019 15:23:00
Во время обновления с Luminous на Nautilus я каким-то образом создал "призрачного" ceph monitor. У меня кластер из четырех хостов, но ceph monitor только на трех. Наверное, потому что я скопировал-вставил команды обновления ceph monitor, узел, который монитора не имел, теперь отображается в GUI Proxmox, как будто у него есть монитор. Давайте назовем этот узел problemhost. Каждая команда говорит мне, что монитора не существует:
``` # pveceph status|grep problemhost — пустой Bash: ceph mon rm problemhost mon.problemhost не существует или уже удален В ceph.conf ничего нет об этом узле. /var/lib/ceph/mon пустой на этом хосте. ```
Если я кликаю "destroy", я получаю ошибку: "no such monitor id 'problemhost' (500)".
Из любопытства я попытался создать его: monitor 'problemhost' already exists (500).
Я попробовал перезагрузить все узлы, и он все равно там. Откуда GUI берет эту информацию?
Jospeh Huber
Guest
0
11.05.2021 18:01:00
У меня сегодня была та же проблема, но создание монитора вручную с использованием встроенных команд ceph не помогло. Это описано здесь: ... Но в моём случае результат оказался таким же, как при создании монитора с помощью инструментов Proxmox. После нескольких часов я решил поделиться своим решением... Надеюсь, это сэкономит время другим Коротко: решением было внедрение monmap в устаревший монитор:
Подробно:
1.) Удалите все компоненты и данные устаревшего монитора вручную: `pveceph mon destroy ceph-mon@myhost` ... приводит к ошибке, описанной выше "no such monitor id"!
2.) После этого я смог снова добавить монитор через графический интерфейс или командную строку:
``` # на хосте, где отсутствует монитор pveceph createmon ```
Но монитор не смог подключиться к кластеру... Я пробовал снова и снова, в логах (var/log/ceph/ ceph-mon@myhost.log там):
``` 2021-05-11 16:37:47.465 7fdf7c47d700 -1 mon.myhost@-1(probing) e13 get_health_metrics reporting 11 slow ops, oldest is log(1 entries from seq 1 at 2021-05-11 16:33:35.201786) 2021-05-11 16:37:50.321 7fdf7e481700 1 mon.myhost@-1(probing) e13 handle_auth_request failed to assign global_id 2021-05-11 16:37:50.373 7fdf7e481700 1 mon.myhost@-1(probing) e13 handle_auth_request failed to assign global_id ```
Полезно запросить административный порт устаревшего монитора и напрямую запросить статус монитора из самого монитора, это помогает лучше понять ситуацию...
``` # получить патч административного сокета ceph-conf --name mon.myhost --show-config-value admin_socket # возможные команды монитора ceph --admin-daemon /var/run/ceph/ceph-mon.myhost.asok help # запросить статус монитора ceph --admin-daemon /var/run/ceph/ceph-mon.myhost.asok mon_status ```
Подробности можно найти здесь:
3.) Единственным рабочим решением для меня, чтобы вернуть монитор в кластер, было "внедрение monmap в монитор", как описано здесь:
С ручной корректировкой разрешений!
``` # войти на хост рабочего монитора, остановить сервис и извлечь карту service ceph-mon@myworkinghost stop ceph-mon -i myworkinghost --extract-monmap /tmp/monmap
#2021-05-11 16:44:04.119 7f6087bd6400 -1 wrote monmap to /tmp/monmap
# запустить сервис снова и перенести его на старый хост service ceph-mon@myworkinghost start scp /tmp/monmap mystalehost:/tmp/monmap
# на старом хосте монитора остановить монитор и внедрить карту service ceph-mon@mystalehost stop ceph-mon -i mystalehost --inject-monmap /tmp/monmap # после этого права доступа необходимо установить вручную для пользователя "ceph" (были ошибки отказа в разрешении файла, так как после внедрения некоторые файлы принадлежали root) chown ceph.ceph /var/lib/ceph/mon/ceph-mystalehost/store.db/* # и снова запустить service ceph-mon@mystalehost start ```
rekahsoft
Guest
0
19.06.2021 16:55:00
Снова напоролся на это на днях, и теперь жалею, что не записал, как именно я это исправил. Чтобы воспроизвести проблему: 1. Добавьте новый узел Proxmox, но перед добавлением в кластер установите и настройте Ceph (ключевой момент здесь в том, что конфигурация завершена). 2. Добавьте этот новый узел в кластер; это приведет к тому, что монитор узла станет "призраком", как описано в этом посте. "Призрачный" монитор в данном случае никогда не присоединился к кластеру, поэтому его нужно просто удалить. Для этого я использовал: Bash: systemctl stop ceph-mon@<impacted-mon> systemctl disable ceph-mon@<impacted-mon> systemctl daemon-reload systemctl reset-failed pveceph mon destroy <impacted-mon>
mr44er
Guest
0
22.12.2022 19:06:00
Это должно быть закреплено или добавлено в руководство! У меня была такая же проблема один в один с тремя мониторами. Моё решение – следовать шагам от @Jospeh Huber, а затем добавить снова через GUI. Как и ожидалось, монитор остаётся выключенным. Пробовал также injection, не помогло. Поэтому все шаги снова (но без injection!), двойная проверка, чтобы все моники не были видны больше в GUI. Выключил весь кластер, загружал по одному узлу. Затем всё стало как новое, пересоздание мониторов заработало как обычно. Quorum от всех мониторов на несколько секунд изменился на no, а потом всё вернулось в нормальное состояние (вложение). Интересно, что же произошло изначально? Я просто удалил несколько мониторов и добавил их снова через GUI, дав им достаточно времени, чтобы всё устоялось после каждого шага. У некоторых узлов это сработало, а у трех возникла эта проблема. Corosync слишком медленно синхронизирует конфигурацию? Не знаю…
thomas.weingart
Guest
0
23.02.2023 08:45:00
Привет, у меня та же проблема с монитором. Я выполнил все шаги Джозефа Хубера, включая внедрение. К сожалению, это не помогло, служба монитора отображается как "остановлена" и не запускается. Ни статус монитора, ни `ceph mon dump` его тоже не показывают. Что ещё можно сделать?
proxymax
Guest
0
02.08.2023 01:48:00
Потратил кучу времени, пытаясь разобраться с этим призрачным багом, и ничего не помогало, кроме этих шагов. Почти сдался, пока не попробовал еще раз.
aaxvig
Guest
0
24.02.2024 04:17:00
Вот как я попал в эту ситуацию. Твое решение почти сработало. Я не мог понять, что такое <impacted-mon> в последней строке. Оно автодополнялось как proxmox5.service для первых двух строк, но в последней не работало. В итоге я нашёл альтернативный финальный шаг: просто удалил папку в /var/lib/ceph/mon/: rm -r /var/lib/ceph/mon/ceph-proxmox5.
grin
Guest
0
22.09.2024 00:30:00
Просто добавлю еще одну историю: Хост был оффлайн какое-то время, потом снова появился, а mon завис на "handle_auth_request failed to assign global_id". Я вышла почитать, а когда вернулась (через 15 минут) mon снова заработал. Он пробовал около 10 минут, потом начал синхронизироваться сам: Код: 2024-09-22T00:23:03.662+0200 7dcb5b2006c0 1 mon.h0@1(synchronizing) e7 sync_obtain_latest_monmap 2024-09-22T00:23:03.663+0200 7dcb5b2006c0 1 mon.h0@1(synchronizing) e7 sync_obtain_latest_monmap obtained monmap e7, что заняло около минуты, потом (с новой, актуальной monmap) он начал работать как ни в чем не бывало. (Это было 17.2.7 quincy). Скорее всего, было бы быстрее, если бы я вручную вставила актуальную monmap.
psionic
Guest
0
13.01.2020 20:48:00
ls /etc/systemd/system/ceph-mon.target.wants/ ls: не удалось открыть '/etc/systemd/system/ceph-mon.target.wants/': такого файла или каталога нет
Видел такое поведение после того, как узел упал и потребовалась полная замена (даже не буду вдаваться в длинную историю, которая не особо важна). При запуске нового узла-заменителя Proxmox заметил следующее: Systemd-сервис для монитора узлов был включен и работал, но периодически вылетал. Затронутый монитор не отображался в `ceph mon_status`. Файлы keyring и monitor map для монитора были на месте в `/var/lib/ceph/mon/ceph-<node>`. В Proxmox UI отображался IP-адрес монитора (без порта), а в колонках `version` и `quorum` было пусто. Когда пытался удалить проблемный монитор, выдавала ошибку `destroy : no such monitor id 'pve-<node>' (500)` (и в CLI, и в UI). Решил я это так: создал монитор с помощью ceph, затем удалил и добавил его обратно через pveceph.
fxandrei
Guest
0
08.04.2021 10:42:00
У меня похожая проблема. Можешь рассказать подробнее, что ты сделал на самом деле? Как ты создавал монитор с Ceph, если сервис уже был создан и работал?