Configuración de clústeres de RHEL para grupos de disponibilidad de SQL ServerConfigure RHEL Cluster for SQL Server Availability Group

Se aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) : LinuxSe aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) - Linux

En este documento se explica cómo crear un clúster de grupos de disponibilidad de tres nodos para SQL Server en Red Hat Enterprise Linux.This document explains how to create a three-node availability group cluster for SQL Server on Red Hat Enterprise Linux. Para lograr una alta disponibilidad, un grupo de disponibilidad en Linux necesita tres nodos (vea High availability and data protection for availability group configurations [Alta disponibilidad y protección de datos para configuraciones de grupos de disponibilidad]).For high availability, an availability group on Linux requires three nodes - see High availability and data protection for availability group configurations. La capa de agrupación en clústeres se basa en el complemento de alta disponibilidad de Red Hat Enterprise Linux (RHEL) sobre Pacemaker.The clustering layer is based on Red Hat Enterprise Linux (RHEL) HA add-on built on top of Pacemaker.

Nota

El acceso a toda la documentación de Red Hat exige una suscripción válida.Access to Red Hat full documentation requires a valid subscription.

Para obtener más información sobre la configuración del clúster, las opciones de los agentes de recursos y la administración, vaya a la documentación de referencia de RHEL.For more information on cluster configuration, resource agents options, and management, visit RHEL reference documentation.

Nota

SQL Server no está tan estrechamente integrado con Pacemaker en Linux como lo está con los clústeres de conmutación por error de Windows Server.SQL Server is not as tightly integrated with Pacemaker on Linux as it is with Windows Server failover clustering. Una instancia de SQL Server no es consciente del clúster.A SQL Server instance is not aware of the cluster. Pacemaker proporciona orquestación del recurso de clúster.Pacemaker provides cluster resource orchestration. Además, el nombre de red virtual es específico de los clústeres de conmutación por error de Windows Server (no hay equivalente en Pacemaker).Also, the virtual network name is specific to Windows Server failover clustering - there is no equivalent in Pacemaker. Las vistas de administración dinámica (DMV) de los grupos de disponibilidad que consultan información del clúster devuelven filas vacías en los clústeres de Pacemaker.Availability group dynamic management views (DMVs) that query cluster information return empty rows on Pacemaker clusters. Para crear un cliente de escucha para la reconexión transparente tras una conmutación por error, registre de forma manual el nombre del cliente de escucha en DNS con la dirección IP empleada para crear el recurso de dirección IP virtual.To create a listener for transparent reconnection after failover, manually register the listener name in DNS with the IP used to create the virtual IP resource.

En las siguientes secciones se siguen los pasos necesarios para configurar un clúster de Pacemaker y agregar un grupo de disponibilidad como recurso en el clúster de alta disponibilidad.The following sections walk through the steps to set up a Pacemaker cluster and add an availability group as resource in the cluster for high availability.

Plan de desarrolloRoadmap

Los pasos necesarios para crear un grupo de disponibilidad en servidores con Linux de alta disponibilidad son distintos de los exigidos en un clúster de conmutación por error de Windows Server.The steps to create an availability group on Linux servers for high availability are different from the steps on a Windows Server failover cluster. En la lista siguiente, se describen los pasos generales:The following list describes the high-level steps:

  1. Configure SQL Server en los nodos del clúster.Configure SQL Server on the cluster nodes.

  2. Cree el grupo de disponibilidad.Create the availability group.

  3. Configure un administrador de recursos de clúster, como Pacemaker.Configure a cluster resource manager, like Pacemaker. Estas instrucciones se incluyen en este documento.These instructions are in this document.

    La manera de configurar un administrador de recursos de clúster depende de la distribución específica de Linux.The way to configure a cluster resource manager depends on the specific Linux distribution.

    Importante

    Para alcanzar una alta disponibilidad, los entornos de producción necesitan un agente de barrera (por ejemplo, STONITH).Production environments require a fencing agent, like STONITH for high availability. En los ejemplos de esta documentación, no se usan agentes de barrera.The demonstrations in this documentation do not use fencing agents. Los ejemplos solo se proporcionan con fines de prueba y validación.The demonstrations are for testing and validation only.

    Un clúster de Linux usa barreras para devolver el clúster a un estado conocido.A Linux cluster uses fencing to return the cluster to a known state. La forma de configurar las barreras depende de la distribución y del entorno.The way to configure fencing depends on the distribution and the environment. Actualmente, las barreras no están disponibles en algunos entornos de nube.Currently, fencing is not available in some cloud environments. Para más información, vea Directivas de soporte para clústeres de alta disponibilidad de RHEL: plataformas de virtualización.For more information, see Support Policies for RHEL High Availability Clusters - Virtualization Platforms.

  4. Agregue el grupo de disponibilidad como un recurso en el clúster.Add the availability group as a resource in the cluster.

