VMmanager устанавливает статус "Недоступен" для узла кластера, если:
- узел недоступен по SSH;
- нет доступа к программному обеспечению libvirt на этом узле.
Чтобы восстановить доступ, подключитесь к узлу вручную и устраните причину неполадки.
Если нет доступа по SSH
- Проверьте, что узел кластера доступен по сети с сервера VMmanager.
- Проверьте, что SSH-ключ, используемый для подключения, указан верно:
-
Посмотрите содержимое открытого SSH-ключа на сервере с VMmanager:
docker exec -it vm_box cat /opt/ispsystem/vm/etc/.ssh/vmmgr.1.pub
- Проверьте, содержится ли ssh-ключ из ответа команды в файле root/.ssh/autorized_keys на узле кластера. Если ключ отсутствует, добавьте его в файл.
-
-
Проверьте открыты ли на узле кластера входящие соединения для SSH:
lsof -i | grep :ssh
Если входящие соединения закрыты, обратитесь к вашему системному администратору для настройки SSH и файрвола.
-
Проверьте, что количество соединений по SSH на узле кластера не превышает лимит:
cat /etc/ssh/sshd_config | grep maxSessions
Если лимит превышен:
- Увеличьте параметр maxSessions в файле /etc/ssh/sshd_config.
-
Перезапустите службу SSH:
systemctl restart sshd
-
Убедитесь, что в файле /etc/ssh/sshd_config разрешено подключение под учётной записью root. Если разрешение отсутствует, добавьте в файл строку:
PermitRootLogin yes
Если нет доступа к libvirt
- Проверьте, что узел кластера доступен по сети с сервера VMmanager.
- Запустите подключение платформы к узлу: перейдите в Узлы → выберите узел → меню → Изменить параметры подключения → не изменяйте заданные параметры → кнопка Подключиться к узлу.
-
Проверьте, запущен ли на узле кластера сервис libvirtd:
systemctl status libvirtd.service
-
Если сервис не запущен, запустите его:
systemctl start libvirtd.service
-
Проверьте, открыт ли на узле кластера порт TLS — 16514/tcp:
Команда для firewalldfirewall-cmd --list-ports
Команда для nftablesnft list ruleset | grep 16514
-
Если порт закрыт, откройте его:
Команда для firewalldfirewall-cmd --permanent --add-port=16514/tcp && firewall-cmd --reload
Команда для nftablesnft add rule inet filter INPUT tcp dport 16514 ct state { new, untracked } accept && nft list ruleset > /etc/nftables/vmmgr.nft
Пояснения к команде -
Проверьте cрок действия сертификата libvirt. Сертификат libvirt — это TLS-сертификат, который сервис libvirt использует для проверки идентичности сервера и клиентов:
/usr/bin/certtool --certificate-info --infile /etc/pki/libvirt/clientcert.pem | grep 'Not After'
Пример ответаNot After: Fri Nov 18 06:12:43 UTC 2050
Если срок действия истёк, обновите сертификат:
- Получите токен авторизации:
curl -k -X POST -H "accept: application/json" -H "Content-Type: application/json" 'https://example.com/api/auth/v4/public/token' -d '{"email": "admin_email", "password": "admin_pass"}'
Пояснения к командеВ ответ придёт сообщение вида:
Пример ответа в JSON{ "confirmed": true, "expires_at": null, "id": "6", "token": "4-e9726dd9-61d9-2940-add3-914851d2cb8a" }
Сохраните полученное значение параметра token — токен авторизации.
-
Выполните запрос:
curl -k -X POST "https://domain.com/vm/v3/node/<node_id>/cert" -H "Cookie: <auth_token> " -H "x-xsrf-token: <auth_token> " -H "isp-box-instance: true" -H "accept: */*" -H "Content-Type: application/json" -d ''
Пояснения к командеОбновление сертификата может занять несколько минут.
- Чтобы узнать результат обновления, откройте список задач в интерфейсе платформы и просмотрите информацию о задаче с типом "Обновление сертификатов TLS на узле".
- Получите токен авторизации:
- При необходимости выполните настройку сервиса libvirt:
-
Остановите сервис:
systemctl stop libvirtd.socket
- Для узлов с ОС AlmaLinux 8 в файле /etc/sysconfig/libvirtd замените строку LIBVIRTD_ARGS = "–listen" на LIBVIRTD_ARGS=.
- В файле /etc/libvirt/libvirtd.conf:
- Раскомментируйте строку #listen_tls = 1.
- Замените строку listen_addr = на listen_addr = "0.0.0.0".
- В файле /etc/libvirt/qemu.conf замените строку vnc_listen = на vnc_listen = <адрес узла>.
-
Запустите сервис:
systemctl start libvirtd.socket
-
- Запустите подключение платформы к узлу: перейдите в Узлы → выберите узел → меню → Изменить параметры подключения → не изменяйте заданные параметры → кнопка Подключиться к узлу.
-
Если подключение не восстановилось, перезапустите libvirtd:
systemctl stop libvirtd-ro.socket systemctl stop libvirtd-admin.socket systemctl stop libvirtd.socket systemctl stop libvirtd.service systemctl start libvirtd-tls.socket systemctl start libvirtd-ro.socket systemctl start libvirtd-admin.socket systemctl start libvirtd.socket
- Если командой выше не удалось перезапустить сервис, перезапустите libvirtd одной из следующих команд в зависимости от ОС:
-
для AlmaLinux 8:
systemctl restart libvirtd.socket
-
для AlmaLinux 8 с версиями libvirt меньше 5.6:
systemctl stop libvirtd-ro.socket systemctl stop libvirtd-admin.socket systemctl stop libvirtd.socket systemctl stop libvirtd.service systemctl start libvirtd-tls.socket
-
для других ОС:
systemctl restart libvirtd.service
-