Mengonfigurasi instance cluster failover SQL Server yang menggunakan Storage Spaces Direct


Instance Cluster Failover Always On (FCI) Microsoft SQL Server memungkinkan Anda menjalankan satu instance SQL Server di beberapa node Windows Server Failover Cluster (WSFC). Sewaktu-waktu, salah satu node cluster secara aktif menghosting instance SQL. Jika terjadi kegagalan, WSFC akan mentransfer kepemilikan resource instance ke node lain secara otomatis.

FCI SQL Server mengharuskan data ditempatkan di penyimpanan bersama agar dapat diakses di seluruh node WSFC. Panduan ini menjelaskan cara men-deploy instance cluster failover SQL Server 2019 yang menggunakan Storage Spaces Direct (S2D) untuk penyimpanan bersama. S2D menyediakan SAN virtual berbasis software yang dapat menggunakan disk data VM Compute Engine untuk menyimpan database SQL.

Diagram berikut menggambarkan deployment:

Arsitektur

Dengan menerapkan arsitektur sangat terkonvergensi, instance VM node-1 dan node-2 berfungsi sebagai node WSFC dan juga menghosting penyimpanan bersama. Instance VM ketiga, witness, digunakan untuk mencapai kuorum dalam skenario failover. Tiga instance VM didistribusikan ke tiga zona dan berbagi subnet yang sama.

Klien berkomunikasi dengan instance SQL Server melalui load balancer TCP internal. Load balancer ini menggunakan health check kustom untuk menentukan node WSFC mana yang saat ini menghosting instance SQL dan merutekan traffic ke instance tersebut.

Artikel ini berasumsi bahwa Anda telah men-deploy Active Directory di Google Cloud dan memiliki pengetahuan dasar tentang SQL Server, Active Directory, dan Compute Engine.

Tujuan

  • Men-deploy WSFC yang terdiri dari dua instance VM SQL Server dan instance VM ketiga yang bertindak sebagai saksi berbagi file.
  • Men-deploy FCI SQL Server di WSFC.
  • Memastikan cluster berfungsi dengan menyimulasikan failover.

Biaya

Tutorial ini menggunakan komponen Google Cloud yang dapat ditagih, termasuk:

Gunakan kalkulator harga untuk membuat perkiraan biaya berdasarkan penggunaan yang Anda proyeksikan.

Sebelum memulai

Untuk menyelesaikan panduan ini, Anda memerlukan hal berikut:

  • Domain Active Directory dengan minimal satu pengontrol domain. Anda dapat membuat domain Active Directory dengan menggunakan Microsoft AD Terkelola. Atau, Anda dapat men-deploy lingkungan Active Directory kustom di Compute Engine dan menyiapkan zona penerusan DNS pribadi yang meneruskan kueri DNS ke pengontrol domain Anda.
  • Pengguna Active Directory yang memiliki izin untuk menggabungkan komputer ke domain dan dapat login menggunakan RDP. Jika menggunakan Microsoft AD Terkelola, Anda dapat menggunakan pengguna setupadmin.
  • Project Google Cloud dan VPC dengan konektivitas ke pengontrol domain Active Directory Anda.
  • Subnet yang akan digunakan untuk instance VM WSFC.

Untuk menyelesaikan panduan ini, Anda juga memerlukan project Google Cloud:

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  5. Make sure that billing is enabled for your Google Cloud project.

Setelah menyelesaikan tutorial ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk informasi selengkapnya, lihat Pembersihan.

Mempersiapkan project dan jaringan

Untuk menyiapkan project Google Cloud dan VPC Anda untuk deployment FCI SQL Server, lakukan hal berikut:

  1. Di konsol Google Cloud, buka Cloud Shell dengan mengklik tombol Aktifkan Cloud Shell Mengaktifkan Cloud Shell..

    Buka konsol Google Cloud.

  2. Lakukan inisialisasi variabel berikut:

    VPC_NAME=VPC_NAME
    SUBNET_NAME=SUBNET_NAME
    

    Dengan keterangan:

    • VPC_NAME: nama VPC Anda
    • SUBNET_NAME: nama subnet Anda
  3. Tetapkan project ID default Anda:

    gcloud config set project PROJECT_ID
    

    Ganti PROJECT_ID dengan ID project Google Cloud Anda.

  4. Tetapkan region default Anda:

    gcloud config set compute/region REGION
    

    Ganti REGION dengan ID region tempat Anda ingin men-deploy.