Configuración de la alta disponibilidad de RHELConfigure high availability for RHEL

Para configurar la alta disponibilidad de RHEL, habilite la suscripción de alta disponibilidad y, luego, configure Pacemaker.To configure high availability for RHEL, enable the high availability subscription and then configure Pacemaker.

Habilitación de la suscripción de alta disponibilidad de RHELEnable the high availability subscription for RHEL

Cada nodo del clúster debe tener una suscripción adecuada de RHEL y el complemento de alta disponibilidad.Each node in the cluster must have an appropriate subscription for RHEL and the High Availability Add on. Revise los requisitos de Cómo instalar paquetes de clúster de alta disponibilidad en Red Hat Enterprise Linux.Review the requirements at How to install High Availability cluster packages in Red Hat Enterprise Linux. Siga estos pasos para configurar la suscripción y los repositorios:Follow these steps to configure the subscription and repos:

  1. Registre el sistema.Register the system.

    sudo subscription-manager register
    

    Proporcione el nombre de usuario y la contraseña.Provide your user name and password.

  2. Enumere los grupos disponibles para el registro.List the available pools for registration.

    sudo subscription-manager list --available
    

    En la lista de grupos disponibles, anote el identificador de grupo de la suscripción de alta disponibilidad.From the list of available pools, note the pool ID for the high availability subscription.

  3. Actualice el script siguiente.Update the following script. Reemplace <pool id> por el identificador de grupo de alta disponibilidad del paso anterior.Replace <pool id> with the pool ID for high availability from the preceding step. Ejecute el script para asociar la suscripción.Run the script to attach the subscription.

    sudo subscription-manager attach --pool=<pool id>
    
  4. Habilite el repositorio.Enable the repository.

    RHEL 7RHEL 7

    sudo subscription-manager repos --enable=rhel-ha-for-rhel-7-server-rpms
    

    RHEL 8RHEL 8

    sudo subscription-manager repos --enable=rhel-8-for-x86_64-highavailability-rpms
    

Para obtener más información, vea Pacemaker: el clúster de alta disponibilidad de código abierto.For more information, see Pacemaker - The Open Source, High Availability Cluster.

Una vez configurada la suscripción, realice los pasos siguientes para configurar Pacemaker:After you have configured the subscription, complete the following steps to configure Pacemaker:

Configuración de PacemakerConfigure Pacemaker

