Mengonfigurasi grup ketersediaan AlwaysOn SQL Server dengan commit sinkron menggunakan nama jaringan terdistribusi


Grup ketersediaan Always On Microsoft SQL Server memungkinkan Anda mereplikasi database di beberapa instance SQL Server Enterprise.

Serupa dengan Instance Cluster Failover SQL Server, grup ketersediaan Always On menggunakan Windows Server Failover Clustering (WSFC) untuk menerapkan ketersediaan tinggi. Namun, kedua fitur tersebut berbeda dalam hal berikut:

Grup ketersediaan Always On Instance cluster failover
Cakupan failover Grup database Instance
Penyimpanan Tidak dibagikan Dibagikan

Untuk perbandingan yang lebih mendetail, lihat Perbandingan instance cluster failover dan grup ketersediaan.

Grup ketersediaan Always On mendukung beberapa mode ketersediaan. Tutorial ini menunjukkan cara men-deploy grup ketersediaan Always On dalam mode commit sinkron untuk mengimplementasikan ketersediaan tinggi untuk satu atau beberapa database.

Dalam penyiapan, Anda akan membuat tiga instance VM. Dua instance VM, node-1 dan node-2 berfungsi sebagai node cluster dan menjalankan SQL Server. Instance VM ketiga, witness, digunakan untuk mencapai kuorum dalam skenario failover. Tiga instance VM didistribusikan ke tiga zona dan berbagi subnet yang sama.

Saat menggunakan grup ketersediaan AlwaysOn SQL Server, sebuah database contoh, bookshelf, direplikasi secara sinkron di dua instance SQL Server.

Di lingkungan cluster Windows lokal, pengumuman Address Resolution Protocol (ARP) memicu failover alamat IP. Namun,Google Cloudmengabaikan pengumuman ARP. Oleh karena itu, Anda harus menerapkan salah satu dari dua opsi berikut: menggunakan load balancer internal dan nama jaringan terdistribusi (DNN).

Artikel ini mengasumsikan bahwa Anda telah men-deploy Active Directory di Google Cloud dan memiliki pengetahuan dasar tentang SQL Server, Active Directory, dan Compute Engine. Untuk informasi selengkapnya tentang Active Directory di Google Cloud, lihat bagian Sebelum memulai.

Saat menggunakan grup ketersediaan AlwaysOn SQL Server, sebuah database contoh, bookshelf, direplikasi secara sinkron di dua instance SQL Server. Pemroses nama jaringan terdistribusi (DNN) di depan cluster menyediakan satu endpoint untuk klien SQL Server.

Untuk informasi selengkapnya tentang DNN, lihat Mengonfigurasi pemroses DNN untuk grup ketersediaan.

Arsitektur

Diagram ini mencakup hal berikut:

  • Dua instance VM di region yang sama dan zona yang berbeda untuk cluster failover yang disebut node-1 dan node-2. Satu node menghosting replika utama database SQL Server, sedangkan node lainnya menghosting replika sekunder.
  • VM ketiga yang disebut witness berfungsi sebagai saksi berbagi file untuk memberikan suara penentu dan mencapai kuorum untuk failover.
  • Pemroses DNN di depan cluster menyediakan satu endpoint untuk klien SQL Server.

Tujuan

Biaya

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

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

Sebelum memulai

Untuk menyelesaikan tugas dalam tutorial ini, pastikan hal berikut:

  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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  6. Anda memiliki domain Active Directory dengan minimal satu pengontrol domain. Anda dapat membuat domain Active Directory 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.
  7. Anda memiliki 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. Untuk informasi selengkapnya tentang penyediaan akun pengguna Active Directory, lihat Penyediaan akun pengguna Active Directory
  8. Project Google Cloud dan Virtual Private Cloud (VPC) dengan konektivitas ke pengontrol domain Active Directory Anda.
  9. Subnet yang akan digunakan untuk instance VM Windows Server Failover Cluster.
Setelah menyelesaikan tutorial ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk informasi selengkapnya, lihat Pembersihan.

Menyiapkan project dan jaringan

Untuk men-deploy grup ketersediaan SQL Server Always On, Anda harus menyiapkan project Google Cloud dan VPC untuk deployment. Bagian berikut membahas cara melakukannya secara mendetail.

Mengonfigurasi project dan region

