Migrar containers dentro entre hosts distintos
Temos um cliente com uma máquina antiga, que tem 10 VPS a correr num servidor CentOS com OpenVZ, e necessitava de migrar para uma máquina nova esses containers. Tive que explorar, e descobri que é um processo até bastante simples.
Numa primeira fase, que não tem a ver com o openvz em si, temos que configurar o acesso do servidor antigo ao novo, sem ser necessário password. Isso é simples, usando ssh keys. Ultrapassada essa fase (ou seja, fazendo ssh servidor_novo a partir do antigo, e ele ligar-se directamente sem pedir password), basta usar o vzmigrate. É possível até fazer a migração sem grande downtime, usando o comando
vzmigrate --online 10.0.0.1 120 Em que 10.0.0.1 é o IP do servidor de destino, e 120 é o CID.
A partir daqui:
OPT:--online
OPT:10.0.0.2
Starting online migration of CT 120 to 10.0.0.1
Preparing remote node
Initializing remote quota
Syncing private
Live migrating container...
Syncing 2nd level quota
Cleanup
E pronto, se fizermos “vzlist -a” no servidor antigo, veremos que o container já não está lá. E o mesmo comando no servidor novo, mostra-nos o container a correr. Se durante o processo pingar-mos o IP do container, o downtime é praticamente nulo.
Nota: Isto funcionou tudo muito bem, para containers centos, dentro de um host centos também, e com menos de 12Gb. Ao copiar um de 19Gb o container foi para o servidor novo, mas simplesmente não o consegui eliminar do antigo. E tive que o arrancar no novo.