Sincronización de archivos entre dos servidores detrás del equilibrador de carga

Sincronización de archivos entre dos servidores detrás del equilibrador de carga

Tengo una pregunta sobre mejores prácticas. Tenemos una aplicación que se ejecuta en dos servidores detrás de un equilibrador de carga. La mayoría de los datos están en una base de datos común, los archivos cargados por el usuario están en el almacenamiento de objetos. Por lo tanto, no hay mucho que mantener sincronizado, excepto algunos archivos de configuración YAML que genera el usuario a través del backend de la aplicación.

¿Cuál es la mejor práctica para mantener estos archivos sincronizados? Una solución que se me ocurrió es montar un volumen compartido para alojar el código y los archivos de configuración. ¿Existe una solución mejor?

Respuesta1

Asumir sólo una "mejor práctica" es una trampa. Siempre hay más de una solución.

Almacenar el contenido de los archivos de configuración en la base de datos es una opción. Blobs administrados por alguna aplicación, posiblemente escritos en el disco si eso es lo que otra cosa está leyendo. O modifique la aplicación para utilizar campos de datos discretos en la base de datos en lugar de documentos YAML. Aprovecha la base de datos central existente, pero requiere que esa base de datos esté disponible primero.

Guarde los archivos de configuración en el paquete de software o la imagen que contiene la aplicación. Implemente otros nuevos actualizando la aplicación. Solo tiene sentido si esos archivos los cambian las mismas personas o procesan la actualización de la aplicación.

Copie los archivos de la copia autorizada a cada instancia según un cronograma o en caso de cambio. Elija entre software de copia de archivos, rsync, sftp. Se necesitarían algunas secuencias de comandos adicionales si la instalación fuera transaccional, en el sentido de que todos los archivos estén instalados o ninguno de ellos.

Montar un recurso compartido de archivos de red. Tenga en cuenta que si los recursos compartidos NFS o SMB se desconectan de forma no planificada, esto puede provocar problemas de rendimiento.

información relacionada