Solución de duplicación de servidores Unix

Solución de duplicación de servidores Unix

Contamos con tres servidores ejecutando Ubuntu Server 10.04, balanceando la carga entre ellos a través de DNS. Usamos Django, nginx para servir contenido y PostgresQL como base de datos.

Para PostgresQL, existen algunas soluciones de duplicación, pero ¿cuál es la mejor manera de duplicar nuestros archivos estáticos, utilizando el esquema de "tres maestros"?

Supongo que simplemente sincronizarlos no sería una forma escalable y fácil de mantener.

Respuesta1

Siempre que los archivos no cambien con frecuencia y deban mantenerse sincronizados en todo momento, ¿por qué no rsync? Solo asegúrese de tener un servidor maestro donde edite los archivos, eso facilita la sincronización.

Aparte de eso, un sistema de archivos en red como NFS podría funcionar, o implementar algo comoDRBDpara mantener los archivos sincronizados en todo momento.

Respuesta2

Hay muchas otras soluciones (afs, unionfs...), pero rsync funciona sorprendentemente bien para la replicación unidireccional y se repara automáticamente, y es escalable según se hayan definido rutas para la replicación (un único maestro está bien para hasta alrededor de 5 esclavos, pero más allá de eso probablemente haya una buena razón para optar por la replicación de múltiples niveles).

El único problema es el momento de la replicación. Dado que está utilizando DNS por turnos, ya tiene afinidad de servidor, por lo que no tendrá el problema de que un usuario actualice el servidor A y luego no pueda ver las actualizaciones porque está mirando el servidor B. Pero los retrasos en la propagación de El código puede causar algunas molestias en las implementaciones (especialmente si el código depende de los cambios de DDL en una base de datos común).

Si debe tener una replicación bidireccional (intente evitarla si es posible), entonces sí, un sistema de replicación en tiempo real sería más apropiado.

Si actualmente está ejecutando rsync manualmente/mediante cron, podría considerar usar inotify para ejecutar rsync en archivos a medida que cambian, de modo que el retraso sea muy corto.

C.

Respuesta3

Cuando el código se implementa en producción, se debe implementar en todos los servidores a la vez. Si esta acción se controla adecuadamente, debería reflejarse como parte de sus controles y una solución tecnológica será innecesaria. No todas las soluciones administrativas se basan en tecnología.

AbiertoEFSes una herramienta que fue diseñada para permitir el control de cambios, así como las implementaciones, lo que puede resultarle útil. Implementé mucho de lo que hacen por mi cuenta, pero para alguien que no tiene bases, sería un buen comienzo.

Para servidores estáticos que no están dentro del alcance del control de cambios, he descubierto que rsync es una solución adecuada en el pasado. Normalmente, para los servidores que entran en esta categoría, es poco probable que el escalado sea un problema, pero si lo es, ahí es dondeNFSoAFSpodría entrar en juego.

información relacionada