Untuk menyiapkan project Google Cloud guna men-deploy grup ketersediaan SQL Server Always On, 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
    

    Ganti kode berikut:

    • 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 yang ingin Anda deploy.

Membuat aturan firewall

Agar klien dapat terhubung ke SQL Server dan komunikasi antar-node cluster, Anda perlu membuat beberapa aturan firewall. Anda dapat menggunakan tag jaringan untuk menyederhanakan pembuatan aturan firewall ini, sebagai berikut:

  • Kedua node cluster dianotasi dengan tag wsfc-node.
  • Semua server (termasuk witness) dianotasi dengan tag wsfc.

Untuk membuat aturan firewall yang menggunakan tag jaringan ini, gunakan langkah-langkah berikut:

  1. Kembali ke sesi Cloud Shell yang ada.
  2. Buat aturan firewall untuk mengizinkan traffic antar-node cluster.

    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
    

Membuat instance VM

Buat dan deploy dua instance VM untuk cluster failover. Sewaktu-waktu, salah satu VM ini akan menghosting replika utama database SQL Server, sedangkan node lainnya menghosting replika sekunder. Kedua instance VM tersebut harus:

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

Untuk memberikan suara penentu setelah hasil imbang dan mencapai kuorum untuk skenario failover, deploy VM ketiga yang berfungsi sebagai saksi fitur berbagi file menggunakan langkah-langkah berikut:

  1. Kembali ke sesi Cloud Shell yang ada.
  2. Buat skrip khusus untuk node WSFC. Skrip ini menginstal fitur Windows yang diperlukan dan 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 WSFC 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. Buat instance VM. Pada dua VM yang berfungsi sebagai node cluster, pasang disk data tambahan dan aktifkan Cluster Failover Windows Server dengan menetapkan kunci metadata enable-wsfc ke true:

    REGION=$(gcloud config get-value compute/region)
    ZONE1=ZONE1
    ZONE2=ZONE2
    ZONE3=ZONE3
    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 e2-medium \
      --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"
    

    Ganti ZONE1, ZONE2, ZONE3 berdasarkan zona yang Anda gunakan.

  4. Untuk menggabungkan tiga instance VM ke Active Directory, lakukan hal berikut untuk masing-masing dari tiga 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.

    7. Masukkan kredensial akun yang memiliki izin untuk bergabung dengan VM ke domain

      Tunggu hingga VM dimulai ulang. Sekarang Anda telah menggabungkan instance VM ke Active Directory.

Men-deploy cluster failover

Sekarang Anda dapat menggunakan instance VM untuk men-deploy Windows Server Failover Cluster dan SQL Server. Bagian berikut membahas cara melakukannya secara mendetail.

Mempersiapkan SQL Server

Buat akun pengguna baru di Active Directory untuk SQL Server menggunakan langkah-langkah berikut.

  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 akun pengguna domain untuk server SQL dan agen SQL, lalu tetapkan sandi:

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

Untuk mengonfigurasi SQL Server, lakukan langkah-langkah berikut pada node-1 dan node-2, gunakan langkah-langkah berikut:

  1. Buka SQL Server Configuration Manager.
  2. Di panel navigasi, pilih SQL Server Services.
  3. Di daftar layanan, klik kanan SQL Server (MSSQLSERVER) lalu pilih Properties.
  4. Di bagian Log on as, ubah akun sebagai berikut:

    • Nama akun: DOMAIN\sql_server dengan DOMAIN adalah nama NetBIOS domain Active Directory Anda.
    • Sandi: Masukkan sandi yang Anda pilih sebelumnya.
  5. Klik OK.

  6. Saat diminta untuk memulai ulang SQL Server, pilih Yes.

SQL Server sekarang berjalan dengan akun pengguna domain.

Membuat fitur berbagi file

Buat dua file yang dibagikan di instance VM witness sehingga dapat menyimpan cadangan SQL Server dan bertindak sebagai saksi berbagi file:

  1. Hubungkan ke witness dengan 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 file saksi yang dibagikan dan beri diri Anda serta dua node cluster akses ke berbagi file tersebut.

    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$
    
  5. Buat file share lain untuk menyimpan cadangan dan memberikan akses penuh ke SQL Server:

    New-Item "C:\Backup" –type directory
    New-SmbShare `
      -Name Backup `
      -Path "C:\Backup" `
      -Description "SQL Backup" `
      -FullAccess  $env:USERDOMAIN\sql_server
    