Membuat aturan firewall

Agar klien dapat terhubung ke SQL Server, mengizinkan komunikasi antara node WSFC, dan mengaktifkan load balancer untuk melakukan health check, Anda perlu membuat beberapa aturan firewall. Untuk menyederhanakan pembuatan aturan firewall ini, gunakan tag jaringan:

  • Dua node WSFC dianotasi dengan tag wsfc-node.
  • Semua server (termasuk saksi) dianotasi dengan tag wsfc.

Buat aturan firewall yang menggunakan tag jaringan ini:

  1. Kembali ke sesi Cloud Shell yang ada.
  2. Buat aturan firewall untuk node WSFC:

    SUBNET_CIDR=$(gcloud compute networks subnets describe $SUBNET_NAME --format=value\('ipCidrRange'\))
    
    gcloud compute firewall-rules create allow-all-between-wsfc-nodes \
      --direction=INGRESS \
      --action=allow \
      --rules=tcp,udp,icmp \
      --enable-logging \
      --source-tags=wsfc \
      --target-tags=wsfc \
      --network=$VPC_NAME \
      --priority 10000
    
    gcloud compute firewall-rules create allow-sql-to-wsfc-nodes \
      --direction=INGRESS \
      --action=allow \
      --rules=tcp:1433 \
      --enable-logging \
      --source-ranges=$SUBNET_CIDR \
      --target-tags=wsfc-node \
      --network=$VPC_NAME \
      --priority 10000
    
  3. Buat aturan firewall yang mengizinkan health check dari rentang IP penguji Google Cloud:

    gcloud compute firewall-rules create allow-health-check-to-wsfc-nodes \
      --direction=INGRESS \
      --action=allow \
      --rules=tcp \
      --source-ranges=130.211.0.0/22,35.191.0.0/16 \
      --target-tags=wsfc-node \
      --network=$VPC_NAME \
      --priority 10000
    

Membuat instance VM

Sekarang Anda men-deploy dua instance VM untuk cluster failover. Sewaktu-waktu, hanya salah satu dari VM ini yang berfungsi sebagai node FCI aktif, sedangkan node lainnya berfungsi sebagai node failover. Kedua instance VM tersebut harus memenuhi persyaratan berikut:

  • Keduanya berada di region yang sama sehingga dapat diakses oleh load balancer TCP internal.
  • Agen tamunya dikonfigurasi untuk menggunakan mode WSFC. Dalam mode ini, agen tamu akan mengabaikan alamat IP load balancer internal saat mengonfigurasi antarmuka jaringan lokal. Perilaku ini diperlukan untuk mencegah konflik alamat IP selama peristiwa failover WSFC.

Anda menggunakan image premium SQL Server yang sudah disertai dengan SQL Server 2019.

