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 Always On, que también se conoce como un clúster de grupo de trabajo. Este artículo se centra en los pasos relevantes para preparar y configurar el grupo de trabajo y el grupo de disponibilidad, y trata por encima los pasos descritos 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 de grupo de trabajo, necesita lo siguiente:
- 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 4 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, se usan los parámetros siguientes 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
. Esto 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:
Habilite RDP en el primer nodo y abra el Administrador del servidor.
Seleccione Servidor local y, a continuación, seleccione el nombre de la máquina virtual en Nombre del equipo.
Seleccione Cambiar en Para cambiar el nombre de este equipo.
Cambie el nombre del grupo de trabajo para que tenga sentido, como
AGWORKGROUP
:Seleccione Más para abrir el cuadro de diálogo Sufijo DNS y nombre NetBIOS del equipo.
Escriba el nombre del sufijo DNS en Sufijo DNS principal de este equipo (por ejemplo,
ag.wgcluster.example.com
) y, a continuación, seleccione Aceptar:Confirme que Nombre completo del equipo ahora muestra el sufijo DNS y, a continuación, seleccione Aceptar para guardar los cambios:
Reinicie el servidor cuando se le pida que lo haga.
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
Al no haber ninguna instancia de Active Directory, no hay forma 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:
Habilite RDP en la máquina virtual.
Use el Explorador de archivos para ir a
c:\windows\system32\drivers\etc
.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).
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
Establecimiento de permisos
Puesto que no hay ninguna instancia de Active Directory para administrar los permisos, debe permitir manualmente una cuenta de administrador local no integrada para crear 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 siguiente. Si no está familiarizado con estos pasos, puede seguirlos desde el tutorial sobre los clústeres de conmutación por error.
Diferencias importantes entre el tutorial 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 de clúster estática. Para hacerlo, siga estos pasos:
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: <ClusterNam> en Recursos principales de clúster y, luego, seleccione Propiedades.
Seleccione la dirección IP en Direcciones IP y seleccione Editar.
Seleccione Usar estática, proporcione la dirección IP del clúster y, después, seleccione Aceptar:
Compruebe que la configuración sea correcta y, a continuación, seleccione Aceptar para guardarla:
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 especificas una fecha de expiración para el certificado, su validez será 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:
Abra SQL Server Management Studio y conéctese al primer nodo, como
AGNode1
.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
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
Use el Explorador de archivos para ir a la ubicación del archivo donde se encuentra su certificado, como
c:\certs
.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:
Conéctese al segundo nodo con SQL Server Management Studio, como
AGNode2
.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 = 'PassWOrd123!'; 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
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
Use el Explorador de archivos para ir a la ubicación del archivo donde se encuentra su certificado, como
c:\certs
.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 permitirlo, 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 use el certificado de copia de seguridad y, a continuación, permita la conexión en el punto de conexión de creació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 = 'PassWord123!';
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 = 'PassWord123!';
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. Asegúrese de iniciar una conmutación por error y una conmutación por recuperación para comprobar que todo funciona correctamente.
Nota:
Si se produce un error durante el proceso de sincronización, puede que tenga que conceder derechos de administrador del sistema NT AUTHORITY\SYSTEM
para crear recursos de clúster en el primer nodo, como AGNode1
, temporalmente.
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 y, como tal, debe usar PowerShell para crear un punto de acceso de cliente o el nombre de red para el 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
Pasos siguientes
Una vez que se haya implementado el grupo de disponibilidad, puede optimizar la configuración de alta disponibilidad y recuperación ante desastres para SQL Server en máquinas virtuales de Azure.
Para obtener más información, consulte: