El término de Granjas de Servidores consiste en una colección de servidores que actúan como un único servidor para los usuarios, cuyo funcionamiento se basa en utilizar una misma dirección IP (Virtual IP) en todos los servidores de la Granja (al margen, de que puedan disponer direcciones IP adicionales). Desde hace varios años, están bastante de moda, debido a que son una solución de escalabilidad cuando alcanzamos el límite de rendimiento de un único servidor, pudiendo añadir un servidor adicional para así repartir la carga (o bien, si tenemos una granja de n servidores, agregando nuevos para disponer así de n + m servidores).
Del mismo modo, las Granjas de Servidores son una solución de alta disponibilidad, ya que ante la caída de un servidor, el servicio se puede seguir ofreciendo. Esto implica, que aunque en ocasiones sería suficiente con utilizar una única máquina para ofrecer los servicios Web de nuestra empresa, quizás no resulte más interesante utilizar dos máquinas de bajo coste formando una Granja de Servidores, y así poder afrontar la misma carga y además ofrecer alta disponibilidad. De hecho, aún con el coste de las licencias de software, suele resultar mucho más rentable.
Cada servidor de la granja, debe contener su propia copia de todo aquello lo que necesite (ej: ficheros HTML, XML, páginas ASP, páginas ASP.Net), librerías DLL, objetos COM, assemblies, etc., de tal modo, que puedan funcionar como servidores independientes. Por ello, resulta de gran utilidad disponer de Scripts o de alguna herramienta que facilite automatizar la distribución de cambios en las aplicaciones sobre todos los servidores de la granja (en algunas empresas, se realizan pequeñas herramientas basadas en Visual Source Safe).
En escenarios de alta carga de trabajo, es importante tener en cuenta que la base de datos puede presentarse como un cuello de botella en nuestra infraestructura, cuando todos los servidores de nuestra granja estén con una alta carga de trabajo, y en consecuencia, estén cargando al servidor de base de datos. Para solucionar este problema, se puede dividir la base de datos en varias bases de datos más pequeñas, y éstas a su vez, distribuirlas entre distintos servidores (ej: construir un Cluster MSCS con varios nodos, y distribuir las distintas bases de datos entre los distintos nodos).
Network Load B alancing (NLB) es una solución ideal, tanto para balancear la carga de red, como para favorecer una solución 24x7, de vital importancia en los negocios de nuestros días. En un entorno empresarial, es posible:
- Construir uno o varios Cluster NLB de hasta 32 Nodos (Hosts) cada uno para los servidores Web Frontales, aquellos que recibirán las peticiones de los usuarios a través de los navegadores.
- Construir uno o varios Cluster NLB de hasta 32 Nodos (Hosts) cada uno para los servidores de la Lógica de Negocio (ej: los COM+), aquellos que recibirán las peticiones de los usuarios a través de los navegadores.
- Utilizar Microsoft Cluster (MSCS) para dar soporte a los servidores de Base de Datos (ej: SQL Server) de nuestro software corporativo. Microsoft Cluster (MSCS) es capaz también de dar soporte a otros muchos servicios de empresa, como DHCP, Servidor de Ficheros, etc.