Partimos de un Cluster Multi-Site (Cluster Geográfico o GeoCluster) sobre Windows Server 2008 R2, sobre el que hemos realizado una configuración básica, para que tenga dos Direcciones IP, y pueda levantar una u otra según el direccionamiento de Nodo que actúe como propietario en cada momento. Sin embargo, dado que esta configuración genera múltiples entradas en DNS para el mismo nombre, deseamos configurar el Cluster para que registre una única entrada en DNS, correspondiente a la única Dirección IP que esté levantada, con un TTL de un minuto para minimizar el tiempo que tardan los clientes en conocer la nueva Dirección IP y conectarse a ella en caso de un Balanceo. Para ello, necesitamos modificar el valor de las propiedades RegisterAllProvidersIP y HostRecordTTL del Recurso Network Name. El escenario de partida es el que ya describimos en el anterior artículo Configurar un Cluster Multi-Site para SQL Server 2012.
Lo primero que deberemos hacer es averiguar el nombre del Recurso de Network Name que necesitamos modificar y mostrar sus propiedades, para lo cual utilizaremos los comandos Get-ClusterResource y Get-ClusterParameter, tal y como se muestra en el siguiente ejemplo.
- Get-ClusterResource | select Name, ResourceType
- Get-ClusterResource AG_GuilleSQL_lstAG_GuilleSQL | Get-ClusterParameter
Como podemos observar, nuestro Recurso de Network Name tiene los valores por defecto para las propiedades RegisterAllProvidersIP y HostRecordTTL (0 y 1200, respectivamente). Para cambiar estos valores, ejecutaremos los comandos Get-ClusterResource y Set-ClusterParameter, tal y como se muestra en el siguiente ejemplo.
- Get-ClusterResource AG_GuilleSQL_lstAG_GuilleSQL | Set-ClusterParameter -Name RegisterAllProvidersIP -Value 0
- Get-ClusterResource AG_GuilleSQL_lstAG_GuilleSQL | Set-ClusterParameter -Name HostRecordTTL -Value 60
Para que estos cambios tomen totalmente efecto, deberemos al menos poner OffLine y volver a poner OnLine dicho Recurso, algo que también podemos hacer desde PowerShell, por ejemplo utilizando los comandos Stop-ClusterResource y Start-ClusterResource (esto podría generar una breve indisponibilidad de servicio).
- Stop-ClusterResource AG_GuilleSQL_lstAG_GuilleSQL
- Start-ClusterResource AG_GuilleSQL_lstAG_GuilleSQL
Realizado esto, si volvemos a comprobar el DNS, podremos ver que ahora ya sólo está registrada una única dirección IP, la que está levantada.
Además, si editamos dicho registro DNS, podremos comprobar que el TTL ha quedado configurado a un minuto, tal y como queríamos.
Como hemos podido ver, se trata de una configuración muy sencilla, que deberemos realizar desde línea de comandos, y que en nuestro caso particular hemos realizado a través de PowerShell (también podría utilizarse utilizando los comandos de cluster.exe).
Configurar las propiedades RegisterAllProvidersIP y HostRecordTTL con el comando Cluster.exe
Para realizarlo desde línea de comandos sin PowerShell, podemos utilizar el comando cluster.exe para establecer el valor deseado de las propiedades RegisterAllProvidersIP y HostRecordTTL del correspondiente Recurso de Cluster, como se muestra en los siguientes dos ejemplos:
- cluster /cluster:ClusterName res “SQL Network Name (SQLTest)” /priv RegisterAllProvidersIP=0
- cluster /cluster:ClusterName res “SQL Network Name (SQLTest)” /priv HostRecordTTL=0
Igualmente, si queremos ver las propiedades y valores actuales de un recurso del Cluster, podemos ejecutar un comando como el siguiente:
- cluster /cluster:ClusterName res “SQL Network Name (SQLTest)” /priv
Poco más por hoy. Como siempre, confío que la lectura resulte de interés.