Usas una imagen premium de SQL Server que tiene preinstalado SQL Server 2022.

Para emitir un voto de desempate y alcanzar el quórum en el caso de conmutación por error, debes implementar una tercera VM que actúe como testigo de recurso compartido de archivos.

  1. Vuelve a tu sesión de Cloud Shell.
  2. Crea un script especializado para los nodos del clúster. La secuencia de comandos instala la función de Windows necesaria y crea reglas de firewall para el clúster de conmutación por error y SQL Server.

    cat << "EOF" > specialize-node.ps1
    
    $ErrorActionPreference = "stop"
    
    # Install required Windows features
    Install-WindowsFeature Failover-Clustering -IncludeManagementTools
    Install-WindowsFeature RSAT-AD-PowerShell
    
    # Open firewall for availability group listener
    netsh advfirewall firewall add rule name="Allow SQL Server Listener health check" dir=in action=allow protocol=TCP localport=59997
    
    # Open firewall for the Failover Cluster
    netsh advfirewall firewall add rule name="Allow SQL Server health check" dir=in action=allow protocol=TCP localport=59998
    
    # Open firewall for SQL Server
    netsh advfirewall firewall add rule name="Allow SQL Server" dir=in action=allow protocol=TCP localport=1433
    
    # Open firewall for SQL Server replication
    netsh advfirewall firewall add rule name="Allow SQL Server replication" dir=in action=allow protocol=TCP localport=5022
    
    # Format data disk
    Get-Disk |
     Where partitionstyle -eq 'RAW' |
     Initialize-Disk -PartitionStyle MBR -PassThru |
     New-Partition -AssignDriveLetter -UseMaximumSize |
     Format-Volume -FileSystem NTFS -NewFileSystemLabel 'Data' -Confirm:$false
    
    # Create data and log folders for SQL Server
    md d:\Data
    md d:\Logs
    EOF
    
  3. Crea las instancias de VM. En las dos máquinas virtuales que actúan como nodos del clúster, conecta un disco de datos adicional y habilita Windows Server Failover Clustering. Para ello, asigna el valor true a la clave de metadatos enable-wsfc.

    REGION=$(gcloud config get-value compute/region)
    ZONE1=$(gcloud config get-value compute/zone)
    ZONE2=$(gcloud config get-value compute/zone)
    ZONE3=$(gcloud config get-value compute/zone)
    PD_SIZE=200
    MACHINE_TYPE=n2-standard-8
    
    gcloud compute instances create node-1 \
      --zone $ZONE1 \
      --machine-type $MACHINE_TYPE \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2022-win-2022 \
      --image-project windows-sql-cloud \
      --tags wsfc,wsfc-node \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd \
      --boot-disk-device-name "node-1" \
      --create-disk=name=node-1-datadisk,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --metadata enable-wsfc=true \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1
    
    gcloud compute instances create node-2 \
      --zone $ZONE2 \
      --machine-type $MACHINE_TYPE \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2022-win-2022 \
      --image-project windows-sql-cloud \
      --tags wsfc,wsfc-node \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd \
      --boot-disk-device-name "node-2" \
      --create-disk=name=node-2-datadisk,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --metadata enable-wsfc=true \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1
    
    gcloud compute instances create "witness" \
      --zone $ZONE3 \
      --machine-type n2-standard-2 \
      --subnet $SUBNET_NAME \
      --image-family=windows-2022 \
      --image-project=windows-cloud \
      --tags wsfc \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd \
      --metadata sysprep-specialize-script-ps1="add-windowsfeature FS-FileServer"
    
  4. Para unir las tres instancias de VM a Active Directory, haz lo siguiente en cada una de ellas.

    1. Monitoriza el proceso de inicialización de la VM consultando la salida de su puerto serie.

      gcloud compute instances tail-serial-port-output NAME
      

      Sustituye NAME por el nombre de la instancia de VM.

      Espera unos 3 minutos hasta que veas el resultado Instance setup finished, luego pulsa Ctrl+C. En este punto, la instancia de VM ya se puede usar.

    2. Crea un nombre de usuario y una contraseña para la instancia de VM.

    3. Conéctate a la VM mediante Escritorio remoto e inicia sesión con el nombre de usuario y la contraseña que has creado en el paso anterior.

    4. Haz clic con el botón derecho en el botón Inicio (o pulsa Win+X) y, a continuación, en Windows PowerShell (Administrador).

    1. Confirma la solicitud de elevación haciendo clic en .
    2. Une el ordenador a tu dominio de Active Directory y reinícialo.

      Add-Computer -Domain DOMAIN -Restart
      

      Sustituye DOMAIN por el nombre DNS de tu dominio de Active Directory.

    3. Introduce las credenciales de una cuenta que tenga permisos para unir una máquina virtual al dominio. Espera aproximadamente 1 minuto a que se complete el reinicio.