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