¿Qué es un clúster de sqlserver?
Un servidor "virtual" compuesto por dos o más servidores físicamente independientes se denomina servidor de clúster. Un servicio de Microsoft llamado Microsoft Cluster Services (MSCS) administra servidores en clúster. Un clúster de SQL Server es un servidor virtual compuesto por dos o más servidores (nodos) que ejecutan SQL Server. Si un nodo del clúster falla, otro nodo del clúster asume la responsabilidad del nodo fallido.
Es un malentendido común que un clúster de SQL Server puede brindar equilibrio de carga a los dos nodos del clúster. Si bien esto parece útil, es incorrecto. Esto también significa que la agrupación en clústeres de SQL Server no puede mejorar realmente el rendimiento. SQL Server en clúster solo puede proporcionar funcionalidad de conmutación por error. La conmutación por error significa que cuando una máquina del sistema falla y pierde su funcionalidad, otra máquina se hará cargo de la instancia de SQL Server que la ejecuta. Esta falla funcional puede deberse a fallas de hardware, fallas de servicio, fallas manuales u otras razones.
¿Por qué agrupar un entorno de SQL Server?
En términos prácticos, el entorno de SQL Server en clúster es satisfactorio. Cuando se realiza una conmutación por error, el tiempo para transferir una instancia de base de datos de un servidor a otro es muy corto, generalmente solo toma de 3 a 7 segundos. Aunque es necesario restablecer la conexión, el proceso de conmutación por error suele ser transparente para el usuario final de la base de datos. Los bajos costos de conmutación por error también le permiten mantener los nodos en el clúster sin que el servidor quede completamente inaccesible.
Tipos de clústeres de SQL Server
Hay dos tipos de clústeres de SQL Server: clústeres activos/pasivos y clústeres activo/activo. Se explican a continuación (la descripción se basa en un clúster de SQL Server de dos nodos).
Clúster Activo/Pasivo
En este tipo de clúster, solo un nodo controla los recursos de SQL Server a la vez. El otro nodo permanece en modo de espera, esperando que se produzca un fallo. Durante una conmutación por error, el nodo en espera toma el control de los recursos de SQL Server.
Ventajas: dado que solo hay una instancia ejecutándose en el servidor, durante la conmutación por error no es necesario que otro servidor se haga cargo de las dos instancias de SQL Server y el rendimiento no se reducirá.
Desventajas: dado que solo hay una instancia de SQL Server ejecutándose en el servidor virtual, el otro servidor siempre maneja el modo de espera y el estado inactivo. Esto significa que no estás aprovechando al máximo el hardware que compraste.
Clúster activo/activo
En este tipo de clúster, cada nodo del clúster ejecuta una instancia independiente y activa de SQL Server. En caso de que falle un nodo, otro nodo puede controlar la instancia de SQL Server del nodo fallido. Este nodo en buen estado ejecutará dos instancias de SQL Server: su propia instancia y la instancia fallida.
Ventajas: Con esta configuración podrás aprovechar al máximo tu hardware. En dicho sistema, ambos servidores están ejecutándose, en lugar de solo un servidor ejecutándose y el otro en modo de espera esperando que ocurra una falla, para que pueda aprovechar al máximo la máquina que compró.
Desventajas: si se realiza una conmutación por error y un servidor ejecuta dos instancias de SQL Server, el rendimiento se verá afectado negativamente. Sin embargo, un rendimiento reducido es mejor que una falla total del servidor virtual. Otro inconveniente de esta configuración es que requiere comprar algunas licencias más que un clúster activo/pasivo. Debido a que el clúster ejecuta dos instancias activas de SQL Server, esto requiere la compra de dos licencias de servidor independientes. En algunos casos, esto también puede obstaculizarle.
Consideraciones sobre clústeres
En términos de alta practicidad, un entorno de SQL Server en clúster tiene ciertas ventajas.
Sin embargo, la alta practicidad conlleva ciertas compensaciones.
En primer lugar, configurar un entorno de SQL Server en clúster es muy costoso. Esto se debe a que los nodos del clúster deben cumplir con la lista de compatibilidad de los nodos del clúster. Además, es necesario establecer una red compleja, la configuración de las máquinas debe ser casi la misma y el subsistema de disco de archivos de la base de datos debe compartirse por completo. Una red de área de almacenamiento (SAN) es una buena opción para construir dicho subsistema, pero las SAN son innecesarias y muy costosas. Además, si está ejecutando un clúster activo/activo, deberá comprar una licencia para el procesador de cada máquina en el clúster que ejecute una instancia de SQL Server.
Debido a que los clusters locales están restringidos en gran medida a la misma área geográfica, los desastres naturales pueden desactivar completamente un cluster. En ese caso, deberá trasladarse al sitio de recuperación ante desastres para continuar con las operaciones. También puede configurar clústeres de SQL Server geográficamente dispersos, pero estos sistemas son más complejos y costosos.