Untuk memberikan suara penentu setelah hasil imbang dan mencapai kuorum untuk skenario failover, Anda men-deploy VM ketiga yang berfungsi sebagai saksi fitur berbagi file.

  1. Kembali ke sesi Cloud Shell yang ada.
  2. Buat skrip spesialisasi untuk node WSFC. Skrip ini menginstal fitur Windows yang diperlukan serta membuat aturan firewall untuk WSFC dan 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 WSFC
    netsh advfirewall firewall add rule name="Allow SQL Server health check" dir=in action=allow protocol=TCP localport=59997
    
    # Open firewall for SQL Server
    netsh advfirewall firewall add rule name="Allow SQL Server" dir=in action=allow protocol=TCP localport=1433
    
    EOF
    
  3. Buat instance VM. Pada dua VM yang berfungsi sebagai node S2D dan WSFC, pasang disk data tambahan dan aktifkan mode WSFC dengan menetapkan kunci metadata enable-wsfc ke true:

    REGION=$(gcloud config get-value compute/region)
    PD_SIZE=50
    MACHINE_TYPE=n2-standard-8
    
    gcloud compute instances create node-1 \
      --zone $REGION-a \
      --machine-type $MACHINE_TYPE \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2019-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-1,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-1-datadisk-2,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-1-datadisk-3,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-1-datadisk-4,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 $REGION-b \
      --machine-type $MACHINE_TYPE \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2019-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-1,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-2-datadisk-2,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-2-datadisk-3,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-2-datadisk-4,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 $REGION-c \
      --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. Untuk menggabungkan 3 instance VM ke Active Directory, lakukan hal berikut untuk masing-masing dari 3 instance VM:

    1. Pantau proses inisialisasi VM dengan melihat output port serialnya:

      gcloud compute instances tail-serial-port-output NAME
      

      Ganti NAME dengan nama instance VM.

      Tunggu beberapa menit hingga Anda melihat output Instance setup finished, lalu tekan Ctrl+C. Pada tahap ini, instance VM siap digunakan.

    2. Buat nama pengguna dan sandi untuk instance VM.

    3. Hubungkan ke VM menggunakan Desktop Jarak Jauh dan login menggunakan nama pengguna dan sandi yang dibuat di langkah sebelumnya.

    4. Klik kanan tombol Start (atau tekan Win+X), lalu klik Windows PowerShell (Admin).

    5. Konfirmasi prompt elevasi dengan mengklik Yes.

    6. Gabungkan komputer ke domain Active Directory Anda, lalu mulai ulang:

      Add-Computer -Domain DOMAIN -Restart
      

      Ganti DOMAIN dengan nama DNS domain Active Directory Anda.

      Tunggu sekitar 1 menit sampai proses mulai ulang selesai.

Mencadangkan alamat IP cluster

Anda sekarang mencadangkan dua alamat IP statis di jaringan VPC Anda. Kedua alamat tersebut memiliki tujuan yang berbeda:

  • IP load balancer: Alamat IP ini digunakan oleh klien untuk terhubung ke SQL Server.
  • Cluster IP: Alamat IP ini hanya digunakan secara internal oleh WSFC.

Untuk mencadangkan alamat IP statis, lakukan hal berikut:

  1. Cadangkan IP statis untuk load balancer internal dan ambil alamatnya dalam variabel lingkungan baru bernama LOADBALANCER_ADDRESS:

    gcloud compute addresses create wsfc \
      --subnet $SUBNET_NAME \
      --region $(gcloud config get-value compute/region)
    
    LOADBALANCER_ADDRESS=$(gcloud compute addresses describe wsfc \
      --region $(gcloud config get-value compute/region) \
      --format=value\(address\)) && \
    echo "Load Balancer IP: $LOADBALANCER_ADDRESS"
    

    Catat alamat IP-nya karena Anda akan memerlukannya nanti.

  2. Cadangkan alamat IP statis lainnya yang Anda gunakan sebagai IP cluster:

    gcloud compute addresses create wsfc-cluster \
      --subnet $SUBNET_NAME \
      --region $(gcloud config get-value compute/region) && \
    CLUSTER_ADDRESS=$(gcloud compute addresses describe wsfc-cluster \
        --region $(gcloud config get-value compute/region) \
        --format=value\(address\)) && \
    echo "Cluster IP: $CLUSTER_ADDRESS"
    

    Catat alamat IP-nya karena Anda akan memerlukannya nanti.

Project dan VPC Anda kini siap untuk men-deploy WSFC dan SQL Server.

Buat berbagi file saksi

Untuk menyiapkan witness agar berfungsi sebagai saksi berbagi file, buat fitur berbagi file dan beri diri Anda serta dua node WSFC akses ke berbagi file:

  1. Hubungkan ke witness menggunakan Desktop Jarak Jauh. Login dengan akun pengguna domain Anda.
  2. Klik kanan tombol Start (atau tekan Win+X), lalu klik Windows PowerShell (Admin).
  3. Konfirmasi prompt elevasi dengan mengklik Ya.
  4. Buat folder saksi dan bagikan foldernya:

    New-Item "C:\QWitness" -Type directory
    
    icacls C:\QWitness\ /grant 'node-1$:(OI)(CI)(M)'
    icacls C:\QWitness\ /grant 'node-2$:(OI)(CI)(M)'
    
    New-SmbShare `
      -Name QWitness `
      -Path "C:\QWitness" `
      -Description "SQL File Share Witness" `
      -FullAccess  $env:username,node-1$,node-2$
    

