¿Cómo funcionan juntos los equilibradores de carga, los servidores web, los servidores de aplicaciones y los servidores de bases de datos?

En primer lugar, describamos los servidores. Un equilibrador de carga ES un servidor (generalmente), que se encuentra frente a un grupo de servidores de aplicaciones y administra el tráfico entre ellos. El tráfico web entrante pasa a un equilibrador de carga que lo distribuye entre los servidores web y de aplicaciones. Los servidores web que ejecutan IIS, Sharepoint, Apach y NGINX son servidores de aplicaciones como Exchange, Skype for Business, SAP, Moodle, Sitecore, etc. Los servidores de bases de datos son un poco más complejos, pero volveré a ello.

Los servidores web son bastante básicos, mientras que Exchange y Skype tienen algunas áreas adicionales en las que un ADC / Load Balancer puede ayudar (como la persistencia, la comprobación del estado).

Tomemos este diagrama:

Hay dos equilibradores de carga KEMP en esto, pero están en un par activo / pasivo, también conocido como par HA (alta disponibilidad). Vamos a tratarlos como uno (ya que el otro es un failover). Detrás de ellos hay dos servidores de aplicaciones. Estos podrían ser servidores IIS / Apache o Microsoft Exchange. Hay varios, podría haber 100. Los clientes, en la red LAN, WAN o en la nube, acceden a la IP de los equilibradores de carga. El equilibrador de carga tiene las IP internas de los servidores de aplicaciones (lo que significa que no se puede acceder a ellas externamente). Normalmente hay un cortafuegos delante de los equilibradores de carga que solo permitirá que el tráfico pase a los equilibradores de carga. Esto representa el equilibrador de carga en una función de proxy inverso . Un proxy directo es exactamente lo mismo que un proxy inverso, pero se encuentra frente a los usuarios, por ejemplo, un servidor proxy web en una LAN que conecta a las personas a Internet. Por lo general, protegería un proxy (proxies directos e inversos) con un firewall.

Almacenamiento en caché

Para los servidores web que entregan código, scripts, imágenes, etc., el equilibrador de carga puede almacenar en caché localmente la imagen (usando nombre, directorio, marcas de fecha / hora) para que los servidores de aplicaciones no tengan que seguir alimentándolas. Imagine que 1000 personas se conectan a la misma página web con las mismas 20 imágenes, todos esos servidores tienen que entregar 20,000 imágenes a través de la red LAN local. El equilibrador de carga puede almacenar en caché (y comprimir) estos.

Cortafuegos de aplicaciones web

Un cortafuegos de aplicaciones web (WAF) difiere de un cortafuegos normal en que protege más que solo las solicitudes de red de capa tcp / ip: protege las aplicaciones a nivel de aplicación.

El equilibrio de carga de la base de datos es un poco diferente. Las bases de datos se pueden equilibrar en la carga para las funciones de lectura, pero un servidor maestro necesita manejar todas las escrituras para que se manejen en secuencia.

Hasta ahora lo que tienes es correcto.

El equilibrador de carga acepta las solicitudes entrantes y las reenvía a un servidor que está preparado para aceptarlas. Esto puede ser en un estilo round robin o ponderado. Nginx es un ejemplo de un proxy que es capaz de equilibrar la carga, pero hay otros equilibradores de carga, como F5, etc. Un equilibrador de carga solo realiza la función de recibir las solicitudes iniciales y asegurarse de que un servidor web las responda que tiene suficientes gastos generales para responder de manera oportuna.

El servidor web es un software que responde a una solicitud con información. Apache es un buen ejemplo de esto, nginx puede realizar esta función, lighttpd es otra.

Un servidor de aplicaciones puede referirse a algunas cosas diferentes y, a veces, puede ser sinónimo del servidor web. El servidor de aplicaciones toma una solicitud y la procesa, y devuelve una respuesta, a través de un servidor web como intermediario. Ejemplos de servidores de aplicaciones pueden ser cosas como Ruby / Rails, PHP, etc. Estos servidores son donde se ejecuta el ‘código’ para la aplicación.

Los servidores de bases de datos son donde los datos persistentes, y a veces no persistentes, se almacenan para que la aplicación acceda. MySQL, Percona, MongoDB, MSSQL, MariaDB y otros son ejemplos.

El almacenamiento en caché, el proxy directo y el inverso son todas las cosas realizadas antes de la capa del servidor web para reducir el estrés en el servidor web. También hay almacenamiento en caché en forma de almacenamiento en caché de capa de aplicación, donde los fragmentos de código ejecutados con frecuencia se almacenan y se usan nuevamente para reducir la carga en el servidor de aplicaciones.

DigitalOcean tiene una buena guía de algunas de las formas típicas en que puede configurar su infraestructura: 5 configuraciones comunes de servidor para su aplicación web

Se podría decir que no funcionan juntos. Es TCP / IP sobre Ethernet. Eso es realmente solo colisiones y rápidamente las cosas se resuelven. Las computadoras no están realmente “trabajando juntas” como las personas que trabajan en una pandilla de cadenas o algo así. Una computadora no siente el dolor de la computadora que está al lado. Estos sistemas web realmente están más desarticulados en comparación con los sistemas de telecomunicaciones. Un poco doloroso. En telecomunicaciones, ejecutamos FDDI, un protocolo orientado a la conexión real. Los equilibradores de carga son caros. Es bueno si puede encontrar una manera inteligente de evitar pagar por ese hardware de equilibrio de carga. Incluso trata de que alguien más pague por ello. Compre demasiada basura y ya no tiene una compañía.