Tengo varios servidores web de Linux conectados a un equilibrador de carga, y me gusta compartir activos (como imágenes, videos y otras cosas) entre estos servidores. ¿Cuál es la mejor manera de hacer esto?
Actualmente, he montado en un servidor de archivos a todos los servidores web, pero me preocupa que se caiga bajo un tráfico pesado. ¿Cómo puedo evitar que esto suceda?
Gracias por adelantado.
linux
web-server
file-sharing
getmizanur
fuente
fuente
Respuestas:
Hay varias formas de hacerlo según sus necesidades.
Los dos primeros son mejores si tiene muchos archivos nuevos por venir. La tercera sería la solución ideal si no agrega o cambia archivos con tanta frecuencia, ya que los usuarios obtendrán 404 en contenido estático que aún no está sincronizado.
La última opción podría ser ideal en muchos sentidos, pero también podría ser la más cara de las 4. También necesitaría reescribir sus sitios web para admitir esto.
fuente
Otra excelente manera de disminuir la carga en los servidores web y realizar el equilibrio de carga es con squid (es decir, squid3). Configúrelo como un proxy inverso con almacenamiento en caché. Almacenará en caché el contenido estático, como imágenes, etc., ya sea en el HDD (predeterminado) o en la RAM (más rápido y mejor) si lo configura de esa manera. Es capaz de hacer round robin a otros servidores squid también si algún nodo en particular está sobrecargado.
fuente
Dado que generalmente la necesidad de más servidores proviene de los recursos necesarios para ejecutar sitios web / aps dinámicos, considere alojar activos estáticos en otro subdominio / dominio. (como static.yourdomain.com)
Luego puede usar otro servidor / servidores para alojarlos. El alojamiento de archivos estáticos no utiliza muchos recursos, por lo que necesitará considerablemente menos servidores para su contenido estático. También liberará algunos recursos en los servidores para su contenido dinámico.
Dependiendo de su balanceador de carga, es posible que también pueda hacer esto en el mismo dominio con el balanceador de carga que decida qué servidor usar para cada solicitud, pero si usa un dominio separado, puede poner sus activos estáticos en un CDN bastante fácil, si la necesidad debe surgir!
fuente
Una solución a este desafío que he empleado es tener la copia principal de lectura / escritura de los archivos en una unidad NFS compartida, pero también mantener una copia de solo lectura en cada servidor web para que una falla del host NFS ponga acceso a los archivos en modo de solo lectura en lugar de perderlos por completo.
rsync
se ejecuta cada 15 minutos para mantener actualizada la copia de solo lectura en cada servidor web.check_link
ejecuta un script bash cada minuto para asegurarse de que el montaje NFS sigue ahí y, si no, intercambia un enlace simbólico a la copia de solo lectura.Se encuentran más detalles en este artículo desde la primera vez que configuré este sistema.
Upsides:
Desventajas:
fuente
Es posible que desee considerar una base de datos NoSQL. Están diseñados para trabajar en clústeres, proporcionan una consistencia eventual. Pero tenga cuidado de que no sean ACID.
Aquí hay una introducción que lo ayudará a decidir qué tipo de base de datos NoSQL desea para su propósito.
Aquí hay una lista de recursos relacionados con NoSQL disponible.
fuente
¿Por qué no prueba una solución DFS? Proporcionan un alto nivel de redundancia y el volumen puede compartirse entre tantos como desee. Gluster es mi favorito y es muy fácil de instalar y configurar en cualquier distribución famosa de Linux
fuente