Men-deploy cluster failover

Sekarang Anda menggunakan instance VM untuk men-deploy WSFC dan SQL Server.

Men-deploy WSFC

Sekarang Anda siap membuat cluster failover:

  1. Hubungkan ke node-1 menggunakan Desktop Jarak Jauh. Login dengan akun pengguna domain Anda.
  2. Klik kanan tombol Start (atau tekan Win+X), lalu klik Windows PowerShell (Admin).
  3. Konfirmasi prompt elevasi dengan mengklik Yes.
  4. Buat cluster baru:

    New-Cluster `
      -Name windows-fci `
      -Node node-1,node-2 `
      -NoStorage `
      -StaticAddress CLUSTER_ADDRESS
    

    Ganti CLUSTER_ADDRESS dengan alamat IP cluster yang Anda buat sebelumnya.

    Perintah ini akan membuat akun komputer windows-fci di domain Active Directory Anda.

  5. Kembali ke sesi PowerShell di witness, lalu berikan izin akses fitur berbagi file kepada akun komputer windows-fci:

    icacls C:\QWitness\ /grant 'windows-fci$:(OI)(CI)(M)'
    Grant-SmbShareAccess `
      -Name QWitness `
      -AccountName 'windows-fci$' `
      -AccessRight Full `
      -Force
    
  6. Kembali ke sesi PowerShell di node-1, lalu konfigurasikan cluster untuk menggunakan fitur berbagi file di witness sebagai kuorum cluster:

    Set-ClusterQuorum -FileShareWitness \\witness\QWitness
    
  7. Pastikan bahwa cluster berhasil dibuat:

    Test-Cluster
    

    Anda mungkin melihat beberapa peringatan yang dapat diabaikan dengan aman:

    WARNING: System Configuration - Validate All Drivers Signed: The test reported some warnings..
    WARNING: Network - Validate Network Communication: The test reported some warnings..
    WARNING:
    Test Result:
    HadUnselectedTests, ClusterConditionallyApproved
    Testing has completed for the tests you selected. You should review the warnings in the Report.  A cluster solution is
    supported by Microsoft only if you run all cluster validation tests, and all tests succeed (with or without warnings).
    

    Anda juga dapat meluncurkan snap-in MMC Pengelola Cluster Failover untuk meninjau kondisi cluster dengan menjalankan cluadmin.msc.

  8. Jika Anda menggunakan AD Terkelola, tambahkan akun komputer yang digunakan oleh WSFC ke grup Akun Penggabungan Domain Layanan Cloud agar dapat menggabungkan komputer ke domain:

    Install-WindowsFeature RSAT-ADDS
    Add-ADGroupMember `
      -Identity "Cloud Service Domain Join Accounts" `
      -Members windows-fci$
    

Mengaktifkan Ruang Penyimpanan Direct