Una vez registrada la suscripción, realice los pasos siguientes para configurar Pacemaker:After you register the subscription, complete the following steps to configure Pacemaker:

  1. En todos los nodos de clúster, abra los puertos de firewall de Pacemaker.On all cluster nodes, open the Pacemaker firewall ports. Para abrir estos puertos con firewalld, ejecute el comando siguiente:To open these ports with firewalld, run the following command:

    sudo firewall-cmd --permanent --add-service=high-availability
    sudo firewall-cmd --reload
    

    Si el firewall no tiene una configuración de alta disponibilidad integrada, abra los puertos siguientes para Pacemaker.If the firewall doesn't have a built-in high-availability configuration, open the following ports for Pacemaker.

    • TCP: puertos 2224, 3121, 21064TCP: Ports 2224, 3121, 21064
    • UDP: puerto 5405UDP: Port 5405
  2. Instale paquetes de Pacemaker en todos los nodos.Install Pacemaker packages on all nodes.

    sudo yum install pacemaker pcs fence-agents-all resource-agents
    
  3. Establezca la contraseña para el usuario predeterminado que se crea al instalar paquetes de Pacemaker y Corosync.Set the password for the default user that is created when installing Pacemaker and Corosync packages. Use la misma contraseña en todos los nodos.Use the same password on all nodes.

    sudo passwd hacluster
    
  4. Para permitir que los nodos vuelvan a unirse al clúster después del reinicio, habilite e inicie el servicio pcsd y Pacemaker.To allow nodes to rejoin the cluster after the reboot, enable and start pcsd service and Pacemaker. Ejecute el siguiente comando en todos los nodos.Run the following command on all nodes.

    sudo systemctl enable pcsd
    sudo systemctl start pcsd
    sudo systemctl enable pacemaker
    
  5. Cree el clúster.Create the Cluster. Para crear el clúster, ejecute el comando siguiente:To create the cluster, run the following command:

    RHEL 7RHEL 7

    sudo pcs cluster auth <node1> <node2> <node3> -u hacluster -p <password for hacluster>
    sudo pcs cluster setup --name <clusterName> <node1> <node2> <node3> 
    sudo pcs cluster start --all
    sudo pcs cluster enable --all
    

    RHEL8RHEL8

    Para RHEL 8, tendrá que autenticar los nodos por separado.For RHEL 8, you will need to authenticate the nodes separately. Escriba manualmente el nombre de usuario y la contraseña de hacluster cuando se le solicite.Manually enter in the Username and Password for hacluster when prompted.

    sudo pcs host auth <node1> <node2> <node3>
    sudo pcs cluster setup <clusterName> <node1> <node2> <node3>
    sudo pcs cluster start --all
    sudo pcs cluster enable --all
    

    Nota

    Si ya ha configurado un clúster en los mismos nodos, necesita usar la opción --force al ejecutar pcs cluster setup.If you previously configured a cluster on the same nodes, you need to use --force option when running pcs cluster setup. Esta opción es equivalente a ejecutar pcs cluster destroy.This option is equivalent to running pcs cluster destroy. Para volver a habilitar Pacemaker, ejecute sudo systemctl enable pacemaker.To re-enable pacemaker, run sudo systemctl enable pacemaker.

  6. Instale el agente de recursos de SQL Server para SQL Server.Install SQL Server resource agent for SQL Server. Ejecute los siguientes comandos en todos los nodos.Run the following commands on all nodes.

    sudo yum install mssql-server-ha
    

Una vez configurado Pacemaker, use pcs para interactuar con el clúster.After Pacemaker is configured, use pcs to interact with the cluster. Ejecute todos los comandos en un nodo del clúster.Execute all commands on one node from the cluster.

Configuración de barrera (STONITH)Configure fencing (STONITH)

Para admitir la configuración del clúster, los proveedores de clústeres de Pacemaker requieren que se habilite STONITH y que se configure un dispositivo de barrera.Pacemaker cluster vendors require STONITH to be enabled and a fencing device configured for a supported cluster setup. STONITH corresponde a "shoot the other node in the head", que en español sería algo como "disparar al otro nodo en la cabeza".STONITH stands for "shoot the other node in the head." Si el administrador de recursos de clúster no puede determinar el estado de un nodo o de un recurso de un nodo, las barreras devuelven al clúster a un estado conocido.When the cluster resource manager cannot determine the state of a node or of a resource on a node, fencing brings the cluster to a known state again.

Un dispositivo STONITH proporciona un agente de barrera.A STONITH device provides a fencing agent. En Configuración de Pacemaker en Red Hat Enterprise Linux en Azure se proporciona un ejemplo de cómo crear un dispositivo STONITH para este clúster en Azure.Setting up Pacemaker on Red Hat Enterprise Linux in Azure provides an example of how to create a STONITH device for this cluster in Azure. Modifique las instrucciones para el entorno.Modify the instructions for your environment.

