Necesitamos clonar en caliente un servicio de Linux cuando está vivo, no solo porque no podemos reiniciar o algo así; es solo por nuestro escenario especial (sí, ya he leído esta respuesta, pero es un poco diferente de la mía Clone un servidor Linux en funcionamiento ).
Tenemos un nodo de cálculo, puede decir un nodo de cálculo de PNL que ejecuta algunos modelos en él. Cuando comenzamos el nodo (con un servicio, por supuesto), el cálculo será muy lento hasta que lo alimentemos varias veces. Lo llamamos calentamiento.
Desafortunadamente, el trabajo de calentamiento tarda mucho en esperar (tal vez nuestro cálculo finalizó antes de que el nodo se calentara).
Entonces, surge el problema, ¿hay una manera estable de clonar en caliente un servidor Linux para mantener el nodo con el mejor rendimiento para que podamos clonarlo y ponerlo en línea en menos tiempo?
Respuestas:
Tal vez no pueda "clonar en caliente" un servidor completo (puede hacerlo, pero solo si es una máquina virtual), pero puede congelar y restaurar un solo proceso, con criu , Checkpoint / Restore en Userspace.
Esto le permite guardar el estado interno del programa en el disco y detener el programa, y luego, restaurar el programa a ese estado desde los archivos guardados.
Para admitir la operación deseada, puede copiar los archivos que representan el programa guardado en otro servidor y restaurarlo allí.
criu requiere un kernel reciente con varias características compiladas, por lo que las distribuciones de Linux más antiguas podrían no funcionar. Puede ejecutar
criu check
en una máquina en particular para determinar si los requisitos previos para criu están presentes.fuente
Puede estar un poco fuera del alcance de su entorno actual, pero la forma estándar de hacerlo es virtualizar su servidor. Muchos hosts de virtualización (VMware, virtualbox, etc.) permiten "instantáneas" que guardan el estado de un servidor, que luego se puede clonar en nuevas instancias. Estas nuevas instancias tendrán exactamente el mismo estado que el original, hasta los procesos en ejecución. Por supuesto, querrá asegurarse de que el software que está ejecutando seguirá funcionando correctamente en un entorno virtual (me viene a la mente el cálculo de CUDA / GPU).
fuente
La pregunta que menciona se refiere a un enlace, http://www.linuxfocus.org/English/March2005/article370.shtml , que describe todas las formas en que había imaginado hacer sus solicitudes.
Que las opciones estén ahí no significa mucho lo que se está ejecutando en el servidor. Debe tener en cuenta que todos los archivos que podrían cambiar en el proceso de clonación podrían ser archivos inconsistentes en la máquina de destino. En esa publicación, proporcione que hablen sobre bases de datos, y clonarla de esa manera no ofrece ningún seguro de integridad de datos.
No está exactamente claro a qué se refería con "hasta que lo alimentemos varias veces" .
Pero si entendí bien lo que pides, debes considerar que para clonar un sistema necesita tiempo para copiar y calcular recursos.
Para realizar un "ENCENDIDO / APAGADO" o mejor denominado entorno activo / de respaldo, el servidor debe configurarse correctamente en el clúster.
Lo siento si no es la respuesta que esperas, pero las opciones que obtienes son esas.
fuente
Hay muchos problemas potenciales con lo que está tratando de hacer, y, por supuesto, como sabe, sería mejor desconectar el servidor y clonarlo mientras no se almacenan datos dinámicamente.
Sin embargo, lo que busca hacer es totalmente plausible, como lo he hecho antes. Si lo usa
dd
, puede clonar el servidor completo en el nivel de bloque a otra unidad u otro servidor. Sin embargo, requerirá una configuración adicional en el nuevo servidor, y probablemente no podrá simplemente apagar el otro y encender el nuevo. Para que podamos entender esto, necesitamos saber algunas cosas sobre el hardware y software de su servidor.En primer lugar, para determinar la mejor estrategia de datos, sería útil saber qué se actualiza regularmente. ¿Tiene un servidor SQL que se actualiza dinámicamente pero tiene contenido estático? Alternativamente, ¿tiene un equipo de desarrolladores sobre un sistema de subversión como git enviando actualizaciones constantes de datos a su contenido? Dependiendo de lo que se actualice, se determinará el mejor curso de acción completo.
Si, por ejemplo, solo el SQL se actualiza regularmente, puede migrar a un nuevo servidor mientras ese servidor está activo de la siguiente manera:
dd
para clonar todos los datos del nuevo servidor.Es posible que deba desconectar temporalmente su servidor original para asegurarse de no perder ningún dato. Alternativamente, para tener un tiempo de inactividad cero, puede activar el segundo en vivo, apuntar el dns al nuevo servidor y luego actualizar cualquier entrada de dns manualmente en el nuevo servidor, para que efectivamente haya un tiempo de inactividad cero. Sin embargo, esto es más complicado que unos pocos minutos de tiempo de inactividad para hacer una copia de seguridad del sql y restaurarlo en el nuevo servidor, pero puede ser necesario para cero tiempo de inactividad.
Por supuesto, este es solo un ejemplo de caso de uso, y dependiendo de su configuración y varias variables, es posible que necesite crear su propia estrategia para la migración en función de su caso específico.
El otro problema está relacionado con la configuración del hardware del servidor. ¿El nuevo servidor es 100% idéntico en hardware al antiguo servidor? Si es así, entonces la configuración es más fácil. Sin embargo, si, por otro lado, es una configuración de hardware totalmente diferente, entonces es posible que deba implementar una estrategia diferente, que es simplemente configurar el segundo servidor con anticipación y luego hacer una copia de seguridad de todos sus datos y bases de datos sql en el primer servidor y migrarlos manualmente, cambiando la configuración según lo desee.
La migración del servidor no es en absoluto trivial, y para tener un movimiento exitoso, debe tener un conocimiento profundo de los servidores, o del personal disponible que tenga el mismo. En cualquier caso, se recomienda encarecidamente que realice una copia de seguridad completa y la almacene en una tercera fuente, incluso en su computadora local, de modo que si ocurre el peor de los casos (ambos servidores se bloquean y mueren irreparablemente), todavía tiene otro copia de sus datos para reconstruir sus servidores.
Espero que esto ayude, ¡y buena suerte con tu servidor!
fuente