Sekarang Anda mengaktifkan S2D dan membuat volume cluster bersama yang menggabungkan tiga persistent disk yang Anda buat sebelumnya:

  1. Kembali ke sesi PowerShell di node-1.
  2. Mengaktifkan S2D:

    Enable-ClusterStorageSpacesDirect
    

    Secara opsional, jika menginginkan performa disk yang lebih baik, Anda dapat menambahkan SSD lokal SCSI ke node S2D selain persistent disk SSD standar. SSD lokal dapat berfungsi sebagai lapisan caching S2D. Buat jumlah drive kapasitas (persistent disk SSD dalam kasus kami) menjadi kelipatan jumlah SSD lokal. Jalankan perintah berikut untuk mengaktifkan S2D dengan penyimpanan dalam cache:

    Enable-ClusterStorageSpacesDirect -CacheDeviceModel "EphemeralDisk"
    

    Terima setelan default saat diminta untuk mengonfirmasi. Anda mungkin melihat beberapa peringatan yang dapat diabaikan dengan aman:

    WARNING: 2021/04/08-13:12:26.159 Node node-1: No disks found to be used for cache
    WARNING: 2021/04/08-13:12:26.159 Node node-2: No disks found to be used for cache
    
  3. Secara opsional, tetapkan cache dalam memori Cluster Shared Volume (CSV) ke 2048 MB untuk throughput baca yang lebih baik:

    (Get-Cluster).BlockCacheSize = 2048
    
  4. Buat volume baru yang menggunakan versi volume bersama cluster dari ReFS dan ukuran cluster 64 KB:

    New-Volume `
      -StoragePoolFriendlyName S2D* `
      -FriendlyName FciVolume `
      -FileSystem CSVFS_ReFS `
      -UseMaximumSize `
      -AllocationUnitSize 65536
    

Menguji failover penyimpanan bersama

Secara opsional, kini Anda dapat menguji apakah failover penyimpanan bersama berfungsi dengan baik:

  1. Hubungkan ke node-2 menggunakan Desktop Jarak Jauh. Login dengan akun pengguna domain Anda.
  2. Klik kanan tombol Mulai (atau tekan Win+X), lalu pilih Jalankan.
  3. Masukkan cluadmin.msc lalu pilih OK.
  4. Di panel jendela kiri, buka Pengelola Cluster Failover > windows-fci > Penyimpanan > Bersama.

    Anda akan melihat kumpulan bernama Cluster Bersama 1 dengan Node pemilik yang ditetapkan ke node-1.

  5. Kembali ke Cloud Shell, lalu reset VM node-1 untuk menyimulasikan failover:

    gcloud compute instances reset node-1 --zone $REGION-a
    
  6. Kembali ke Pengelola Cluster Failover di node-2.

  7. Amati status penyimpanan bersama dengan menekan F5 berulang kali untuk memuat ulang tampilan.

    Setelah sekitar 30 detik, node pemilik akan beralih ke node-2 secara otomatis.

Menghapus penginstalan SQL Server default

Sekarang Anda menghapus penginstalan SQL Server default dari kedua node dan menggantinya dengan konfigurasi FCI baru.

Untuk masing-masing dari dua node WSFC, node-1 dan node-2, lakukan langkah-langkah berikut:

  1. Klik kanan tombol Mulai (atau tekan Win+X), lalu klik Windows PowerShell (Admin).
  2. Konfirmasi prompt elevasi dengan mengklik Ya.
  3. Hapus instance SQL Server default:

    C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
    
  4. Menghapus Driver OLE Microsoft:

    Get-Package -Name "Microsoft OLE*" | Uninstall-Package -Force
    
  5. Menghapus Driver ODBC Microsoft:

    Get-Package -Name "Microsoft ODBC*" | Uninstall-Package -Force
    
  6. Mulai ulang komputer:

    Restart-Computer
    
  7. Tunggu sekitar 1 menit sampai proses mulai ulang selesai.

Menginstal FCI SQL Server

Sebelum menginstal konfigurasi FCI baru, pastikan bahwa node-1 adalah node aktif di cluster:

  1. Hubungkan kembali ke node-1 menggunakan Desktop Jarak Jauh dan login menggunakan pengguna domain Anda.
  2. Klik kanan tombol Mulai (atau tekan Win+X), lalu pilih Jalankan.
  3. Masukkan cluadmin.msc lalu pilih OK.
  4. Di panel jendela kiri, buka Pengelola Cluster Failover > windows-fci.

    Pastikan bahwa server host saat ini disetel ke node-1.

    Jika server host saat ini disetel ke node-2, klik kanan windows-fci di panel jendela kiri, lalu pilih Tindakan lainnya > Pindahkan resource cluster inti> Pilih node… > node-1 lalu klik OK.

  5. Di panel jendela kiri, buka Pengelola Cluster Failover > windows-fci > Penyimpanan > Bersama.

    Pastikan node pemilik Cluster Bersama 1 disetel ke node-1.

    Jika node pemilik disetel ke node-2, klik kanan kumpulan tersebut, pilih Pindahkan > Pilih Node > node-1, lalu klik OK.

Sekarang Anda membuat penginstalan cluster failover SQL Server baru di node-1:

  1. Klik kanan tombol Mulai (atau tekan Win+X), lalu klik Windows PowerShell (Admin).
  2. Konfirmasi prompt elevasi dengan mengklik Yes.
  3. Buat akun pengguna domain untuk server SQL dan agen SQL, lalu tetapkan sandi:

    Active Directory

    $Credential = Get-Credential -UserName sql_server -Message 'Enter password'
    New-ADUser `
      -Name "sql_server" `
      -Description "SQL Agent and SQL Admin account." `
      -AccountPassword $Credential.Password `
      -Enabled $true -PasswordNeverExpires $true
    

    Microsoft AD Terkelola

    $Credential = Get-Credential -UserName sql_server -Message 'Enter password'
    New-ADUser `
      -Name "sql_server" `
      -Description "SQL Agent and SQL Admin account." `
      -AccountPassword $Credential.Password `
      -Enabled $true -PasswordNeverExpires $true `
      -Path "OU=Cloud,DOMAIN"
    

    Ganti DOMAIN dengan nama unik domain Anda, misalnya DC=example,DC=org.

  4. Mulai penyiapan SQL Server:

    & c:\sql_server_install\setup.exe
    
  5. Di menu di sebelah kiri, pilih Penginstalan.

  6. Pilih Penginstalan cluster failover SQL Server baru

  7. Di halaman Microsoft Update, pilih Berikutnya untuk memulai penginstalan.

  8. Di halaman Aturan Penginstalan Cluster Failover, Anda akan melihat Peringatan Peringatan verifikasi cluster MSCS dan firewall Windows. Anda dapat mengabaikan peringatan ini dan memilih Berikutnya.

  9. Di halaman Kunci Produk, tetap gunakan nilai default dan pilih Berikutnya.

  10. Di halaman Persyaratan Lisensi, pelajari persyaratan dan, jika Anda menyetujuinya, pilih Berikutnya.

  11. Di halaman Pemilihan Fitur, pilih Layanan Mesin Database, lalu pilih Berikutnya.

  12. Di halaman Instance Configuration, masukkan sql untuk nama jaringan dan instance bernama, lalu pilih Next.

  13. Di halaman Grup Resource Cluster, tetap gunakan nilai default dan pilih Berikutnya.

  14. Di halaman Pemilihan Disk Cluster, aktifkan Disk Virtual Cluster (FciVolume) dan nonaktifkan semua disk lainnya. Pilih Berikutnya.

  15. Di halaman Konfigurasi Jaringan Cluster, konfigurasikan setelan berikut, lalu pilih Berikutnya:

    • DHCP: kosong
    • Alamat IP: masukkan alamat IP load balancer internal.
  16. Di halaman Konfigurasi server, konfigurasikan setelan berikut untuk SQL Server Agent dan SQL Server Database Engine:

    • Nama akun: DOMAIN\sql_server dengan DOMAIN adalah nama NetBIOS domain Active Directory Anda
    • Sandi: Masukkan sandi yang Anda buat sebelumnya
  17. Pilih tab Kolasi, lalu pilih kolasi yang ingin Anda gunakan. Kemudian klik Berikutnya.

  18. Di halaman Konfigurasi Mesin Database, pilih Tambahkan pengguna saat ini untuk menetapkan pengguna saat ini sebagai administrator SQL Server. Kemudian pilih Berikutnya.

  19. Di halaman Siap Menginstal, tinjau setelan, lalu pilih Instal.

  20. Setelah penginstalan selesai, pilih Tutup.

