Actualmente estoy tratando de especificar un clúster escalable horizontalmente para una aplicación web basada en drupal, que se parece a un diagrama colorido a continuación:
El equilibrador de carga implementa sesiones fijas, por lo que un usuario mantiene el estado una vez que se le ha asignado un servidor para trabajar.
Cada servidor de aplicaciones tiene lo siguiente:
- barniz en la parte delantera
- Drupal 6 en el medio que se ejecuta en la pila de lámparas
- Memcached en la parte posterior
Los dos servidores de bases de datos mysql están en una IP compartida, y están en un clúster HA con DRBD, y escuchan, de modo que perder uno no derribará toda la plataforma.
Hay algunas cosas de las que no estoy seguro que agradecerían sus opiniones:
¿Cómo debe escalar el almacenamiento de archivos horizontalmente?
Estoy pensando en usar NFS para montar un directorio de archivos compartidos en cada servidor de aplicaciones, por lo que un archivo cargado en un lugar está disponible en todos ellos. Estoy pensando en NFS porque ha existido durante años, y no tengo experiencia con MogileFS o GlusterFS, y es algo que hemos usado antes, por lo que estamos más familiarizados con él.
¿Hay alguna pauta a seguir para determinar cuántos servidores es aconsejable compartir un directorio a través de NFS de esta manera?
¿Cómo se debe proporcionar HA en el almacenamiento de archivos compartidos aquí?
Un problema aquí es que el servidor NFS es un único punto de falla.
Ya estamos usando Heartbeat y DRBD en los servidores Mysql, y preferiría mantener la cantidad de tecnologías involucradas en una pila lo más baja posible: ¿qué inconvenientes habría si usara la misma estrategia de HA para el archivo? servidores también?
Un enfoque alternativo
Esto es para un sitio interno interno, con un número finito de usuarios que ocasionalmente usan el sitio de manera muy intensiva por períodos cortos, cuando se activa una iniciativa interna. Entonces, esto no necesita escalar infinitamente como un inicio.
Dado que
- hay un límite superior para el tráfico que podemos esperar
- agregar agregar HA a los servidores de archivos y diseñar una configuración para escalar horizontalmente de esta manera introduce una complejidad considerable
También estoy considerando hacer que los dos servidores web sean más robustos para que puedan manejar la carga máxima entre ellos, y configurar unísono o rsync entre los dos en un trabajo cron, de modo que:
- sus archivos aún están sincronizados (las sesiones fijas mantienen a un usuario en el mismo servidor en el que cargaron un archivo)
- perder uno significa que el sitio aún está operativo.
¿Suena esto como una posible forma de evitar posibles dolores de cabeza de complejidad NFS / DRBD HA?
Gracias,
C