===== Изменение хостнеймов в кластере PMG ===== Представим ситуацию, когда в рабочем кластере //Proxmox Mail Gateway// - нам необходимо поменять имена хостов. К примеру, такая потребность может возникнуть, если нам требуется поменять //HELO//. Теоретически, мы можем поменять в файле ///var/lib/pmg/templates/main.cf.in// опцию //smtp_helo_name// таким образом, чтобы она принимала значение такое же, как и опция //SMTPD Banner//, доступная в GUI PMG: smtpd_banner = [% pmg.mail.banner %] smtp_helo_name = [% pmg.mail.banner %] Однако, данные конфигурации синхронизируются во всем кластере, а если нам необходимо //HELO//, отличное для каждого хоста - следует менять именно имя хоста. Отредактировать имя необходимо в следующих файлах (и перезагрузиться): /etc/hostname /etc/hosts reboot :!: Имена нод кластера, прописанных в данных файлах, должны разрешаться для каждого сервера. Т.е. один сервер должен правильным образом разрешать собственный hostname и hostname другого сервера, и наоборот. Примерно вот так без привлечения внешних //DNS// (содержимое файла /etc/hosts): 127.0.0.1 localhost.localdomain localhost 192.168.1.1 mail1.arasaka.local mail1 192.168.1.2 mail2.arasaka.local mail2 ==== Решение возможных проблем ==== После поочередной перезагрузки нод в кластере одна из нод долго висит в статусе //syncing//? Время заняться траблшутингом! В первую очередь можно попробовать вручную отдать команду синхронизации на нодах и посмотреть - нет ли ошибок. pmgcm sync pmgcm status Если здесь всё ОК, но кластер продолжает висеть в статусе //syncing//, стоит почитать системный журнал на предмет возможных проблем с //pmgmirror// и //pmgtunnel//. journalctl -u pmgmirror -u pmgtunnel --since today //pmgmirror// в этой связке занимается репликацией баз на все ноды кластера. \\ //pmgtunnel// туннелирует подключения к //Postgres// на другой ноде кластера. После изменения имени нод я обнаружил такую ошибку, связанную с работой //pmgtunnel//: database sync 'pmg_server' failed - DBI connect('dbname=Proxmox_ruledb;host=/run/pmgtunnel;port=2;','root',...) failed: connection to server o> Is the server running locally and accepting connections on that socket? at /usr/share/perl5/PMG/DBTools.pm line 66 tunnel finished 3212 10.10.111.198 pmgtunnel[673]: restarting crashed tunnel 3306 192.168.1.1 Можно проверить статус pmgtunnel командой: pmgtunnel status ОК, видим статус //running//. Не очень информативно. Самое время попробовать остановить //pmgtunnel// и запустить заново в режиме //debug//. pmgtunnel stop pmgtunnel start --debug Через несколько секунд видим кое-что интересное: Host key verification failed Вполне вероятно, наш сервер после смены имени не доверяет соседу при подключении по //ssh//. Попробуем сделать обновление отпечатков. pmgcm update-fingerprints Посе чего получаем ошибку: TASK ERROR: 500 update fingerprints failed: unable to get remote node fingerprint from 'xxxxxxx': command 'ssh -l root -o 'BatchMode=yes' -o 'HostKeyAlias=pmg2' 111.222.333.444 'openssl x509 -noout -fingerprint -sha256 -in /etc/pmg/pmg-api.pem'' failed: exit code 255 Почему бы не выполнить команду вручную и не посмотреть её output глазами? ssh -l root -o 'BatchMode=yes' -o 'HostKeyAlias=pmg2' 111.222.333.444 'openssl x509 -noout -fingerprint -sha256 -in /etc/pmg/pmg-api.pem' Тем более, что есть шанс увидеть нечто знакомое: Host key verification failed Теперь самое простое решение - это попробовать с одного сервера //PMG// установить подключение по //SSH// на второй сервер. Оно должно пройти без всяких паролей потому что //PMG// сам устанавливает нужные ключи. Просто подключаемся и //подтверждаем// запрос доверия: ssh pmg_address Если запрос мы подтвердили и подключение устанавливается нормально - время снова проверить проблемный //pmgtunnel//: pmgtunnel stop pmgtunnel start --debug {{tag>Proxmox PMG Unix Debian Mail}}