Compartir a través de


Configuración de un grupo de disponibilidad de grupo de trabajo

Se aplica a:SQL Server en máquina virtual de Azure

En este artículo se explican los pasos necesarios para crear un clúster independiente del dominio de Active Directory con un grupo de disponibilidad AlwaysOn; también conocido como clúster de grupo de trabajo. Este artículo se centra en los pasos pertinentes para preparar y configurar el grupo de trabajo y el grupo de disponibilidad. Omite los pasos que se tratan en otros artículos, como la creación del clúster o la implementación del grupo de disponibilidad.

Requisitos previos

Para configurar un grupo de disponibilidad del grupo de trabajo, necesita los siguientes requisitos previos:

  • Al menos dos máquinas virtuales con Windows Server 2016 (o superior) que ejecuten SQL Server 2016 (o superior), implementadas en el mismo conjunto de disponibilidad o en zonas de disponibilidad diferentes, mediante direcciones IP estáticas.
  • Una red local con un mínimo de cuatro direcciones IP libres en la subred.
  • Una cuenta en cada máquina del grupo de administradores que también tenga derechos de administrador del sistema en SQL Server.
  • Puertos abiertos: TCP 1433, TCP 5022 y TCP 59999.

Como referencia, los parámetros siguientes se usan en este artículo, pero se pueden modificar según sea necesario:

Nombre Parámetro
Node1 AGNode1 (10.0.0.4)
Node2 AGNode2 (10.0.0.5)
Nombre del clúster AGWGAG (10.0.0.6)
Agente de escucha AGListener (10.0.0.7)
Sufijo DNS ag.wgcluster.example.com
Nombre del grupo de trabajo AGWorkgroup

Definición de un sufijo DNS

En este paso, configure el sufijo DNS para ambos servidores. Por ejemplo, ag.wgcluster.example.com. Esta configuración le permite usar el nombre del objeto al que desea conectarse como una dirección completa dentro de la red, como AGNode1.ag.wgcluster.example.com.

Para configurar el sufijo DNS, siga estos pasos:

  1. Conéctese al primer nodo mediante Bastion y abra el Administrador del servidor.

  2. Seleccione Servidor local y, a continuación, seleccione el nombre de la máquina virtual en Nombre del equipo.

  3. Seleccione Cambiar en Para cambiar el nombre de este equipo.

  4. Cambie el nombre del grupo de trabajo por algo significativo, como AGWORKGROUP:

    Captura de pantalla que muestra el cuadro de diálogo

  5. Seleccione Más para abrir el cuadro de diálogo Sufijo DNS y nombre NetBIOS del equipo.

  6. Bajo el Sufijo DNS principal de este equipo, escriba el nombre del sufijo DNS como ag.wgcluster.example.com y, a continuación, seleccione Aceptar:

    Captura de pantalla que muestra el cuadro de diálogo Sufijo D N S y Nombre de equipo NetBIOS, con el valor ag.wgcluster.example.com especificado.

  7. Confirme que Nombre completo del equipo ahora muestra el sufijo DNS y, a continuación, seleccione Aceptar para guardar los cambios:

    Captura de pantalla que muestra el cuadro de diálogo

  8. Reinicie el servidor cuando se le pida que lo haga.

  9. Repita estos pasos en todos los demás nodos que se van a usar para el grupo de disponibilidad.

Edición de un archivo host

Puesto que no hay ninguna instancia de Active Directory en esta configuración, no hay ninguna manera de autenticar las conexiones de Windows. Por tanto, para asignar la confianza, edite el archivo host con un editor de texto.

Para editar el archivo host, siga estos pasos:

  1. Conéctese a la máquina virtual mediante Bastion.

  2. Use el Explorador de archivos para ir a c:\windows\system32\drivers\etc.

  3. Haga clic con el botón derecho en el archivo hosts y abra el archivo con Bloc de notas (o cualquier otro editor de texto).

  4. Al final del archivo, agregue una entrada para cada nodo, el grupo de disponibilidad y el agente de escucha con el formato IP Address, DNS Suffix #comment, como se muestra a continuación:

    10.0.0.4 AGNode1.ag.wgcluster.example.com #Availability group node
    10.0.0.5 AGNode2.ag.wgcluster.example.com #Availability group node
    10.0.0.6 AGWGAG.ag.wgcluster.example.com #Cluster IP
    10.0.0.7 AGListener.ag.wgcluster.example.com #Listener IP
    

    Captura de pantalla del archivo hosts en el Bloc de notas. Las nuevas entradas de la dirección IP, el clúster y el agente de escucha de cada nuevo nodo se agregan al final del archivo.