Membuat cluster failover

Untuk membuat cluster failover, gunakan langkah-langkah berikut:

  1. Kembali ke sesi Desktop Jarak Jauh di node-1.
  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 sql-cluster `
      -Node node-1,node-2 `
      -NoStorage `
      -ManagementPointNetworkType Distributed
    
  5. Kembali ke sesi PowerShell di witness, lalu berikan izin mengakses fitur berbagi file kepada objek komputer virtual cluster tersebut.

    icacls C:\QWitness\ /grant 'sql-cluster$:(OI)(CI)(M)'
    Grant-SmbShareAccess `
      -Name QWitness `
      -AccountName 'sql-cluster$' `
      -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 cluster Windows ke grup Akun Penggabungan Domain Layanan Cloud agar dapat menggabungkan komputer ke domain.

    Add-ADGroupMember `
      -Identity "Cloud Service Domain Join Accounts" `
      -Members sql-cluster$
    
  9. Aktifkan grup ketersediaan Always On di kedua node.

    Enable-SqlAlwaysOn -ServerInstance node-1 -Force
    Enable-SqlAlwaysOn -ServerInstance node-2 -Force
    

Membuat grup ketersediaan

Sekarang Anda membuat contoh database bookshelf, menyertakannya dalam grup ketersediaan baru bernama bookshelf-ag, dan mengonfigurasi ketersediaan tinggi.

Membuat database