Domain Active Directory Anda kini berisi akun komputer sql yang mewakili instance SQL Server dan entri DNS yang sesuai yang mengarah ke alamat IP load balancer internal.

Sekarang tambahkan node-2 ke cluster failover SQL Server:

  1. Hubungkan ke node-2 menggunakan Desktop Jarak Jauh, lalu login menggunakan pengguna domain Anda.
  2. Klik kanan tombol Start (atau tekan Win+X), lalu klik Windows PowerShell (Admin).
  3. Konfirmasi prompt elevasi dengan mengklik Ya.
  4. Mulai penyiapan SQL Server:

    & c:\sql_server_install\setup.exe
    
  5. Di menu di sebelah kiri, pilih Penginstalan.

  6. Pilih Tambahkan node ke cluster failover SQL Server.

  7. Ikuti petunjuk wizard penginstalan dan setujui setelan default hingga Anda mencapai halaman Akun Layanan.

  8. Di halaman Akun Layanan, masukkan sandi yang Anda buat sebelumnya untuk SQL Server Agent dan SQL Server Database Engine. Kemudian pilih Berikutnya.

  9. Di halaman Siap Menginstal, tinjau setelan, lalu pilih Instal.

  10. Setelah penginstalan selesai, pilih Tutup.

Mengonfigurasi health check

