Grup ketersediaan AlwaysOn (AG) Microsoft SQL Server memungkinkan Anda mereplikasi database di beberapa instance SQL Server Enterprise.
Serupa dengan Instance Cluster Failover SQL Server, grup ketersediaan AlwaysOn menggunakan Windows Server Failover Clustering (WSFC) untuk menerapkan ketersediaan tinggi. Namun, kedua fitur tersebut berbeda dalam beberapa hal, di antaranya:
Grup ketersediaan AlwaysOn | Instance cluster failover | |
---|---|---|
Cakupan failover | Grup database | Instance |
Penyimpanan | Tidak dibagikan | VPC |
Untuk perbandingan yang lebih mendetail, lihat Perbandingan Instance Cluster Failover dan Grup Ketersediaan.
Grup ketersediaan AlwaysOn mendukung berbagai mode ketersediaan. Tutorial ini menunjukkan cara men-deploy grup ketersediaan AlwaysOn 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 WSFC 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.
Dengan menggunakan grup ketersediaan AlwaysOn SQL Server, database contoh,
bookshelf
, direplikasi secara sinkron di dua instance SQL Server.
Di lingkungan lokal, Anda dapat mengizinkan WSFC melakukan pengumuman ARP jika terjadi failover untuk memberi tahu peralatan jaringan tentang perubahan alamat IP. Namun, Google Cloud mengabaikan pengumuman ARP. Oleh karena itu, Anda harus menerapkan salah satu dari dua opsi berikut:
- "Load balancer internal. Untuk informasi selengkapnya, lihat Menjalankan Cluster Failover Windows Server.
- Nama jaringan terdistribusi (DNN). Untuk informasi selengkapnya, lihat Mengonfigurasi pemroses DNN untuk grup ketersediaan.
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.
Tujuan
- Men-deploy WSFC yang terdiri dari dua instance VM SQL Server, dan instance VM ketiga yang bertindak sebagai saksi berbagi file.
- Membuat grup ketersediaan dengan commit sinkron.
- Mengonfigurasi load balancer atau nama jaringan terdistribusi (DNN) untuk merutekan traffic ke grup ketersediaan Anda dengan SQL Server
- Verifikasi bahwa penyiapan berfungsi dengan menyimulasikan failover.
Biaya
Tutorial ini menggunakan komponen Google Cloud yang dapat ditagih, termasuk:
- Compute Engine
- Cloud Load Balancing (tidak diperlukan dengan konfigurasi DNN)
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:
- 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.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
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 guna men-deploy grup ketersediaan SQL Server AlwaysOn, lakukan hal berikut:
Di konsol Google Cloud, buka Cloud Shell dengan mengklik tombol Aktifkan Cloud Shell .
Lakukan inisialisasi variabel berikut:
VPC_NAME=
VPC_NAME
SUBNET_NAME=SUBNET_NAME
Dengan keterangan:
VPC_NAME
: nama VPC AndaSUBNET_NAME
: nama subnet Anda
Tetapkan project ID default Anda:
gcloud config set project
PROJECT_ID
Ganti
PROJECT_ID
dengan ID project Google Cloud Anda.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:
- Kembali ke sesi Cloud Shell yang ada.
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
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, salah satu VM ini akan menghosting replika utama database SQL Server, sedangkan node lainnya menghosting replika sekunder. Kedua instance VM tersebut harus:
- berada di region yang sama sehingga dapat diakses oleh Load Balancer Jaringan passthrough internal (tidak berlaku untuk DNN).
- telah menginstal WSFC dan SQL Server.
- telah mengaktifkan dukungan Compute Engine WSFC.
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, Anda men-deploy VM ketiga yang berfungsi sebagai saksi fitur berbagi file.
- Kembali ke sesi Cloud Shell yang ada.
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 # 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
Buat instance VM. Pada dua VM yang berfungsi sebagai node WSFC, pasang disk data tambahan dan aktifkan Cluster Failover Windows Server dengan menetapkan kunci metadata
enable-wsfc
ketrue
:REGION=$(gcloud config get-value compute/region) PD_SIZE=200 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-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 $REGION-b \ --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 $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"
Untuk menggabungkan 3 instance VM ke Active Directory, lakukan hal berikut untuk masing-masing dari 3 instance VM:
Pantau proses inisialisasi VM dengan melihat output port serialnya:
gcloud compute instances tail-serial-port-output
NAME
Ganti
NAME
dengan nama instance VM.Tunggu sekitar 3 menit hingga Anda melihat output
Instance setup finished
, lalu tekan Ctrl+C. Pada tahap ini, instance VM siap digunakan.Buat nama pengguna dan sandi untuk instance VM.
Hubungkan ke VM menggunakan Desktop Jarak Jauh dan login menggunakan nama pengguna dan sandi yang dibuat di langkah sebelumnya.
Klik kanan tombol Start (atau tekan Win+X), lalu klik Windows PowerShell (Admin).
Konfirmasi prompt elevasi dengan mengklik Yes.
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 VPC Anda. Satu alamat IP digunakan sebagai alamat IP cluster WSFC, dan alamat lainnya digunakan oleh load balancer internal.
Cadangkan alamat IP statis 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.
Cadangkan IP statis lain 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.
Project dan VPC Anda kini siap untuk men-deploy WSFC dan SQL Server.
Men-deploy cluster failover
Sekarang Anda menggunakan instance VM untuk men-deploy WSFC dan SQL Server.
Mempersiapkan SQL Server
Buat akun pengguna baru di Active Directory untuk SQL Server:
- Hubungkan ke
node-1
menggunakan Desktop Jarak Jauh. Login dengan akun pengguna domain Anda. - Klik kanan tombol Start (atau tekan Win+X), lalu klik Windows PowerShell (Admin).
- Konfirmasi prompt elevasi dengan mengklik Yes.
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
:
Klik kanan tombol Start (atau tekan Win+X), lalu klik Windows PowerShell (Admin).
Ganti nama instance server SQL sehingga namanya cocok dengan nama host:
$OLD_NAME = Invoke-Sqlcmd -Query " select @@SERVERNAME; GO" | ConvertTo-Csv | SELECT -Skip 2 $OLD_NAME = $OLD_NAME.Replace('"', '') Invoke-Sqlcmd -Query " sp_dropserver '$OLD_NAME'; GO sp_addserver '$env:computername', local; GO" Restart-Service -Name MSSQLSERVER
Buka SQL Server Configuration Manager.
Di panel navigasi, pilih SQL Server Services
Di daftar layanan, klik kanan SQL Server (MSSQLSERVER) lalu pilih Properties.
Di bagian Log on as, ubah akun:
- Account name:
DOMAIN\sql_server
denganDOMAIN
adalah nama NetBIOS domain Active Directory Anda. - Password: Masukkan sandi yang Anda pilih sebelumnya.
- Account name:
Klik OK.
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 witness
sehingga instance VM dapat menyimpan cadangan SQL Server dan bertindak sebagai saksi berbagi file:
- Hubungkan ke
witness
menggunakan Desktop Jarak Jauh. Login dengan akun pengguna domain Anda. - Klik kanan tombol Start (atau tekan Win+X), lalu klik Windows PowerShell (Admin).
- Konfirmasi prompt elevasi dengan mengklik Yes.
Buat file saksi yang dibagikan dan beri diri Anda dan dua node WSFC 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$
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
Men-deploy WSFC
Sekarang Anda siap membuat cluster failover:
- Kembali ke sesi Desktop Jarak Jauh di
node-1
. - Klik kanan tombol Start (atau tekan Win+X), lalu klik Windows PowerShell (Admin).
- Konfirmasi prompt elevasi dengan mengklik Yes.
Membuat cluster baru:
- Untuk konfigurasi load balancer
New-Cluster ` -Name sql-cluster ` -Node node-1,node-2 ` -NoStorage ` -StaticAddress
CLUSTER_ADDRESS
Ganti
CLUSTER_ADDRESS
dengan alamat IP cluster yang Anda buat sebelumnya.- Untuk konfigurasi DNN
New-Cluster ` -Name sql-cluster ` -Node node-1,node-2 ` -NoStorage ` -ManagementPointNetworkType Distributed
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
Kembali ke sesi PowerShell di
node-1
, lalu konfigurasikan cluster untuk menggunakan fitur berbagi file diwitness
sebagai kuorum cluster:Set-ClusterQuorum -FileShareWitness \\witness\QWitness
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
.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:
Add-ADGroupMember ` -Identity "Cloud Service Domain Join Accounts" ` -Members sql-cluster$
Aktifkan grup ketersediaan AlwaysOn 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.
- Kembali ke sesi Desktop Jarak Jauh di
node-1
. - Buka SQL Server Management Studio.
- Pada dialog Connect to server, pastikan nama server disetel ke
NODE-1
dan pilih Connect. - Di menu, pilih File > New > Query with current connection.
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
.Pilih Execute untuk menjalankan skrip SQL.
Mengonfigurasi ketersediaan tinggi
- Di jendela Object Explorer, klik kanan AlwaysOn High Availability, lalu pilih New Availability Group Wizard.
- Di halaman Specify Options, tetapkan nama grup ketersediaan ke
bookshelf-ag
, lalu pilih Next. - Di halaman Select Databases, pilih database
bookshelf
, lalu pilih Next. Di halaman Specify Replicas, pilih tab Replicas:
- Pilih Add replication.
Pada dialog Connect to server, masukkan nama server
node-2
dan pilih Connect.Daftar replika ketersediaan kini berisi instance SQL Server,
node-1
dannode-2
.Tetapkan Availability mode ke Synchronous commit untuk kedua instance.
Tetapkan Automatic failover ke Enabled untuk kedua instance.
Pilih tab Listener **
- Pilih Create an availability group listener
Masukkan setelan berikut:
- Listener DNS name:
bookshelf
- Port:
1433
- Network mode: IP Statis
- Listener DNS name:
Pilih Add dan masukkan alamat IP load balancer yang Anda buat sebelumnya. Lalu, pilih OK.
Pilih Next.
Di halaman Select Data Synchronization, pilih Automatic Seeding.
Di halaman Validation, pastikan semua pemeriksaan berhasil.
Di halaman Summary, pilih Finish.
Di halaman Results, pilih Close.
Mengonfigurasi health check
Sebagai langkah terakhir, konfigurasikan cluster untuk mengekspos endpoint health check yang dapat digunakan oleh load balancer internal:
- Kembali ke sesi PowerShell di
node-1
. Lakukan inisialisasi variabel dengan alamat IP load balancer.
$LoadBalancerIP = '
IP_ADDRESS
'Ganti
IP_ADDRESS
dengan alamat IP dari alamatwsfc
yang Anda cadangkan sebelumnya.Konfigurasikan Cluster Failover untuk merespons layanan health check:
$SqlIpAddress = Get-ClusterResource | Where-Object {$_.ResourceType -eq "IP Address"} | Where-Object {$_.Name.StartsWith("bookshelf")} $SqlIpAddress | Set-ClusterParameter -Multiple @{ 'Address'= $LoadBalancerIP; 'ProbePort'= 59997; 'SubnetMask'='255.255.255.255'; 'Network'= (Get-ClusterNetwork).Name; 'EnableDhcp'=0; }
Mulai ulang resource cluster:
$SqlIpAddress | Stop-ClusterResource $SqlIpAddress | Start-ClusterResource
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.
- Kembali ke sesi Cloud Shell yang ada.
Buat dua grup instance tidak terkelola, satu per zona, lalu tambahkan dua node ke grup:
REGION=$(gcloud config get-value compute/region) 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
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 sebagaiProbePort
untuk pemroses grup ketersediaan.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
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
Sekarang Anda dapat terhubung ke pemroses grup ketersediaan SQL Server menggunakan
load balancer internal dan nama DNS bookshelf
.
Untuk membuat beberapa grup ketersediaan pada satu cluster failover, Anda harus menggunakan load balancer terpisah dengan health check per grup ketersediaannya sendiri. Artinya, untuk setiap grup ketersediaan, Anda memerlukan:
Alamat IP internal yang dicadangkan (satu untuk setiap grup ketersediaan) yang akan digunakan untuk pemroses dan load balancer internal.
Load balancer terpisah (satu untuk setiap grup ketersediaan) dengan alamat IP-nya sendiri yang dicadangkan pada langkah sebelumnya.
Port pemeriksaan terpisah (seperti 59997, 59998, dan 59999 untuk setiap grup ketersediaan) dan aturan firewall untuk mengizinkan traffic pada port pemeriksaan tersebut.
Aturan health check terpisah untuk setiap grup ketersediaan yang menggunakan port pemeriksaan masing-masing.
Mengonfigurasi pemroses DNN untuk grup ketersediaan
Serupa dengan konfigurasi load balancing internal, pemroses DNN berfungsi sebagai satu endpoint untuk klien SQL Server.
- Kembali ke sesi PowerShell di
node-1
. 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]" #bounce the AG resource Stop-ClusterResource -Name $Ag Start-ClusterResource -Name $AgGanti
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.Buat aturan firewall untuk port pemroses DNN di
node-1
dannode-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:
- Kembali ke sesi PowerShell di
witness
. Jalankan skrip berikut:
while ($True){ $Conn = New-Object System.Data.SqlClient.SqlConnection $Conn.ConnectionString = "Server=
LISTENER
;Integrated Security=true;Initial Catalog=master" $Conn.Open() $Cmd = New-Object System.Data.SqlClient.SqlCommand $Cmd.Connection = $Conn $Cmd.CommandText = "SELECT @@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
LISTENER
dengan nama DNS pemroses atau pemroses DNN, dan port grup ketersediaan.Setiap 2 detik, skrip akan terhubung ke SQL Server menggunakan pemroses grup ketersediaan atau pemroses DNN, dan mengkueri nama server.
Biarkan skrip berjalan.
Kembali ke sesi Desktop Jarak Jauh di
node-1
untuk memicu failover:- Di SQL Server Management Studio, buka AlwaysOn High Availability > Availability Groups > bookshelf-ag (Primary), lalu klik kanan pada node.
- Pilih Failover.
- Pada Select new primary replica pastikan bahwa
node-2
dipilih sebagai replika utama baru dan kolom Failover readiness menunjukkanNo data loss
. Lalu pilih Next. - Di halaman Connect to replica, pilih Connect.
- Pada dialog Connect to server, verifikasi bahwa nama server adalah
node-2
, lalu klik Connect. - Pilih Next, lalu Finish.
- Di halaman Results, verifikasi bahwa failover berhasil.
Kembali ke sesi PowerShell di
witness
.Amati output skrip yang berjalan dan perhatikan bahwa nama server berubah dari
node-1
menjadinode-2
sebagai akibat dari failover.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:
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.