Migrácia z bare-metal na Proxmox bez výpadku
Ako preniesť produkčné služby zo železa do virtualizácie tak, aby si to nikto nevšimol.
Klient mal štyri fyzické servery, každý s jednou aplikáciou. Klasika z rokov 2015–2018: jeden server = jedna služba, žiadna virtualizácia, žiadne zálohy okrem rsync na NAS.
Zadanie: dostať to na Proxmox, získať snapshoty a živú migráciu, a nemať výpadok dlhší než pár minút na službu.
Plán
Postup, ktorý používame skoro vždy:
- Postaviť nový Proxmox cluster vedľa (tri nody, Ceph pool).
- Pre každú službu vytvoriť VM a nasadiť ju z konfiguračného manažmentu — nie klonovaním starého disku.
- Nechať obe inštancie bežať paralelne, dáta synchronizovať jednosmerne.
- Prepnúť DNS / load balancer, sledovať, starú inštanciu nechať týždeň v pohotovosti.
Bod 2 je dôležitý. Klonovanie fyzického disku do VM (P2V) je rýchle, ale prenesie so sebou aj desať rokov nánosov — staré balíky, ručné zmeny v /etc, ktoré nikto nezdokumentoval. Ak máte Ansible, radšej postavte nanovo.
Čo nás prekvapilo
Licenčný server. Jedna z aplikácií mala licenciu viazanú na MAC adresu fyzickej karty. Riešenie: nastaviť rovnakú MAC na virtuálnom rozhraní. Fungovalo, ale zistili sme to až v deň migrácie.
IOPS na Ceph. Databáza, ktorá na lokálnom NVMe bežala bez problémov, na Ceph poole s tromi replikami citeľne spomalila. Presunuli sme ju na local-lvm na jednom node a rieši sa replikáciou na úrovni databázy, nie úložiska.
# Meranie pred rozhodnutím — vždy sa oplatí
fio --name=randwrite --ioengine=libaio --iodepth=32 \
--rw=randwrite --bs=4k --direct=1 --size=4G \
--numjobs=4 --runtime=60 --group_reporting
Výsledok
Celková migrácia trvala tri týždne, z toho reálne prepnutia štyri okná po ~4 minútach. Klient odvtedy má:
- Snapshoty pred každým update-om.
- Zálohy cez Proxmox Backup Server, denne, s deduplikáciou.
- Možnosť presunúť VM medzi nodmi počas údržby bez výpadku.
Konsolidácia štyroch fyzických strojov na tri (s rezervou) navyše znížila spotrebu v racku o zhruba tretinu.