Membuat database baru. Di dalam tutorial ini, database tidak perlu berisi data apa pun.

  1. Kembali ke sesi Desktop Jarak Jauh di node-1.
  2. Buka SQL Server Management Studio.
  3. Pada dialog Connect to server, pastikan nama server disetel ke node-1 dan pilih Connect.
  4. Di menu, pilih File > New > Query with current connection.
  5. Tempel skrip SQL berikut ke dalam editor:

    -- Create a sample database
    CREATE DATABASE bookshelf ON PRIMARY (
      NAME = 'bookshelf',
      FILENAME='d:\Data\bookshelf.mdf',
      SIZE = 256MB,
      MAXSIZE = UNLIMITED,
      FILEGROWTH = 256MB)
    LOG ON (
      NAME = 'bookshelf_log',
      FILENAME='d:\Logs\bookshelf.ldf',
      SIZE = 256MB,
      MAXSIZE = UNLIMITED,
      FILEGROWTH = 256MB)
    GO
    
    USE [bookshelf]
    SET ANSI_NULLS ON
    SET QUOTED_IDENTIFIER ON
    GO
    
    -- Create sample table
    CREATE TABLE [dbo].[Books] (
      [Id] [bigint] IDENTITY(1,1) NOT NULL,
      [Title] [nvarchar](max) NOT NULL,
      [Author] [nvarchar](max) NULL,
      [PublishedDate] [datetime] NULL,
      [ImageUrl] [nvarchar](max) NULL,
      [Description] [nvarchar](max) NULL,
      [CreatedById] [nvarchar](max) NULL,
      CONSTRAINT [PK_dbo.Books] PRIMARY KEY CLUSTERED ([Id] ASC) WITH (
        PAD_INDEX = OFF,
        STATISTICS_NORECOMPUTE = OFF,
        IGNORE_DUP_KEY = OFF,
        ALLOW_ROW_LOCKS = ON,
        ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    GO
    
    -- Create a backup
    EXEC dbo.sp_changedbowner @loginame = 'sa', @map = false;
      ALTER DATABASE [bookshelf] SET RECOVERY FULL;
      GO
      BACKUP DATABASE bookshelf to disk = '\\witness\Backup\bookshelf.bak' WITH INIT
    GO
    

    Skrip ini membuat database baru dengan satu tabel dan melakukan pencadangan awal ke witness.

  6. Pilih Execute untuk menjalankan skrip SQL.

Mengonfigurasi ketersediaan tinggi

Sekarang Anda dapat mengonfigurasi ketersediaan tinggi untuk grup ketersediaan menggunakan T-SQL atau Server Management Studio.

Menggunakan T-SQL

Untuk mengonfigurasi ketersediaan tinggi untuk grup ketersediaan menggunakan T-SQL, gunakan langkah-langkah berikut:

  1. Hubungkan ke node-1, lalu jalankan skrip berikut untuk membuat grup ketersediaan bookshelf-ag.

    CREATE LOGIN [NET_DOMAIN\sql_server] FROM WINDOWS;
    GO
    
    USE [bookshelf];
    CREATE USER [NET_DOMAIN\sql_server] FOR LOGIN [NET_DOMAIN\sql_server];
    GO
    
    USE [master];
    CREATE ENDPOINT bookshelf_endpoint
      STATE=STARTED
      AS TCP (LISTENER_PORT=5022)
      FOR DATABASE_MIRRORING (ROLE=ALL);
    GO
    
    GRANT CONNECT ON ENDPOINT::[bookshelf_endpoint] TO [NET_DOMAIN\sql_server]
    GO
    
  2. Hubungkan ke node-2 dan jalankan skrip berikut.

    CREATE LOGIN [NET_DOMAIN\sql_server] FROM WINDOWS;
    GO
    
    CREATE ENDPOINT bookshelf_endpoint
      STATE=STARTED
      AS TCP (LISTENER_PORT=5022)
      FOR DATABASE_MIRRORING (ROLE=ALL);
    GO
    
    GRANT CONNECT ON ENDPOINT::[bookshelf_endpoint] TO [NET_DOMAIN\sql_server]
    GO
    
  3. Di node-1, lalu jalankan skrip berikut untuk membuat grup ketersediaan bookshelf-ag.

    USE master;
    GO
    
    CREATE AVAILABILITY GROUP [bookshelf-ag]
    WITH (AUTOMATED_BACKUP_PREFERENCE = SECONDARY,
    CLUSTER_TYPE = WSFC,
    DB_FAILOVER = ON
    )
    FOR DATABASE [bookshelf]
    REPLICA ON
      N'node-1' WITH (
          ENDPOINT_URL = 'TCP://node-1:5022',
          AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
          FAILOVER_MODE = AUTOMATIC,
          BACKUP_PRIORITY = 50,
          SEEDING_MODE = AUTOMATIC,
          SECONDARY_ROLE(ALLOW_CONNECTIONS = NO)
      ),
      N'node-2' WITH (
          ENDPOINT_URL = 'TCP://node-2:5022',
          AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
          FAILOVER_MODE = AUTOMATIC,
          BACKUP_PRIORITY = 50,
          SEEDING_MODE = AUTOMATIC,
          SECONDARY_ROLE(ALLOW_CONNECTIONS = NO)
      );
    GO
    
  4. Hubungkan ke node-2, lalu jalankan skrip berikut untuk bergabung dengan replika sekunder ke grup ketersediaan dan mengaktifkan seeding otomatis.

    USE master;
    GO
    
    ALTER AVAILABILITY GROUP [bookshelf-ag] JOIN;
    ALTER AVAILABILITY GROUP [bookshelf-ag] GRANT CREATE ANY DATABASE;
    
    
  5. Periksa status grup ketersediaan.

    SELECT * FROM sys.dm_hadr_availability_group_states;
    GO
    

    Anda akan melihat synchronization_health_desc sebagai HEALTHY.

Menggunakan SQL Server Management Studio

Untuk mengonfigurasi ketersediaan tinggi untuk grup ketersediaan menggunakan SQL Server Management Studio, gunakan langkah-langkah berikut:

  1. Di jendela Object Explorer, klik kanan Always On High Availability, lalu pilih New Availability Group Wizard.
  2. Di halaman Specify Options, tetapkan nama grup ketersediaan ke bookshelf-ag, lalu pilih Next.
  3. Di halaman Select Databases, pilih database bookshelf, lalu pilih Next.
  4. Di halaman Specify Replicas, pilih tab Replicas.

    1. Pilih Add replication.
    2. Pada dialog Connect to server, masukkan nama server node-2 dan pilih Connect.

      Daftar replika ketersediaan kini berisi instance SQL Server, node-1 dan node-2.

    3. Tetapkan Availability mode ke Synchronous commit untuk kedua instance.

    4. Tetapkan Automatic failover ke Enabled untuk kedua instance.

    5. Pilih Next.

  5. Di halaman Select Data Synchronization, pilih Automatic Seeding.

  6. Di halaman Validation, pastikan semua pemeriksaan berhasil. Anda dapat mengabaikan pemeriksaan pemroses grup ketersediaan.

  7. Di halaman Summary, pilih Finish.

  8. Di halaman Results, pilih Close.

Mengonfigurasi pemroses DNN untuk grup ketersediaan

Pemroses DNN berfungsi sebagai satu endpoint untuk klien SQL Server. Untuk mengonfigurasi pemroses DNN, gunakan langkah-langkah berikut:

  1. Kembali ke sesi PowerShell di node-1.
  2. Jalankan skrip berikut untuk membuat pemroses DNN.

      $Ag='bookshelf-ag'
      $Port='DNN_PORT'
      $Dns='DNN_NAME'
    
      # create the DNN resource with the port as the resource name
      Add-ClusterResource -Name $Port -ResourceType "Distributed Network Name" -Group $Ag
    
      # set the DNS name of the DNN resource
      Get-ClusterResource -Name $Port | Set-ClusterParameter -Name DnsName -Value $Dns
    
      # start the DNN resource
      Start-ClusterResource -Name $Port
    
      # add the Dependency from availability group resource to the DNN resource
      Set-ClusterResourceDependency -Resource $Ag -Dependency "[$Port]"
    
      # restart the availability group resource
      Stop-ClusterResource -Name $Ag
      Start-ClusterResource -Name $Ag
    

    Ganti DNN_PORT dengan port pemroses DNN. Port pemroses DNN harus dikonfigurasi dengan port unik. Untuk informasi selengkapnya, lihat Pertimbangan port.

    Ganti DNN_NAME dengan nama pemroses DNN.

  3. Buat aturan firewall untuk port pemroses DNN di node-1 dan node-2.

      netsh advfirewall firewall add rule name="Allow DNN listener" dir=in action=allow protocol=TCP localport=DNN_PORT
    

Menguji failover

Sekarang Anda siap untuk menguji apakah failover berfungsi seperti yang diharapkan:

  1. Kembali ke sesi PowerShell di witness.
  2. Jalankan skrip berikut.

    while ($True){
      $Conn = New-Object System.Data.SqlClient.SqlConnection
      $Conn.ConnectionString = "Server=DNN_NAME,DNN_PORT;Integrated Security=true;Initial Catalog=master"
      $Conn.Open()
    
      $Cmd = New-Object System.Data.SqlClient.SqlCommand
      $Cmd.Connection = $Conn
      $Cmd.CommandText = "SELECT SERVERPROPERTY('ServerName')"
    
      $Adapter = New-Object System.Data.SqlClient.SqlDataAdapter $Cmd
      $Data = New-Object System.Data.DataSet
      $Adapter.Fill($Data) | Out-Null
      $Data.Tables[0] + (Get-Date -Format "MM/dd/yyyy HH:mm:ss")
    
      Start-Sleep -Seconds 2
    }
    

    Ganti DNN_NAME dengan nama pemroses DNN dan DNN_PORT dengan port pemroses DNN.

    Setiap 2 detik, skrip akan terhubung ke SQL Server menggunakan pemroses grup ketersediaan, dan mengkueri nama server.

    Biarkan skrip berjalan.

  3. Kembali ke sesi Desktop Jarak Jauh di node-1 untuk memicu failover.

    1. Di SQL Server Management Studio, buka Always On High Availability > Availability Groups > bookshelf-ag (Primary), lalu klik kanan pada node.
    2. Pilih Failover.
    3. Pada Select new primary replica pastikan bahwanode-2 dipilih sebagai replika utama baru dan kolom Failover readiness menunjukkan No data loss. Lalu pilih Next.
    4. Di halaman Connect to replica, pilih Connect.
    5. Pada dialog Connect to server, verifikasi bahwa nama server adalah node-2, lalu klik Connect.
    6. Pilih Next, lalu Finish.
    7. Di halaman Results, verifikasi bahwa failover berhasil.
  4. Kembali ke sesi PowerShell di witness.

  5. Amati output skrip yang berjalan dan perhatikan bahwa nama server berubah dari node-1 menjadi node-2 sebagai akibat dari failover.

  6. Hentikan skrip dengan menekan Ctrl+C.

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. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Langkah berikutnya