Sebagai langkah terakhir, konfigurasikan cluster untuk mengekspos endpoint health check yang dapat digunakan oleh load balancer internal:

  1. Kembali ke sesi PowerShell di node-2
  2. Lakukan inisialisasi variabel dengan alamat IP load balancer.

    $LoadBalancerIP = 'IP_ADDRESS'
    

    Ganti IP_ADDRESS dengan alamat IP dari alamat wsfc yang Anda cadangkan sebelumnya.

  3. Konfigurasikan Cluster Failover untuk merespons layanan health check:

    $SqlGroup = Get-ClusterGroup |
      Where-Object {$_.Name.StartsWith("SQL Server")}
    $SqlIpAddress = Get-ClusterResource |
      Where-Object {$_.Name.StartsWith("SQL IP Address")}
    
    $SqlIpAddress | Set-ClusterParameter -Multiple @{
     'Address'=$LoadBalancerIP;
     'ProbePort'= 59997;
     'SubnetMask'='255.255.255.255';
     'Network'= (Get-ClusterNetwork).Name;
     'EnableDhcp'=0; }
    
  4. Mulai ulang resource cluster:

    $SqlIpAddress | Stop-ClusterResource
    $SqlIpAddress | Start-ClusterResource
    
  5. Mulai ulang grup cluster:

    $SqlGroup | Stop-ClusterGroup
    $SqlGroup | Start-ClusterGroup
    

Membuat load balancer internal

Untuk menyediakan satu endpoint bagi klien SQL Server, Anda sekarang harus men-deploy load balancer internal. Load balancer menggunakan health check yang memastikan bahwa traffic diarahkan ke node aktif WSFC.

  1. Kembali ke sesi Cloud Shell yang ada.
  2. Buat dua grup instance tidak terkelola, satu per zona, lalu tambahkan dua node ke grup:

    gcloud compute instance-groups unmanaged create wsfc-group-1 --zone $REGION-a
    gcloud compute instance-groups unmanaged add-instances wsfc-group-1 --zone $REGION-a \
      --instances node-1
    
    gcloud compute instance-groups unmanaged create wsfc-group-2 --zone $REGION-b
    gcloud compute instance-groups unmanaged add-instances wsfc-group-2 --zone $REGION-b \
      --instances node-2
    
  3. Buat health check yang dapat digunakan oleh load balancer untuk memastikan mana yang merupakan node aktif.

    gcloud compute health-checks create tcp wsfc-healthcheck \
      --check-interval="2s" \
      --healthy-threshold=1 \
      --unhealthy-threshold=2 \
      --port=59997 \
      --timeout="1s"
    

    Health check memeriksa port 59997, yang merupakan port yang sebelumnya Anda konfigurasi sebagai ProbePort untuk resource alamat IP SQL Server.

  4. Buat layanan backend dan tambahkan dua grup instance:

    gcloud compute backend-services create wsfc-backend \
      --load-balancing-scheme internal \
      --region $(gcloud config get-value compute/region) \
      --health-checks wsfc-healthcheck \
      --protocol tcp
    
    gcloud compute backend-services add-backend wsfc-backend \
      --instance-group wsfc-group-1 \
      --instance-group-zone $REGION-a \
      --region $REGION
    
    gcloud compute backend-services add-backend wsfc-backend \
      --instance-group wsfc-group-2 \
      --instance-group-zone $REGION-b \
      --region $REGION
    
  5. Buat load balancer internal:

    gcloud compute forwarding-rules create wsfc-sql \
      --load-balancing-scheme internal \
      --address $LOADBALANCER_ADDRESS \
      --ports 1433 \
      --network $VPC_NAME \
      --subnet $SUBNET_NAME \
      --region $REGION \
      --backend-service wsfc-backend
    

