Pregunta

Tengo un enviorment de carga equilibrada, con más de 10 servidores web que ejecuta IIS. Todos los sitios web tienen acceso a una sola de almacenamiento de archivos que aloja todas las imágenes. Actualmente contamos con 200 GB de imágenes - les almacenamos en los directorios de 1.000 imágenes por directorio. En este momento todas las imágenes están en un dispositivo de almacenamiento única (RAID 10) conectado a un único servidor que sirve como el servidor de archivos. Todos los servidores web están conectados al servidor de archivos en la misma LAN. Estoy buscando para mejorar la arquitectura de manera que no tendríamos ningún punto único de fallo. Estoy considerando dos alternativas:

  1. Replicar el almacenamiento de archivos a todos los servidores web para que todos tengan acceso a los datos a nivel local
  2. replicar el almacenamiento de archivos de almacenamiento a otro así que si algo le sucede al almacenamiento actual que sería capaz de cambiar a ella.

Es evidente que las principales operaciones realizadas en el almacenamiento de archivos se leen, pero también hay una gran cantidad de operaciones de escritura. ¿Qué crees que es el método preferido? Cualquier otra idea?

Actualmente estoy descartando el uso de CDN ya que requerirá un cambio en la arquitectura de aplicación que no podemos hacer en este momento.

No hay solución correcta

Otros consejos

Algunas cosas que normalmente consideraría antes de ir para el cambio de arco es

  1. ¿cuáles son los temas de arco de corriente
  2. ¿qué estoy haciendo mal con el arco actual. (Si esto había estado trabajando durante un tiempo, ajustes menores normalmente resolver un montón de problemas)
  3. va a permitir que crezca fácilmente (en este caso siempre habrá un límite superior). Con base en el pasado el crecimiento de los datos, se puede planificar con eficacia.
  4. fiabilidad
  5. fácil de mantener / monitor / Solución de problemas
  6. coste

200 GB no es una gran cantidad de datos, y se puede ir en alguna solución de cosecha propia o usar algo como un NAS, lo que permitirá ampliar más adelante. Y tienen una réplica intercambiables en caliente de la misma.

Replicación de almacenamiento de todos los servidores web es una configuración muy caro, y como usted ha dicho que hay una gran cantidad de operaciones de escritura, que tendrá una gran sobrecarga en replicar a todos los servidores (que sólo se incrementará con el número de servidores y cada vez mayor de datos). Y también está la cuestión de los datos obsoletos de ser servido por uno de los otros nodos. Aparte de eso la solución de problemas problemas de replicación será un lío con 10 nodos y en crecimiento. A menos que las operaciones de búsqueda / lectura / escritura de archivos es muy momento crítico, replicando a todos los servidores web no es una buena idea. Usuarios (de tela) difícilmente se dará cuenta de la diferencia de 100 ms - 200 ms de tiempo de carga.

Hay algunos empresa noreferrer soluciones para este tipo de cosas. Pero no me cabe duda de que son caros. NAS no escala bien. Y usted tiene un único punto de fallo que no es bueno.

Hay algunas maneras que usted puede escribir código para ayudar con esto. Se podría almacenar en caché las imágenes en los servidores web la primera vez que se solicitan, esto reducirá la carga en el servidor de imágenes.

Usted podría conseguir un esclavo principal de ajuste, de manera que tiene un servidor de imagen principal, pero otros servidores que copian a partir de esto. Se podría equilibrar la carga de estos, y poner algo de lógica en el código de modo que si un esclavo no tiene una copia de una imagen, se echa en el maestro. También puede asignar estos en orden de prioridad por lo que si el padre no está disponible el primer esclavo se convierte en el maestro.

Puesto que usted tiene pocos datos en su almacenamiento, que tiene sentido comprar varios grandes HDs o utilizar el espacio libre en los servidores de Internet para guardar copias. Se llevará a bajar la tensión en el sistema de almacenamiento de back-end y cuando falla, todavía se puede entregar el contenido a los usuarios. Aún mejor, si es necesario a escala (más descargas), simplemente puede añadir un nuevo servidor y el estrés en su backend no va a cambiar, y mucho.

Si tuviera que hacer esto, me gustaría usar rsync o unísono para copiar los archivos de imagen exactamente en el mismo espacio en los servidores web cuando deriven de el dispositivo de almacenamiento (de esta manera, se puede intercambiar la copia con un sistema de archivos de red de montaje en cualquier momento).

Ejecutar rsync de vez en cuando (por ejemplo después de cualquier carga o una vez en la noche, usted sabrá mejor qué tamaño le queda mejor)

.

Una solución más versátil sería utilizar un protocolo P2P como Bittorreent. De esta manera, se podría publicar todos los cambios en el servidor de almacenamiento de los servidores web y habían optimizar las actualizaciones automatcially.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top