Пересборка кластера Proxmox
Небольшая заметка о том, что делать, если развалился кластер Proxmox, и как заставить его пересобраться. Также поможет и при некоторых других болезнях Proxmox, например, если перестал работать web-интерфейс. Следующий текст не претендует на панацею, но если вы недостаточно знаете Linux, не работали с Proxmox и не знаете, в какую сторону смотреть в случае подобных проблем, то этот рецепт вам стоит попробовать.
Итак, как-то мне достался в наследство кластер Proxmox (версия 3.4) из 6 нод (предположим, с именами машин pve01 — pve06). Меня предупредили, что кластер периодически разваливался, выпадали ноды, прерывались бэкапы и т. д. и это лечилось перезагрузкой нод. Работы и так было очень много и ещё приходилось отвлекаться и на это. Конечно, такое положение дел мне не нравилось, поэтому в качестве временного обходного решения я написал простенький приведённый ниже скрипт.
Симптомы
Развалился кластер Proxmox — некоторые ноды красные и недоступны из web-интерфейса. При этом все виртуальные машины работают. В логах /var/log/daemon.log и /var/log/syslog есть сообщения такого вида:
ipcc_send_rec failed: Transport endpoint is not connected ipcc_send_rec failed: Connection refused
Скрипт для пересборки кластера
Скрипт пытается перезапустить некоторые ключевые сервисы кластера. В итоге сетевые подключения должны переинициализироваться и через несколько минут кластер может быть восстановлен. Не принципиально на какой ноде запускать, просто нужно учесть в нём все ноды и в данном случае скрипт запускается пользователем root на ноде pve01.
#!/bin/bash echo "######" Перезапуск локальных сервисов "######" service ntp restart service pvedaemon restart service pvestatd restart service pve-cluster restart service pve-manager restart service pveproxy restart echo "######" Начинаю перезапуск удалённых сервисов "######" for PVE in pve02 pve03 pve04 pve05 pve06 do echo "######" Перезапуск сервисов на $PVE "######" ssh root@$PVE -t service ntp restart ssh root@$PVE -t service pvedaemon restart ssh root@$PVE -t service pvestatd restart ssh root@$PVE -t service pve-cluster restart ssh root@$PVE -t service pve-manager restart ssh root@$PVE -t service pveproxy restart done
Если в вашей версии Proxmox вместо ntp используется chrony, то это нужно учесть, конечно. Да и вообще, проверить, все ли эти сервисы у вас используются. В моём случае этот скрипт решал почти любые проблемы с кластером или нодами индивидуально.
Позже я собрал ещё один кластер на Proxmox 5 и с ним таких проблем не было.