Establecimiento de permisos

Dado que no hay ninguna instancia de Active Directory para administrar permisos, debe permitir manualmente que una cuenta de administrador local no integrada cree el clúster.

Para ello, ejecute el siguiente cmdlet de PowerShell en una sesión de PowerShell administrativa en cada nodo:

new-itemproperty -path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -Name LocalAccountTokenFilterPolicy -Value 1

Creación del clúster de conmutación por error

En este paso, creará el clúster de conmutación por error. Si no está familiarizado con los pasos, consulte "Creación de un clúster de conmutación por error de Windows" en el tutorial del clúster de conmutación por error.

Diferencias importantes entre el tutorial del clúster de conmutación por error y lo que se debe hacer para un clúster de grupo de trabajo:

  • Desactive Almacenamiento y Espacios de almacenamiento directo cuando ejecute la validación del clúster.

  • Al agregar los nodos al clúster, agregue el nombre completo, como:

    • AGNode1.ag.wgcluster.example.com
    • AGNode2.ag.wgcluster.example.com
  • Desactive Agregar todo el almacenamiento apto al clúster.

Una vez creado el clúster, asigne una dirección IP estática del clúster. Para hacerlo, siga estos pasos:

  1. En uno de los nodos, abra Administrador de clústeres de conmutación por error, seleccione el clúster, haga clic con el botón derecho en Nombre: <ClusterName> en Recursos principales del clúster y, a continuación, seleccione Propiedades.

    Captura de pantalla que muestra cómo editar las propiedades del clúster en

  2. Seleccione la dirección IP en Direcciones IP y seleccione Editar.

  3. Seleccione Usar estática, proporcione la dirección IP del clúster y, después, seleccione Aceptar:

    Captura de pantalla que muestra cómo editar la dirección IP estática del clúster.

  4. Compruebe que la configuración sea correcta y, a continuación, seleccione Aceptar para guardarla:

    Captura de pantalla que muestra las propiedades del clúster para la comprobación.

Creación de un testigo en la nube

En este paso, configure un testigo de recurso compartido en la nube. Si no está familiarizado con los pasos, consulte Implementación de un testigo en la nube para un clúster de conmutación por error.

Habilitación de la característica de grupos de disponibilidad

En este paso, habilitará la característica de grupo de disponibilidad. Si no está familiarizado con los pasos, consulte el tutorial sobre los grupos de disponibilidad.

Creación de claves y certificados

En este paso, cree los certificados que se usan en un inicio de sesión de SQL en el punto de conexión cifrado. Cree una carpeta en cada nodo para almacenar las copias de seguridad de los certificados, como c:\certs.

Nota:

Si no especifica una fecha de expiración para el certificado, es válida durante un año a partir de la fecha de creación. Si el certificado expira, se producirá un error en la conexión entre los puntos de conexión.

Para configurar el primer nodo, siga estos pasos:

  1. Abra SQL Server Management Studio y conéctese al primer nodo, como AGNode1.

  2. Abra una ventana Nueva consulta y ejecute la siguiente instrucción Transact-SQL (T-SQL) después de actualizar a una contraseña compleja y segura:

    USE master;
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'PassWOrd123!';
    GO
    
    --create a cert from the master key
    USE master;
    CREATE CERTIFICATE AGNode1Cert
       WITH SUBJECT = 'AGNode1 Certificate';
    GO
    
    --Backup the cert and transfer it to AGNode2
    BACKUP CERTIFICATE AGNode1Cert TO FILE = 'C:\certs\AGNode1Cert.crt';
    GO
    
  3. A continuación, cree el punto de conexión HADR y use el certificado de autenticación mediante la ejecución de esta instrucción Transact-SQL (T-SQL):

    --CREATE or ALTER the mirroring endpoint
    CREATE ENDPOINT hadr_endpoint
       STATE = STARTED
       AS TCP (
          LISTENER_PORT=5022
          , LISTENER_IP = ALL
       )
       FOR DATABASE_MIRRORING (
          AUTHENTICATION = CERTIFICATE AGNode1Cert
          , ENCRYPTION = REQUIRED ALGORITHM AES
          , ROLE = ALL
       );
    GO
    
  4. Use el Explorador de archivos para ir a la ubicación del archivo donde se encuentra su certificado, como c:\certs.

  5. Cree manualmente una copia del certificado, como AGNode1Cert.crt, desde el primer nodo y transfiérala a la misma ubicación en el segundo nodo.

