Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server en Linux
En este artículo se explica cómo usar una instancia de clúster de conmutación por error (FCI) de SQL Server en Linux. Para crear una FCI de SQL Server en Linux, vea Configurar una instancia de clúster de conmutación por error en Linux (RHEL).
Descripción de la arquitectura
La capa de clúster se basa en el complemento Red Hat Enterprise Linux (RHEL) HA construido sobre Pacemaker. Corosync y Pacemaker coordinan las comunicaciones del clúster y la administración de recursos. La instancia de SQL Server está activa en un nodo a la vez.
En el siguiente diagrama se ilustran los componentes de un clúster de Linux con SQL Server.
Para más información sobre la configuración del clúster, opciones de agentes de recursos y gestión, visite la documentación de referencia RHEL.
Failover
La conmutación por error de las FCI es similar a un clúster de conmutación por error de Windows Server (WSFC). Si el nodo de clúster que hospeda la FCI experimenta algún tipo de error, la FCI debe conmutar por error automáticamente en otro nodo. A diferencia de un WSFC, no hay forma de establecer los propietarios preferidos, por lo que Pacemaker elige el nodo que será el nuevo host de la FCI.
A veces puede que quieras realizar manualmente una conmutación por error de la FCI a otro nodo. El proceso no es el mismo que con las FCI en un WSFC. En un WSFC, conmuta por error los recursos en el nivel de rol. En Pacemaker, eliges un recurso para mover, y si todas las restricciones son correctas, todo lo demás también se mueve.
La forma de hacer failover depende de la distribución de Linux. Sigue las instrucciones de tu distribución Linux.
Conmutación por error manual (RHEL o Ubuntu)
Para realizar una conmutación por error manual, los servidores de Red Hat Enterprise Linux (RHEL) o Ubuntu ejecutan los pasos siguientes.
Emita el comando siguiente:
sudo pcs resource move <FCIResourceName> <NewHostNode><FCIResourceName>es el nombre del recurso Pacemaker para la FCI de SQL Server, y<NewHostNode>es el nombre del nodo del clúster que quieres alojar la FCI.Durante una conmutación por error manual, Pacemaker crea una restricción de ubicación en el recurso que se eligió para mover manualmente. Para ver esta restricción, ejecute
sudo pcs constraint.Una vez completada la conmutación por error, elimina la restricción:
sudo pcs resource clear <FCIResourceName>
Conmutación manual por error (SLES)
Note
A partir de SQL Server 2025 (17.x), no se admite SUSE Linux Enterprise Server (SLES). Para SQL Server 2022 (16.x) y versiones anteriores, solo se soporta SLES 15.
En SUSE Linux Enterprise Server (SLES), use el comando migrate para conmutar por error manualmente una FCI de SQL Server. Por ejemplo:
crm resource migrate <FCIResourceName> <NewHostNode>
<FCIResourceName> es el nombre de recurso de la instancia del clúster de conmutación por error, y <NewHostNode> es el nombre del nuevo host de destino.
Supervisar un clúster de conmutación por error
Vea el estado actual del clúster:
sudo pcs status
Ver el estado en tiempo real del clúster y los recursos:
sudo crm_mon
Consulta los registros del agente de recursos en /var/log/cluster/corosync.log.
Adición de un nodo a un clúster
Compruebe la dirección IP de cada nodo. En el siguiente script se muestra la dirección IP del nodo actual.
ip addr showEl nuevo nodo necesita un nombre único que tenga 15 caracteres o menos. Para establecer el nombre de equipo, agréguelo a
/etc/hosts. El siguiente script le permite editar/etc/hostsconvi.sudo vi /etc/hostsEn el ejemplo siguiente se muestra
/etc/hostscon adiciones para tres nodos denominadossqlfcivm1,sqlfcivm2ysqlfcivm3.127.0.0.1 localhost localhost4 localhost4.localdomain4 ::1 localhost localhost6 localhost6.localdomain6 10.128.18.128 sqlfcivm1 10.128.16.77 sqlfcivm2 10.128.14.26 sqlfcivm3El archivo debe ser el mismo en todos los nodos.
Detenga el servicio SQL Server en el nuevo nodo.
Sigue las instrucciones para montar el directorio de archivos de la base de datos en la ubicación compartida.
Desde el servidor NFS, instale
nfs-utils:sudo yum -y install nfs-utilsAbra el firewall en clientes y servidor NFS:
sudo firewall-cmd --permanent --add-service=nfs sudo firewall-cmd --permanent --add-service=mountd sudo firewall-cmd --permanent --add-service=rpc-bind sudo firewall-cmd --reloadEdite el archivo
/etc/fstabpara incluir el comando mount:<IP OF NFS SERVER>:<shared_storage_path> <database_files_directory_path> nfs timeo=14,intrEjecute
mount -apara aplicar los cambios.En el nuevo nodo, cree un archivo para almacenar el nombre de usuario y la contraseña de SQL Server para el inicio de sesión de Pacemaker. Con el siguiente comando se crea y rellena este archivo:
sudo touch /var/opt/mssql/secrets/passwd echo "<loginName>" | sudo tee -a /var/opt/mssql/secrets/passwd echo "<password>" | sudo tee -a /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 600 /var/opt/mssql/secrets/passwdCaution
La contraseña debe seguir la directiva de contraseña predeterminada de SQL Server. De forma predeterminada, la contraseña debe tener al menos ocho caracteres y contener caracteres de tres de los siguientes cuatro conjuntos: mayúsculas, minúsculas, dígitos en base 10 y símbolos. Las contraseñas pueden tener hasta 128 caracteres. Use contraseñas lo más largas y complejas posible.
En el nuevo nodo, abra los puertos de firewall de Pacemaker. Para abrir estos puertos con
firewalld, ejecute el comando siguiente:sudo firewall-cmd --permanent --add-service=high-availability sudo firewall-cmd --reloadSi usas otro cortafuegos que no tiene una configuración de alta disponibilidad integrada, abre los siguientes puertos para que Pacemaker se comunique con otros nodos del clúster:
- TCP: puertos 2224, 3121, 21064
- UDP: puerto 5405
Instale paquetes de Pacemaker en el nuevo nodo.
sudo yum install pacemaker pcs fence-agents-all resource-agentsEstablezca la contraseña para el usuario predeterminado que se crea al instalar paquetes de Pacemaker y Corosync. Use la misma contraseña que los nodos existentes.
sudo passwd haclusterHabilite e inicie el servicio
pcsdy Pacemaker. El nuevo nodo puede volver a unirse al clúster tras un reinicio. Ejecute el siguiente comando en el nuevo nodo.sudo systemctl enable pcsd sudo systemctl start pcsd sudo systemctl enable pacemakerInstale el agente de recursos de FCI para SQL Server. Ejecute el siguiente comando en el nuevo nodo.
sudo yum install mssql-server-haEn un nodo existente del clúster, autentica el nuevo nodo y añádelo al clúster:
sudo pcs cluster auth <nodeName3> -u hacluster sudo pcs cluster node add <nodeName3>
Eliminación de nodos de un clúster
Para quitar un nodo de un clúster, ejecute el siguiente comando:
sudo pcs cluster node remove <nodeName>
Cambiar la frecuencia de monitorización de recursos
sudo pcs resource op monitor interval=<interval>s <sqlResourceName>
El siguiente ejemplo establece el intervalo de monitorización en 2 segundos para el mssqlha recurso:
sudo pcs resource op monitor interval=2s mssqlha
Troubleshoot
Para solucionar problemas del clúster, puede ser útil comprender cómo funcionan conjuntamente los tres demonios para administrar los recursos del clúster.
| Daemon | Description |
|---|---|
| Corosync | Proporciona la pertenencia al cuórum y la mensajería entre los nodos del clúster. |
| Pacemaker | Se ejecuta sobre Corosync y proporciona máquinas de estados para los recursos. |
| PCSD | Administra Pacemaker y Corosync mediante las herramientas pcs. |
PCSD debe estar en ejecución para poder usar las herramientas pcs.
Estado actual del clúster
sudo pcs status devuelve información básica sobre el clúster, el cuórum, los nodos, los recursos y el estado del demonio de cada nodo.
El siguiente ejemplo muestra una salida correcta del quórum de Pacemaker:
Cluster name: MyAppSQL
Last updated: Wed Oct 31 12:00:00 2024 Last change: Wed Oct 31 11:00:00 2024 by root via crm_resource on sqlvmnode1
Stack: corosync
Current DC: sqlvmnode1 (version 1.1.13-10.el7_2.4-44eb2dd) - partition with quorum
3 nodes and 1 resource configured
Online: [ sqlvmnode1 sqlvmnode2 sqlvmnode3 ]
Full list of resources:
mssqlha (ocf::sql:fci): Started sqlvmnode1
PCSD Status:
sqlvmnode1: Online
sqlvmnode2: Online
sqlvmnode3: Online
Daemon Status:
corosync: active/disabled
pacemaker: active/enabled
En este ejemplo, partition with quorum significa que la mayoría del quórum de nodos está en línea. Si el clúster pierde el cuórum de la mayoría de los nodos, pcs status devuelve partition WITHOUT quorum y se detienen todos los recursos.
Online: [sqlvmnode1 sqlvmnode2 sqlvmnode3] devuelve el nombre de todos los nodos que participan actualmente en el clúster. Si algún nodo no participa, pcs status devuelve OFFLINE: [<nodename>].
PCSD Status muestra el estado del clúster de cada nodo.
Motivos por los que un nodo puede estar sin conexión
Compruebe los elementos siguientes si un nodo está sin conexión.
Firewall
Abre los siguientes puertos en todos los nodos para que Pacemaker se comunique:
- TCP: puertos 2224, 3121, 21064
- UDP: puerto 5405
Servicios de Pacemaker o Corosync en ejecución
Comunicación de los nodos
Asignaciones de nombres de los nodos