Skip to content

Cómo migrar un servidor Linux a un nuevo hardware

  • by Jesús Torres
Shutterstock / asharkyu

Ya sea que esté actualizando a servidores más potentes, mudándose a nuevas regiones o agregando nuevas instancias, la migración de un servidor Linux se puede hacer más posible implementando las estrategias adecuadas y conociendo los comandos correctos. Discutiremos cómo mover su servidor a una nueva máquina con un insignificante de molestias.

Estrategias de migración

La logística más simple y eficaz es una implementación zarco verde: ponga el nuevo servidor en funcionamiento y, cuando esté presto para producción, cambie el tráfico a él y elimine el servidor inicial una vez que haya verificado que no hay problemas. Con el inmovilidad de carga, este proceso puede ocurrir de forma incremental, lo que reduce aún más las posibilidades de problemas de disponibilidad.

Una implementación azul-verde implica copiar todos los archivos, paquetes y código del servidor antiguo al nuevo. Esto puede ser tan simple como instalar manualmente los paquetes necesarios, como un servidor web NGINX, y luego copiar la configuración del servidor existente. Asimismo puede hacer una copia de seguridad completa del disco y crear un nuevo servidor a partir de eso.

Por supuesto, ahora es el momento consumado para considerar si puede utilizar contenedores o escalado espontáneo. Los contenedores de Docker se pueden detener, iniciar y portar fácilmente copiando los volúmenes de datos subyacentes (o utilizando un almacén de datos compartido como EFS). Utilitario Scaling difiere según los proveedores, pero si está agregando una nueva copia de su servidor para satisfacer la creciente demanda, puede que sea adecuado para su negocio. Asimismo puede utilizar el escalado espontáneo con contenedores Docker en muchas plataformas como AWS ECS.

La configuración de los contenedores y el escalado espontáneo requiere que haga gran parte del mismo trabajo que tendrá que hacer para transferir el servidor manualmente, como automatizar la instalación de paquetes y su propio código, por lo que si planea portar nuevamente en el futuro , debería considerar ahora si sería mejor cambiar a contenedores o configurar el escalado espontáneo.

Si está interesado en contenedores, puede interpretar nuestra finalidad para comenzar con Docker para obtener más información, o interpretar nuestra finalidad para usar el escalado espontáneo en AWS o Google Cloud Platform.

RELACIONADO: Cómo empaquetar la infraestructura de su aplicación con Docker

Instalación de paquetes

Si no está seguro de lo que ha instalado en el servidor inicial, el mejor método para comprobarlo es obtener una nómina de todos los servicios instalados. Esto mostrará la mayoría de las cosas principales que necesitará instalar:

service --status-all

La razón para preferir los servicios de relación es porque la nómina de paquetes instalados puede ser muy de grande, con cada dependencia último igualmente instalada. Mi servidor de prueba de Ubuntu tenía instalados más de 72000 paquetes, por lo que la nómina de ellos no es muy útil considerando que todos se instalarán de todos modos al instalar los servicios principales que necesita el nuevo servidor.

Si lo desea, puede enumerarlos todos con el subsiguiente comando:

sudo apt list --installed

Para despabilarse en la nómina de paquetes un paquete específico, puede usar:

sudo apt -qq list program_name --installed

De cualquier forma, querrá hacer una nómina de los paquetes que necesita instalar e instalarlos en el nuevo servidor.

Transferencia del disco del servidor con rsync

Puede guardar el disco con tar, pero tar generalmente está destinado a guardar archivos o directorios individuales, no un disco completo. Si está moviendo una gran cantidad de datos, es posible que no tenga suficiente espacio para hacer una copia de seguridad localmente (¡quizás esa sea incluso la razón de la puesta al día!).

En este caso, querrá utilizar el rsync comando para cargar los datos directamente en el servidor de destino. rsync se conectará a través de SSH y sincronizará los dos directorios; en este caso, queremos destinar el directorio regional al servidor remoto, así:

rsync -azAP /etc/nginx username@remote_host:/etc/nginx

Ese es todo el comando: debería ver una mostrador de progreso a medida que se transfiere (usando la compresión con el -z flag), y cuando haya terminado, verá los archivos en el directorio de destino en el nuevo servidor. Puede que tenga que ejecutar esto varias veces para copiar cada directorio; puedes usar esto en ruta rsync productor de comandos para difundir el comando para cada ejecución.

Si lo desea, puede intentar copiar todo el sistema de archivos raíz al nuevo servidor, excluyendo algunos archivos del sistema:

sudo rsync -azAP / --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} username@remote_host:/

Si solo está buscando hacer una copia de seguridad de algunos directorios, puede usar un simple tar comando en su oficio para difundir un archivo de archivo único:

tar -czvf nginxconfig.tar.gz /etc/nginx

Esto genera un archivo que puede transferir al servidor de destino con scp o por FTP. Luego, extraiga el archivo al directorio de destino:

tar -xzvf nginxconfig.tar.gz -C /etc/nginx

Transferencia de una colchoneta de datos

Si necesita transferir una colchoneta de datos, querrá hacer una copia de seguridad y volcar la colchoneta de datos de origen. Para MySQL, eso sería:

mysqldump -uUser -pPass -hHost --single-transaction database > backup.bak

Para MongoDB, eso sería:

mongodump --host=mongodb.example.net --port=27017

Luego, deberá restaurar la colchoneta de datos en el servidor de destino. Para MySQL, eso sería:

mysql -u [user] -p [database_name] 

y para MongoDB, eso sería:

mongorestore   

Para otras bases de datos, debería poder encontrar los comandos relevantes en ruta.

Cambio de IP al nuevo sistema

Por supuesto, querrá confirmar que todo funcione según lo previsto ayer de continuar, pero una vez que lo esté, querrá cambiar el tráfico al nuevo servidor.

La forma más sencilla de hacer esto es cambiar sus registros DNS. Una vez actualizado, los clientes y servicios se enviarán al nuevo servidor. Sin retención, esto sucede todo a la vez, por lo que si tiene un equilibrador de carga, sería mejor realizar una transición lenta del tráfico a la nueva instancia.

Si está en AWS o en un proveedor similar con direcciones IP elásticas, puede cambiar la dirección para apuntar al nuevo servidor, que no requerirá una puesta al día de DNS. Desde la pestaña Elastic IPs en la consola EC2, Action> Associate Elastic IP Address.

Esto le permitirá modificar la asociación, que cambiará instantáneamente el tráfico a la nueva instancia.