Para configurar el segundo nodo, siga estos pasos:

  1. Conéctese al segundo nodo con SQL Server Management Studio, como AGNode2.

  2. En una ventana Nueva consulta, ejecute la siguiente instrucción Transact-SQL (T-SQL) después de actualizar a una contraseña compleja y segura:

    USE master;
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<complex password>';
    GO
    
    --create a cert from the master key
    USE master;
    CREATE CERTIFICATE AGNode2Cert
       WITH SUBJECT = 'AGNode2 Certificate';
    GO
    --Backup the cert and transfer it to AGNode1
    BACKUP CERTIFICATE AGNode2Cert TO FILE = 'C:\certs\AGNode2Cert.crt';
    GO
    
  3. A continuación, cree el punto de conexión HADR y use el certificado de autenticación mediante la ejecución de esta instrucción Transact-SQL (T-SQL):

    --CREATE or ALTER the mirroring endpoint
    CREATE ENDPOINT hadr_endpoint
       STATE = STARTED
       AS TCP (
          LISTENER_PORT=5022
          , LISTENER_IP = ALL
       )
       FOR DATABASE_MIRRORING (
          AUTHENTICATION = CERTIFICATE AGNode2Cert
          , ENCRYPTION = REQUIRED ALGORITHM AES
          , ROLE = ALL
       );
    GO
    
  4. Use el Explorador de archivos para ir a la ubicación del archivo donde se encuentra su certificado, como c:\certs.

  5. Cree manualmente una copia del certificado, como AGNode2Cert.crt, desde el segundo nodo y transfiérala a la misma ubicación en el primer nodo.

Si hay otros nodos en el clúster, repita los mismos pasos en estos con los nombres de certificado respectivos.

Creación de inicios de sesión

La autenticación de certificados se usa para sincronizar los datos entre nodos. Para permitir la sincronización, cree un inicio de sesión para el otro nodo, cree un usuario para el inicio de sesión, cree un certificado para que el inicio de sesión utilice el certificado respaldado, y a continuación, conceda permiso de conexión en el punto de conexión de reflejo.

Para ello, primero ejecute la siguiente consulta Transact-SQL (T-SQL) en el primer nodo, como AGNode1:

--create a login for the AGNode2
USE master;
CREATE LOGIN AGNode2_Login WITH PASSWORD = '<complex password>';
GO

--create a user from the login
CREATE USER AGNode2_User FOR LOGIN AGNode2_Login;
GO

--create a certificate that the login uses for authentication
CREATE CERTIFICATE AGNode2Cert
   AUTHORIZATION AGNode2_User
   FROM FILE = 'C:\certs\AGNode2Cert.crt'
GO

--grant connect for login
GRANT CONNECT ON ENDPOINT::hadr_endpoint TO [AGNode2_login];
GO

A continuación, ejecute la siguiente consulta Transact-SQL (T-SQL) en el segundo nodo, como AGNode2:

--create a login for the AGNode1
USE master;
CREATE LOGIN AGNode1_Login WITH PASSWORD = '<complex password>';
GO

--create a user from the login
CREATE USER AGNode1_User FOR LOGIN AGNode1_Login;
GO

--create a certificate that the login uses for authentication
CREATE CERTIFICATE AGNode1Cert
   AUTHORIZATION AGNode1_User
   FROM FILE = 'C:\certs\AGNode1Cert.crt'
GO

--grant connect for login
GRANT CONNECT ON ENDPOINT::hadr_endpoint TO [AGNode1_login];
GO

Si hay otros nodos en el clúster, repita los mismos pasos en estos con los nombres de certificado y usuario respectivos.

Configuración de un grupo de disponibilidad