Mediante la configuración de un recurso, la barrera de nivel de recurso garantiza que los datos no se dañen en caso de interrupción.Resource level fencing ensures that there is no data corruption in case of an outage by configuring a resource. Por ejemplo, puede usar la barrera de nivel de recurso para marcar el disco de un nodo como obsoleto cuando el vínculo de comunicación se interrumpe.For example, you can use resource level fencing to mark the disk on a node as outdated when the communication link goes down.

La barrera de nivel de nodo garantiza que un nodo no ejecute ningún recurso.Node level fencing ensures that a node does not run any resources. Esto se hace mediante el restablecimiento del nodo.This is done by resetting the node. Pacemaker admite una gran variedad de dispositivos de barrera.Pacemaker supports a great variety of fencing devices. Los ejemplos incluyen un sistema de alimentación ininterrumpida o tarjetas de interfaz de administración para servidores.Examples include an uninterruptible power supply or management interface cards for servers.

Para obtener información sobre STONITH y las barreras, vea los siguientes artículos:For information about STONITH, and fencing, see the following articles:

Nota

Dado que la configuración de la barrera de nivel de nodo depende en gran medida del entorno, deshabilítela para este tutorial (se puede configurar más adelante).Because the node level fencing configuration depends heavily on your environment, disable it for this tutorial (it can be configured later). El siguiente script deshabilita la barrera de nivel de nodo:The following script disables node level fencing:

sudo pcs property set stonith-enabled=false

Solo deshabilite STONITH con fines de prueba.Disabling STONITH is just for testing purposes. Si tiene previsto usar Pacemaker en un entorno de producción, necesita planear una implementación de STONITH basada en su entorno y mantenerla habilitada.If you plan to use Pacemaker in a production environment, you should plan a STONITH implementation depending on your environment and keep it enabled.

Establecer la propiedad del clúster cluster-recheck-intervalSet cluster property cluster-recheck-interval

cluster-recheck-interval indica el intervalo de sondeo por el que el clúster comprueba los cambios en los parámetros de recursos, las restricciones u otras opciones del clúster.cluster-recheck-interval indicates the polling interval at which the cluster checks for changes in the resource parameters, constraints or other cluster options. Si una réplica se interrumpe, el clúster intenta reiniciarla en un intervalo que depende de los valores failure-timeout y cluster-recheck-interval.If a replica goes down, the cluster tries to restart the replica at an interval that is bound by the failure-timeout value and the cluster-recheck-interval value. Por ejemplo, si failure-timeout se establece en 60 segundos y cluster-recheck-interval se establece en 120 segundos, el reinicio se intenta en un intervalo mayor de 60 segundos pero menor de 120 segundos.For example, if failure-timeout is set to 60 seconds and cluster-recheck-interval is set to 120 seconds, the restart is tried at an interval that is greater than 60 seconds but less than 120 seconds. Se recomienda establecer el valor de failure-timeout en 60 segundos y el de cluster-recheck-interval en un valor superior a 60 segundos.We recommend that you set failure-timeout to 60s and cluster-recheck-interval to a value that is greater than 60 seconds. No se recomienda establecer cluster-recheck-interval en un valor menor.Setting cluster-recheck-interval to a small value is not recommended.

Para actualizar el valor de la propiedad a 2 minutes, ejecute:To update the property value to 2 minutes run:

sudo pcs property set cluster-recheck-interval=2min

Importante

