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. Load balancer internal memastikan traffic diarahkan ke node aktif.
Untuk informasi selengkapnya tentang Windows Server Failover Clustering dengan load balancer internal, lihat cluster failover.
Diagram ini mencakup hal berikut:
- Dua instance VM di region yang sama dan zona yang berbeda untuk cluster
failover yang disebut
node-1
dannode-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. - Load balancer internal di depan cluster menyediakan satu endpoint untuk klien SQL Server dan menggunakan health check untuk memastikan bahwa traffic diarahkan ke node aktif.
Tujuan
Tutorial ini bertujuan untuk mencapai tujuan berikut:
- 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
- Memverifikasi bahwa penyiapan berfungsi dengan menyimulasikan failover
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:
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- 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.
-
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 - Project Google Cloud dan Virtual Private Cloud (VPC) dengan konektivitas ke pengontrol domain Active Directory Anda.
- Subnet yang akan digunakan untuk instance VM Windows Server Failover Cluster.
Menyiapkan project dan jaringan
Untuk men-deploy grup ketersediaan SQL Server Always On, Anda harus menyiapkan project dan VPCGoogle Cloud untuk deployment. Bagian berikut membahas cara melakukannya secara mendetail.
Mengonfigurasi project dan region
Untuk menyiapkan project Google Cloud Anda untuk deployment grup ketersediaan SQL Server Always On, 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
Ganti kode berikut:
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 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 tagwsfc
.
Untuk membuat aturan firewall yang menggunakan tag jaringan ini, gunakan langkah-langkah berikut:
- Kembali ke sesi Cloud Shell yang ada.
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:
- berada di region yang sama sehingga dapat diakses oleh Load Balancer Jaringan passthrough internal.
- telah menginstal Windows Server Failover Cluster 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, deploy VM ketiga yang berfungsi sebagai saksi fitur berbagi file menggunakan langkah-langkah berikut:
- Kembali ke sesi Cloud Shell yang ada.
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
Buat instance VM. Pada dua VM yang berfungsi sebagai node cluster, pasang disk data tambahan dan aktifkan Windows Server Failover Clustering dengan menetapkan kunci metadata
enable-wsfc
ketrue
: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.
Untuk menggabungkan tiga instance VM ke Active Directory, lakukan hal berikut untuk masing-masing dari tiga 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 beberapa 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.Masukkan kredensial akun yang memiliki izin untuk bergabung dengan VM ke domain
Tunggu hingga VM dimulai ulang. Anda kini telah menggabungkan instance VM ke Active Directory.
Mencadangkan alamat IP statis
Anda sekarang mencadangkan dua alamat IP statis di VPC Anda. Satu alamat IP digunakan sebagai alamat IP cluster WSFC default, dan alamat lainnya berfungsi sebagai IP statis untuk pemroses grup ketersediaan Server SQL.
Di cluster WSFC, alamat IP cluster terutama berfungsi untuk tujuan administratif dan mengakses resource cluster. Alamat IP virtual ini ditetapkan ke cluster itu sendiri, sehingga administrator dapat mengelola cluster dan melakukan tugas seperti mengonfigurasi setelan cluster, memantau kondisi node, dan mengelola proses failover.
Dalam konteks grup ketersediaan SQL Server, pemroses adalah nama jaringan virtual (VNN) dan alamat IP yang memungkinkan klien terhubung ke grup ketersediaan tanpa perlu mengetahui server tertentu yang merupakan node utama.
Load balancer internal memerlukan alamat IP internal untuk merutekan traffic internal secara efisien dan mendukung ketersediaan tinggi serta load balancing dalam konteks cluster WSFC. Load balancer internal memastikan bahwa permintaan selalu diarahkan ke replika utama cluster saat ini. Selama peristiwa failover, load balancer mendeteksi perubahan pada replika utama dan mengalihkan koneksi klien ke replika utama baru tanpa memerlukan intervensi manual, sehingga meminimalkan periode nonaktif dan memastikan ketersediaan layanan database secara berkelanjutan.
Dalam konteks WSFC dengan grup ketersediaan SQL Server Always On, alamat IP statis internal yang dicadangkan untuk alamat IP cluster WSFC default dan pemroses grup ketersediaan juga digunakan oleh load balancer internal terkait.
Untuk mencadangkan dua alamat IP statis di VPC, gunakan langkah-langkah berikut.
gcloud compute addresses create wsfc-cluster-ip \ --subnet $SUBNET_NAME \ --region $(gcloud config get-value compute/region) && \ CLUSTER_IP=$(gcloud compute addresses describe wsfc-cluster-ip \ --region $(gcloud config get-value compute/region) \ --format=value\(address\)) && \ echo "cluster IP: $CLUSTER_IP"
Ganti alamat IP cluster di variabel
CLUSTER_IP
, Anda akan memerlukannya nanti untuk menentukannya sebagai IP cluster:CLUSTER_IP=
CLUSTER_IP
Cadangkan IP statis lain untuk pemroses grup ketersediaan dan ambil alamatnya dalam variabel lingkungan baru bernama
LISTENER_IP
.gcloud compute addresses create wsfc-listener-ip \ --subnet $SUBNET_NAME \ --region $(gcloud config get-value compute/region) LISTENER_IP=$(gcloud compute addresses describe wsfc-listener-ip \ --region $(gcloud config get-value compute/region) \ --format=value\(address\)) && \ echo "Listener IP: $LISTENER_IP"
Ganti alamat IP yang dicadangkan load balancer sebagai variabel
LISTENER_IP
. Anda memerlukannya nanti untuk mengonfigurasi grup ketersediaan.LISTENER_IP=
LISTENER_IP
Project dan VPC Anda kini siap untuk men-deploy Cluster Failover Windows Server dan SQL Server.
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.
- 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
, gunakan langkah-langkah berikut:
- 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 sebagai berikut:
- Nama akun:
DOMAIN\sql_server
denganDOMAIN
adalah nama NetBIOS domain Active Directory Anda. - Sandi: Masukkan sandi yang Anda pilih sebelumnya.
- Nama akun:
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 instance VM witness
sehingga dapat
menyimpan cadangan SQL Server dan bertindak sebagai saksi berbagi file:
- Hubungkan ke
witness
dengan 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 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$
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:
- 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.
Buat cluster baru.
New-Cluster ` -Name sql-cluster ` -Node node-1,node-2 ` -NoStorage ` -StaticAddress
CLUSTER_IP
Ganti
CLUSTER_IP
dengan alamat IP cluster yang Anda buat sebelumnya.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 peringatan berikut 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 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$
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.
- 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
Sekarang Anda dapat mengonfigurasi ketersediaan tinggi untuk grup ketersediaan menggunakan T-SQL atau SQL Server Management Studio.
Menggunakan T-SQL
Untuk mengonfigurasi ketersediaan tinggi untuk grup ketersediaan menggunakan T-SQL, gunakan langkah-langkah berikut:
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] GOHubungkan 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] GODi
node-1
, lalu jalankan skrip berikut untuk membuat grup ketersediaanbookshelf-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
Dalam skrip berikut, ganti
LISTENER_IP
dengan alamat IP yang Anda cadangkan sebelumnya untuk load balancer internal dan jalankan.USE master; GO ALTER AVAILABILITY GROUP [bookshelf-ag] ADD LISTENER N'bookshelf' ( WITH IP ( (N'
', N'255.255.255.0') ), PORT = 1433); GOLISTENER_IP
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;
Periksa status grup ketersediaan.
SELECT * FROM sys.dm_hadr_availability_group_states; GO
Anda akan melihat
synchronization_health_desc
sebagaiHEALTHY
Menggunakan SQL Server Management Studio
Untuk mengonfigurasi ketersediaan tinggi untuk grup ketersediaan menggunakan SQL Server Management Studio, gunakan langkah-langkah berikut:
- Di jendela Object Explorer, klik kanan Always On 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 pemroses (
) yang Anda cadangkan sebelumnya untuk load balancer internal. Kemudian, pilih OK.LISTENER_IP
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.
Membuat load balancer dan health check internal
IP cluster mewakili satu endpoint untuk cluster failover Windows. Anda menggunakannya untuk tujuan administratif dan mengelola resource cluster. IP cluster selalu mengarah ke node host (atau utama) cluster. Anda men-deploy load balancer internal yang menggunakan health check yang memastikan traffic diarahkan ke node host cluster. Karena alat WSFC memerlukan beberapa protokol yang tersedia untuk penerusan (ICMP, UDP, dan TCP), sebaiknya deploy load balancer internal dengan beberapa protokol yang mendukung semua port.
Untuk men-deploy load balancer internal, gunakan langkah-langkah berikut:
- 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 $ZONE1 gcloud compute instance-groups unmanaged add-instances wsfc-group-1 --zone $ZONE1 \ --instances node-1 gcloud compute instance-groups unmanaged create wsfc-group-2 --zone $ZONE2 gcloud compute instance-groups unmanaged add-instances wsfc-group-2 --zone $ZONE2 \ --instances node-2
Buat health check untuk IP cluster yang dapat digunakan oleh load balancer untuk menentukan node aktif dari perspektif cluster Windows. Port default yang merespons health check agen tamu Compute Engine adalah
59998
. Health check memberikan alamat IP cluster dalam permintaan dan mengharapkan 1 sebagai respons yang ditampilkan dari node aktif.gcloud compute health-checks create tcp wsfc-healthcheck \ --request=$CLUSTER_IP \ --response=1 \ --check-interval="2s" \ --healthy-threshold=2 \ --unhealthy-threshold=2 \ --port=59998 \ --timeout="1s"
Buat layanan backend dan tambahkan dua grup instance yang ada.
gcloud compute backend-services create wsfc-backend \ --load-balancing-scheme internal \ --region $REGION \ --health-checks wsfc-healthcheck \ --protocol UNSPECIFIED gcloud compute backend-services add-backend wsfc-backend \ --instance-group wsfc-group-1 \ --instance-group-zone $ZONE1 \ --region $REGION gcloud compute backend-services add-backend wsfc-backend \ --instance-group wsfc-group-2 \ --instance-group-zone $ZONE2 \ --region $REGION
Buat load balancer internal yang terkait dengan IP cluster.
gcloud compute forwarding-rules create wsfc \ --load-balancing-scheme internal \ --address $CLUSTER_IP \ --ports ALL \ --network $VPC_NAME \ --subnet $SUBNET_NAME \ --region $REGION \ --ip-protocol L3_DEFAULT \ --backend-service wsfc-backend
Untuk menyediakan satu endpoint bagi klien SQL Server yang ingin terhubung ke database apa pun
dalam grup ketersediaan bookshelf
Anda, deploy load balancer internal
baru yang ditujukan untuk grup ketersediaan tersebut, gunakan langkah-langkah berikut:
Buat health check untuk pemroses grup ketersediaan yang dapat digunakan load balancer untuk menentukan node utama di grup ketersediaan SQL Server
bookshelf
.gcloud compute health-checks create tcp wsfc-bookshelf-healthcheck \ --request=$LISTENER_IP \ --response=1 \ --check-interval="2s" \ --healthy-threshold=1 \ --unhealthy-threshold=2 \ --port=59998 \ --timeout="1s"
Health check menggunakan port agen tamu Compute Engine yang sama, tetapi dalam permintaannya, health check memberikan alamat IP pemroses grup ketersediaan
bookshelf
.Buat layanan backend baru dan tambahkan dua grup instance.
gcloud compute backend-services create wsfc-bookshelf-backend \ --load-balancing-scheme internal \ --region $REGION \ --health-checks wsfc-bookshelf-healthcheck \ --protocol UNSPECIFIED gcloud compute backend-services add-backend wsfc-bookshelf-backend \ --instance-group wsfc-group-1 \ --instance-group-zone $ZONE1 \ --region $REGION gcloud compute backend-services add-backend wsfc-bookshelf-backend \ --instance-group wsfc-group-2 \ --instance-group-zone $ZONE2 \ --region $REGION
Buat load balancer internal yang terkait dengan pemroses grup ketersediaan
bookshelf-ag
SQL Server.gcloud compute forwarding-rules create wsfc-bookshelf \ --load-balancing-scheme internal \ --address $LISTENER_IP \ --ports ALL \ --network $VPC_NAME \ --subnet $SUBNET_NAME \ --region $REGION \ --ip-protocol L3_DEFAULT \ --backend-service wsfc-bookshelf-backend
Sekarang Anda dapat terhubung ke pemroses grup ketersediaan SQL Server menggunakan nama DNS
bookshelf
dan portnya yang ditentukan di pemroses grup ketersediaan bookshelf.
Load balancer internal mengarahkan traffic ke node utama grup ketersediaan bookshelf
.
Untuk membuat beberapa grup ketersediaan pada satu cluster failover, Anda harus menggunakan layanan backend terpisah dan load balancer terpisah dengan health check sendiri per grup ketersediaan.
Setiap grup ketersediaan mungkin memiliki node yang berbeda yang ditetapkan sebagai node utama, dan node tersebut mungkin berbeda dengan node host cluster Windows. Untuk beberapa grup ketersediaan, Anda memerlukan hal berikut:
Alamat IP statis yang dicadangkan untuk pemroses grup ketersediaan yang digunakan oleh load balancer internal. Cadangkan satu alamat untuk setiap grup ketersediaan.
Aturan health check terpisah untuk setiap grup ketersediaan. Permintaan health check memberikan alamat IP statis pemroses grup ketersediaan ( yang juga merupakan alamat IP yang dicadangkan pada langkah sebelumnya). Health check memeriksa respons
1
yang ditampilkan oleh agen GCE. Semua health check menggunakan port59998
.Layanan backend terpisah untuk setiap grup ketersediaan tempat Anda menambahkan dua grup instance komputasi yang ada. Layanan backend menggunakan health check yang ditentukan pada langkah sebelumnya.
Load balancer internal untuk setiap grup ketersediaan untuk layanan backend yang dibuat pada langkah sebelumnya. Load balancer dikaitkan dengan alamat IP statis pemroses grup ketersediaan.
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=tcp:bookshelf,1433;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 }
Dalam panduan ini, kita menggunakan nama DNS
bookshelf
dan nilai port1433
untuk pemroses grup ketersediaan dalam definisi servertcp:bookshelf,1433
.Setiap 2 detik, skrip akan terhubung ke SQL Server menggunakan pemroses grup ketersediaan, 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 Always On 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:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.