En este paso, configure el grupo de disponibilidad y agréguele sus bases de datos. No cree un agente de escucha en este momento. Si no está familiarizado con los pasos, consulte el tutorial sobre los grupos de disponibilidad. Para comprobar que todo funciona correctamente, asegúrese de iniciar una conmutación por error y una conmutación por recuperación.

Nota:

Si se produce un error durante el proceso de sincronización, es posible que deba conceder temporalmente los derechos NT AUTHORITY\SYSTEM de la cuenta para crear recursos de clúster en el primer nodo, como AGNode1.

Configuración de un equilibrador de carga

En este paso final, configure el equilibrador de carga mediante Azure Portal o PowerShell.

Sin embargo, puede haber algunas limitaciones al usar la GUI del clúster de Windows. Por lo tanto, debe usar PowerShell para crear un punto de acceso de cliente o el nombre de red del agente de escucha con el siguiente script de ejemplo:

Add-ClusterResource -Name "IPAddress1" -ResourceType "IP Address" -Group "WGAG"
Get-ClusterResource -Name IPAddress1 | Set-ClusterParameter -Multiple @{"Network" = "Cluster Network 1";"Address" = "10.0.0.4";"SubnetMask" = "255.0.0.0";"EnableDHCP" = 0}
Add-ClusterResource -Name "IPAddress2" -ResourceType "IP Address" -Group "WGAG"
Get-ClusterResource -Name IPAddress2 | Set-ClusterParameter -Multiple @{"Network" = "Cluster Network 2";"Address" = "10.0.0.5";"SubnetMask" = "255.0.0.0";"EnableDHCP" = 0}
Add-ClusterResource -Name "TestName" -Group "WGAG" -ResourceType "Network Name"
Get-ClusterResource -Name "TestName" | Set-ClusterParameter -Multiple @{"DnsName" = "TestName";"RegisterAllProvidersIP" = 1}
Set-ClusterResourceDependency -Resource TestName -Dependency "[IPAddress1] or [IPAddress2]"
Start-ClusterResource -Name TestName -Verbose

Configuración del puerto de sondeo

Al usar una instancia de Azure Load Balancer para admitir un recurso de nombre de red virtual (VNN), debe configurar el clúster para responder a las solicitudes de sondeo de estado. Si el sondeo de estado no obtiene una respuesta de una instancia de back-end, no se envían nuevas conexiones a esa instancia de back-end hasta que el sondeo de estado se realiza correctamente de nuevo.

Para establecer el parámetro de puerto de sondeo en PowerShell, use el siguiente script una vez por recurso de dirección IP aplicable:

$ClusterNetworkName = "<MyClusterNetworkName>" # The cluster network name. Use Get-ClusterNetwork on Windows Server 2012 or later to find the name.
$IPResourceName = "<IPResourceName>" # The IP address resource name.
[int]$ProbePort = <nnnnn> # The probe port that you configured in the health probe of the load balancer for a given Frontend IP Address. Any unused TCP port is valid.

Import-Module FailoverClusters

Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$IPResourceName";"ProbePort"=$ProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}

Los cambios que realice no surten efecto hasta que el recurso de dirección IP se desconecte y se vuelva a conectar. Realice una conmutación por error del recurso para que este cambio surta efecto.

Después de establecer el sondeo de clúster, use el siguiente script de PowerShell para comprobar los parámetros del clúster:

Get-ClusterResource $IPResourceName | Get-ClusterParameter

Excluir puertos del rango dinámico de puertos

Cuando se usa un puerto de sondeo de estado entre 49 152 y 65 536 (el intervalo de puertos dinámico predeterminado para TCP/IP), agregue una exclusión para cada puerto de sondeo de estado en cada máquina virtual.

La configuración de la exclusión de puertos impide que otros procesos del sistema se asignen dinámicamente al mismo puerto en la máquina virtual.

Para establecer una exclusión de puerto, use el siguiente script de PowerShell:

  • para cada puerto de sondeo de salud
  • en cada máquina virtual
[int]$ProbePort = <nnnnn> # The probe port that you configured in the health probe of the load balancer. Any unused TCP port is valid.

netsh int ipv4 add excludedportrange tcp startport=$ProbePort numberofports=1 store=persistent

Para confirmar que las exclusiones se han configurado correctamente, use el siguiente comando:

netsh int ipv4 show excludedportrange tcp