Menguji cluster failover

Penginstalan cluster failover telah selesai, tetapi Anda masih harus menguji apakah cluster berfungsi dengan benar.

Menyiapkan klien

Buat instance VM baru yang dapat Anda gunakan untuk terhubung dengan cluster failover:

  1. Kembali ke sesi Cloud Shell yang ada.
  2. Buat instance VM baru:

    gcloud compute instances create sqlclient \
      --zone $REGION-a \
      --machine-type n2-standard-2 \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2019-win-2022 \
      --image-project windows-sql-cloud \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd
    
  3. Pantau proses inisialisasi VM dengan melihat output port serialnya:

    gcloud compute instances tail-serial-port-output sqlclient
    

    Tunggu beberapa menit hingga Anda melihat output Instance setup finished, lalu tekan Ctrl+C. Pada tahap ini, instance VM siap digunakan.

  4. Buat nama pengguna dan sandi untuk instance VM.

  5. Hubungkan ke VM menggunakan Desktop Jarak Jauh dan login menggunakan nama pengguna dan sandi yang dibuat di langkah sebelumnya.

  6. Klik kanan tombol Start (atau tekan Win+X), lalu klik Windows PowerShell (Admin).

  7. Konfirmasi prompt elevasi dengan mengklik Ya.

  8. Gabungkan komputer ke domain Active Directory Anda:

    Add-Computer -Domain DOMAIN
    

    Ganti DOMAIN dengan nama DNS domain Active Directory Anda.

  9. Mulai ulang komputer:

    Restart-Computer
    

    Tunggu sekitar 1 menit sampai proses mulai ulang selesai.

Menjalankan pengujian

Gunakan VM sqlclient untuk menguji apakah Anda dapat terhubung dengan cluster failover dan untuk memastikan bahwa failover berfungsi dengan benar:

  1. Hubungkan ke sqlclient menggunakan Desktop Jarak Jauh, lalu login menggunakan pengguna domain Anda.
  2. Klik kanan tombol Start (atau tekan Win+X), lalu klik Windows PowerShell.
  3. Hubungkan ke cluster SQL Server menggunakan TCP/IP dan nama DNS sql, lalu buat kueri tabel dm_os_cluster_nodes:

    & "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" `
       -S tcp:sql -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    

    Output-nya akan terlihat seperti ini:

    NodeName                       status      status_description is_current_owner
    ------------------------------ ----------- ------------------ ----------------
    NODE-1                                   0 up                                1
    NODE-2                                   0 up                                0
    
    (2 rows affected)
    

    Perhatikan bahwa node-1 adalah pemilik resource cluster failover SQL Server saat ini.

  4. Kembali ke Cloud Shell, lalu turunkan VM node-1 untuk menguji skenario failover.

    gcloud compute instances stop node-1 --zone $REGION-a
    
  5. Ulangi kueri:

    & "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" `
       -S tcp:sql -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    

    Output Anda sekarang akan terlihat seperti ini:

    NodeName                       status      status_description is_current_owner
    ------------------------------ ----------- ------------------ ----------------
    NODE-1                                   1 down                              0
    NODE-2                                   0 up                                1
    
    (2 rows affected)
    

    Perhatikan bahwa meskipun node-1 hilang, kueri berhasil, dan menunjukkan bahwa node-2 sekarang menjadi pemilik cluster failover saat ini.

Batasan

  • S2D hanya didukung untuk Windows Server 2016 dan yang lebih baru.
  • Dengan S2D, setiap disk hanya berisi tampilan sebagian dari keseluruhan data. Jadi, mengambil snapshot persistent disk tidak akan cukup untuk mencadangkan data Anda. Sebagai gantinya, gunakan pencadangan SQL native.

Pembersihan

Setelah menyelesaikan tutorial, Anda dapat membersihkan resource yang dibuat agar resource tersebut berhenti menggunakan kuota dan dikenai biaya. Bagian berikut menjelaskan cara menghapus atau menonaktifkan resource ini.

Menghapus project

Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.

Untuk menghapus project:

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Langkah berikutnya