Todas las distribuciones (incluidas RHEL 7.3 y 7.4) que usan el último paquete disponible de Pacemaker (1.1.18-11.el7) incorporan un cambio de comportamiento para el valor de clúster start-failure-is-fatal cuando es false.All distributions (including RHEL 7.3 and 7.4) that use the latest available Pacemaker package 1.1.18-11.el7 introduce a behavior change for the start-failure-is-fatal cluster setting when its value is false. Este cambio afecta al flujo de trabajo de conmutación por error.This change affects the failover workflow. Si una réplica principal deja de funcionar, se espera que el clúster conmute por error a una de las réplicas secundarias disponibles.If a primary replica experiences an outage, the cluster is expected to failover to one of the available secondary replicas. En su lugar, los usuarios observan que el clúster sigue intentando iniciar la réplica principal que ha experimentado el error.Instead, users will notice that the cluster keeps trying to start the failed primary replica. Si esa réplica principal no vuelve a activarse (debido a un corte de luz permanente), el clúster nunca conmuta por error a otra réplica secundaria disponible.If that primary never comes online (because of a permanent outage), the cluster never fails over to another available secondary replica. Debido a este cambio, la recomendación de configurar start-failure-is-fatal ya no es válida y es necesario revertir a su valor predeterminado de true.Because of this change, a previously recommended configuration to set start-failure-is-fatal is no longer valid and the setting needs to be reverted back to its default value of true. Además, el recurso de grupo de disponibilidad debe actualizarse para incluir la propiedad failover-timeout.Additionally, the AG resource needs to be updated to include the failover-timeout property.

Para actualizar el valor de la propiedad a true, ejecute:To update the property value to true run:

sudo pcs property set start-failure-is-fatal=true

Para actualizar la propiedad failure-timeout del recurso ag_cluster a 60s, ejecute:To update the ag_cluster resource property failure-timeout to 60s run:

pcs resource update ag_cluster meta failure-timeout=60s

Para obtener información sobre las propiedades de clúster de Pacemaker, vea Propiedades de clúster de Pacemaker.For information on Pacemaker cluster properties, see Pacemaker Clusters Properties.

Crear un inicio de sesión de SQL Server para PacemakerCreate a SQL Server login for Pacemaker

  1. En todos los servidores SQL Server, cree un inicio de sesión de servidor para Pacemaker.On all SQL Servers, create a Server login for Pacemaker. La siguiente instrucción Transact-SQL crea un inicio de sesión:The following Transact-SQL creates a login:

    USE [master]
    GO
    CREATE LOGIN [pacemakerLogin] with PASSWORD= N'ComplexP@$$w0rd!'
    
    ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin]
    

En el momento de crear el grupo de disponibilidad, el usuario de Pacemaker necesitará permisos ALTER, CONTROL y VIEW DEFINITION en el grupo de disponibilidad, una vez creado, pero antes de que se le agreguen nodos.At the time of availability group creation, the pacemaker user will require ALTER, CONTROL and VIEW DEFINITION permissions on the availability group, after it's created but before any nodes are added to it.

  1. En todos los servidores SQL Server, guarde las credenciales del inicio de sesión de SQL Server.On all SQL Servers, save the credentials for the SQL Server login.

    echo 'pacemakerLogin' >> ~/pacemaker-passwd
    echo 'ComplexP@$$w0rd!' >> ~/pacemaker-passwd
    sudo mv ~/pacemaker-passwd /var/opt/mssql/secrets/passwd
    sudo chown root:root /var/opt/mssql/secrets/passwd
    sudo chmod 400 /var/opt/mssql/secrets/passwd # Only readable by root
    

Crear un recurso de grupo de disponibilidadCreate availability group resource

Para crear el recurso de grupo de disponibilidad, use el comando pcs resource create y establezca las propiedades del recurso.To create the availability group resource, use pcs resource create command and set the resource properties. El comando siguiente crea un recurso ocf:mssql:ag de tipo principal/secundario para el grupo de disponibilidad con el nombre ag1.The following command creates a ocf:mssql:ag master/subordinate type resource for availability group with name ag1.

RHEL 7RHEL 7

sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=60s master notify=true

RHEL 8RHEL 8

Con la disponibilidad de RHEL 8, la sintaxis de Create ha cambiado.With the availability of RHEL 8, the create syntax has changed. Si usa RHEL 8, la terminología master ha cambiado a promotable.If you are using RHEL 8, the terminology master has changed to promotable. Use el comando CREATE siguiente en lugar del comando anterior:Use the following create command instead of the above command:

sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=60s promotable notify=true

Nota

Cuando crea el recurso, y posteriormente de forma periódica, el agente del recurso de Pacemaker establece automáticamente el valor de REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT en el grupo de disponibilidad según la configuración del grupo.When you create the resource, and periodically afterwards, the Pacemaker resource agent automatically sets the value of REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT on the availability group based on the availability group's configuration. Por ejemplo, si el grupo de disponibilidad tiene tres réplicas sincrónicas, el agente establecerá REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT en 1.For example, if the availability group has three synchronous replicas, the agent will set REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT to 1. Para detalles y opciones de configuración adicional, consulte el artículo sobre alta disponibilidad y protección de datos para configuraciones de grupos de disponibilidad.For details and additional configuration options, see High availability and data protection for availability group configurations.

Creación de un recurso de dirección IP virtualCreate virtual IP resource

Para crear el recurso de dirección IP virtual, ejecute el comando siguiente en un nodo.To create the virtual IP address resource, run the following command on one node. Use una dirección IP estática disponible de la red.Use an available static IP address from the network. Reemplace la dirección IP entre <10.128.16.240> por una dirección IP válida.Replace the IP address between <10.128.16.240> with a valid IP address.

sudo pcs resource create virtualip ocf:heartbeat:IPaddr2 ip=<10.128.16.240>

No hay ningún nombre de servidor virtual equivalente en Pacemaker.There is no virtual server name equivalent in Pacemaker. Para usar una cadena de conexión que apunte a un nombre de servidor de cadena en lugar de a una dirección IP, registre la dirección de recurso de dirección IP virtual y el nombre de servidor virtual deseado en DNS.To use a connection string that points to a string server name instead of an IP address, register the virtual IP resource address and desired virtual server name in DNS. En el caso de las configuraciones de recuperación ante desastres, registre el nombre de servidor virtual que prefiera y la dirección IP con los servidores DNS en el sitio principal y en el sitio de recuperación ante desastres.For DR configurations, register the desired virtual server name and IP address with the DNS servers on both primary and DR site.

Agregar una restricción de ubicaciónAdd colocation constraint

Casi todas las decisiones de un clúster de Pacemaker, por ejemplo elegir dónde se debe ejecutar un recurso, se toman mediante la comparación de puntuaciones.Almost every decision in a Pacemaker cluster, like choosing where a resource should run, is done by comparing scores. Las puntuaciones se calculan por recurso.Scores are calculated per resource. El administrador de recursos de clúster elige el nodo con la puntuación más alta para un recurso determinado.The cluster resource manager chooses the node with the highest score for a particular resource. Si un nodo tiene una puntuación negativa para un recurso, el recurso no se puede ejecutar en ese nodo.If a node has a negative score for a resource, the resource cannot run on that node.

En un clúster de Pacemaker, las decisiones del clúster se pueden manipular mediante restricciones.On a pacemaker cluster, you can manipulate the decisions of the cluster with constraints. Las restricciones tienen una puntuación.Constraints have a score. Si una restricción tiene una puntuación inferior a INFINITY, Pacemaker la considera como una recomendación.If a constraint has a score lower than INFINITY, Pacemaker regards it as recommendation. Una puntuación de INFINITY es obligatoria.A score of INFINITY is mandatory.

Para garantizar que los recursos de réplica principal y dirección IP virtual se ejecutan en el mismo host, defina una restricción de ubicación con una puntuación de INFINITY.To ensure that primary replica and the virtual ip resources run on the same host, define a colocation constraint with a score of INFINITY. Para agregar la restricción de ubicación, ejecute el comando siguiente en un nodo.To add the colocation constraint, run the following command on one node.

RHEL 7RHEL 7

Cuando crea el recurso ag_cluster en RHEL 7, se crea el recurso como ag_cluster-master.When you create the ag_cluster resource in RHEL 7, it creates the resource as ag_cluster-master. Use el siguiente comando para RHEL 7:Use the following command for RHEL 7:

sudo pcs constraint colocation add virtualip ag_cluster-master INFINITY with-rsc-role=Master

RHEL 8RHEL 8

Cuando crea el recurso ag_cluster en RHEL 8, se crea el recurso como ag_cluster-clone.When you create the ag_cluster resource in RHEL 8, it creates the resource as ag_cluster-clone. Use el siguiente comando para RHEL 8:Use the following command for RHEL 8:

sudo pcs constraint colocation add virtualip with master ag_cluster-clone INFINITY with-rsc-role=Master

Agregar una restricción de ordenaciónAdd ordering constraint

La restricción de ubicación tiene una restricción de orden implícita.The colocation constraint has an implicit ordering constraint. Mueve el recurso de dirección IP virtual antes de mover el recurso de grupo de disponibilidad.It moves the virtual IP resource before it moves the availability group resource. La secuencia de eventos predeterminada es la siguiente:By default the sequence of events is:

  1. El usuario envía pcs resource move a la réplica principal del grupo de disponibilidad desde el nodo1 al nodo2.User issues pcs resource move to the availability group primary from node1 to node2.

  2. El recurso de dirección IP virtual se detiene en el nodo 1.The virtual IP resource stops on node 1.

  3. El recurso de dirección IP virtual se inicia en el nodo 2.The virtual IP resource starts on node 2.

    Nota

    En este punto, la dirección IP apunta temporalmente al nodo 2, mientras que el nodo 2 sigue siendo una réplica secundaria previa a la conmutación por error.At this point, the IP address temporarily points to node 2 while node 2 is still a pre-failover secondary.

  4. La réplica principal del grupo de disponibilidad del nodo 1 se degrada a secundario.The availability group primary on node 1 is demoted to secondary.

  5. La réplica secundaria del grupo de disponibilidad del nodo 2 se asciende a principal.The availability group secondary on node 2 is promoted to primary.

Para evitar que la dirección IP apunte temporalmente al nodo con la réplica secundaria previa a la conmutación por error, agregue una restricción de ordenación.To prevent the IP address from temporarily pointing to the node with the pre-failover secondary, add an ordering constraint.

Para agregar una restricción de orden, ejecute el siguiente comando en un nodo:To add an ordering constraint, run the following command on one node:

RHEL 7RHEL 7

sudo pcs constraint order promote ag_cluster-master then start virtualip

RHEL 8RHEL 8

sudo pcs constraint order promote ag_cluster-clone then start virtualip

Importante

Después de configurar el clúster y agregar el grupo de disponibilidad como un recurso de clúster, no puede usar Transact-SQL para conmutar por error los recursos del grupo de disponibilidad.After you configure the cluster and add the availability group as a cluster resource, you cannot use Transact-SQL to fail over the availability group resources. Los recursos de clúster de SQL Server en Linux no están tan bien integrados con el sistema operativo como lo están en un clúster de conmutación por error de Windows Server (WSFC).SQL Server cluster resources on Linux are not coupled as tightly with the operating system as they are on a Windows Server Failover Cluster (WSFC). El servicio SQL Server no es consciente de la presencia del clúster.SQL Server service is not aware of the presence of the cluster. Toda la orquestación se realiza con las herramientas de administración de clústeres.All orchestration is done through the cluster management tools. En RHEL o Ubuntu, use pcs; en SLES, use las herramientas de crm.In RHEL or Ubuntu use pcs and in SLES use crm tools.

Realice una conmutación por error manual del grupo de disponibilidad con pcs.Manually fail over the availability group with pcs. No inicie la conmutación por error con Transact-SQL.Do not initiate failover with Transact-SQL. Para obtener instrucciones, vea Conmutación por error.For instructions, see Failover.

Pasos siguientesNext steps

Funcionamiento del grupo de disponibilidad de alta disponibilidadOperate HA availability group