Tutorial ini menjelaskan cara men-deploy grup ketersediaan Always On Microsoft SQL Server pada instance virtual machine (VM) Compute Engine menggunakan penyimpanan blok NetApp Volumes Google Cloud dengan protokol Internet Small Computer System Interface (iSCSI). Menggunakan NetApp Volumes untuk penyimpanan SQL Server Anda memberikan akses ke layanan penyimpanan berperforma tinggi dan terkelola sepenuhnya dengan fitur pengelolaan data tingkat lanjut seperti snapshot dan cloning.
Tujuan
Tutorial ini memandu Anda melakukan tugas-tugas berikut:Biaya
Tutorial ini menggunakan komponen yang dapat ditagih berikut Google Cloud:Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.
Sebelum memulai
Sebelum memulai, pastikan Anda memiliki hal-hal berikut:
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Project Google Cloud dengan izin administratif untuk Compute Engine, Networking, Identity and Access Management, dan Cloud Storage.
- Jaringan VPC dengan subnet di region target Anda.
- Layanan Active Directory dan DNS yang dibuat dalam region.
- Pengguna Active Directory dengan izin untuk menggabungkan komputer ke domain dan mengakses VM menggunakan RDP.
- Pastikan aturan firewall VPC mengizinkan traffic antar-node untuk iSCSI (TCP 3260), WSFC (UDP/TCP 3343), SQL Server (TCP 1433), endpoint SQL Server AG (TCP 5022), SMB (TCP 445), dan RPC (TCP 135, TCP 49152-65535).
- Aktifkan NetApp Volumes API.
-
In the Google Cloud console, activate Cloud Shell.
Mengonfigurasi akun domain
Konfigurasi dua akun Active Directory untuk SQL Server:
- Akun penginstalan: Akun dengan hak istimewa administrator domain (misalnya, DOMAIN\DomainAdmin) untuk login ke VM dan mengonfigurasi cluster dan grup ketersediaan.
- Akun layanan: Akun (misalnya, DOMAIN\sqlsvc) untuk layanan SQL Server dan Layanan Agen SQL di kedua VM SQL Server.
Membuat VM Compute Engine untuk SQL Server
Buat dua instance Compute Engine (
sqlnode1dansqlnode2) yang menjalankan SQL Server 2022 Enterprise di Windows Server 2025:Di konsol Google Cloud , buka halaman Create an instance.
Untuk Name, masukkan
sqlnode1.Di bagian Machine configuration, pilih General Purpose, lalu lakukan hal berikut:
- Di daftar Series, pilih N4.
- Dalam daftar Machine type, pilih n4-highmem-8 (8vCPU, 64 GB memory).
Pilih Region dan Zone tempat Anda mengonfigurasi VPC.
Di bagian Boot disk, klik Change, lalu lakukan hal berikut:
- Di tab Public images, pilih SQL Server on Windows Server dari daftar Operating system.
- Dari daftar Version, pilih SQL Server 2022 Enterprise di Windows Server 2025 Datacenter.
- Pada daftar Boot disk type, pilih Hyperdisk Balanced.
- Tetapkan Size (GB) ke
50. - Untuk menyimpan konfigurasi boot disk, klik Select.
Luaskan bagian Advanced options, lalu luaskan Networking.
Untuk Antarmuka jaringan, pilih VPC dan Subnet untuk project Anda.
Di daftar Jenis Kartu Antarmuka Jaringan, pilih gVNIC.
Untuk Network Service Tier, pilih Premium.
Klik Create.
Ulangi langkah-langkah ini untuk membuat instance kedua bernama
sqlnode2.
Menggabungkan server ke domain dan bersiap untuk pengelompokan
Lakukan langkah-langkah berikut di
sqlnode1dansqlnode2:- Hubungkan ke VM menggunakan akun administrator lokal.
- Di Server Manager, pilih Local Server.
- Pilih link WORKGROUP.
- Di bagian Computer Name, pilih Change.
- Centang kotak Domain, masukkan nama domain Anda (misalnya
cvsdemo.internal), lalu klik OK. - Pada dialog Windows Security, masukkan kredensial untuk akun administrator domain Anda, lalu klik OK.
- Saat pesan selamat datang muncul untuk domain, selesaikan langkah-langkah berikut: a. Klik Oke. b. Klik Tutup, lalu pilih Mulai Ulang Sekarang.
- Setelah VM dimulai ulang, hubungkan ke VM menggunakan akun administrator domain Anda.
- Tambahkan akun
DOMAIN\sqlsvcke grup Administrator lokal di VM. Anda dapat menggunakan perintah PowerShell berikut:Add-LocalGroupMember -Group "Administrators" -Member "DOMAIN\sqlsvc"
Buka PowerShell sebagai administrator dan jalankan perintah berikut untuk menginstal fitur Windows yang diperlukan:
# Install Failover Clustering and tools Install-WindowsFeature Failover-Clustering, RSAT-Clustering-PowerShell, RSAT-Clustering-CmdInterface -IncludeAllSubFeature -IncludeManagementTools # Install and enable MPIO for iSCSI Install-WindowsFeature -Name Multipath-IO Enable-MSDSMAutomaticClaim -BusType "iSCSI" # Install .NET and other SQL prereqs Install-WindowsFeature NET-Framework-45-Core, NET-Framework-45-Features Install-WindowsFeature RSAT-AD-PowerShell
Untuk mendapatkan Nama yang Memenuhi Syarat iSCSI (IQN) untuk VM, jalankan
iscsicpl.exe, buka tab Configuration, lalu salin Initiator Name. Atau, jalankan perintah PowerShell berikut:Get-InitiatorPort | Select-Object NodeAddress
Catat IQN untuk
sqlnode1dansqlnode2. Anda akan memerlukannya di bagian berikutnya. Contoh:iqn.1991-05.com.microsoft:sqlnode1.cvsdemo.internal.
Membuat volume penyimpanan blok NetApp Volumes
Ikuti langkah-langkah berikut untuk membuat grup host, pool penyimpanan, dan volume iSCSI.
Membuat grup host
Grup host memastikan bahwa hanya host yang ditentukan (VM SQL Server Anda) yang dapat mengakses volume yang Anda buat.
Di Cloud Shell, buat grup host yang berisi IQN
sqlnode1dansqlnode2:gcloud netapp host-groups create HOST_GROUP_NAME
--location=LOCATION
--type=ISCSI_INITIATOR
--hosts=SQLNODE1_IQN,SQLNODE2_IQN
--os-type=WINDOWS
--description="SQL Server AG nodes"Ganti informasi berikut:
HOST_GROUP_NAME: Nama untuk grup host, misalnya,sql-ag-hosts.LOCATION: Region untuk grup host Anda, misalnya,us-west1.SQLNODE1_IQN: IQNsqlnode1.SQLNODE2_IQN: IQNsqlnode2.
Menyediakan kumpulan penyimpanan
Di Cloud Shell, buat kumpulan penyimpanan untuk volume Anda:
gcloud netapp storage-pools create POOL_NAME
--project=PROJECT_ID
--location=ZONE
--service-level=Flex
--type=Unified
--capacity=1024
--total-throughput=64
--total-iops=1024
--network=name=VPC_NAME,psa-range=PSA_RANGE_NAMEGanti informasi berikut:
POOL_NAME: Nama untuk pool penyimpanan, misalnya,sql-pool.PROJECT_ID: Project ID Google Cloud Anda.ZONE: Zona untuk pool penyimpanan Anda, yang harus cocok dengan zona VM Anda, misalnya,us-west1-b.VPC_NAME: Nama jaringan VPC Anda.PSA_RANGE_NAME: Nama rentang yang dialokasikan untuk koneksi Akses Layanan Pribadi Anda.
Membuat volume
Buat volume terpisah untuk data, log, tempdb, dan cadangan SQL Server untuk setiap node.
Di Cloud Shell, jalankan perintah berikut untuk setiap volume yang perlu Anda buat:
gcloud netapp volumes create VOLUME_NAME
--project=PROJECT_ID
--location=ZONE
--storage-pool=POOL_NAME
--capacity=200
--protocols=ISCSI
--block-devices="name=VOLUME_NAME,host-groups=projects/PROJECT_ID/locations/LOCATION/hostGroups/HOST_GROUP_NAME,os-type=WINDOWS"
--snapshot-directory=falseGanti
VOLUME_NAMEdengan nama unik untuk setiap volume. Untuk tutorial dua node ini, Anda perlu menjalankan perintah delapan kali untuk membuat volume data, log, tempdb, dan cadangan untuk setiap node (misalnya,sqlnode1-data,sqlnode1-log,sqlnode1-temp,sqlnode1-backup,sqlnode2-data,sqlnode2-log,sqlnode2-temp, dansqlnode2-backup).
Pasang volume iSCSI di setiap VM SQL
Untuk setiap VM (
sqlnode1dansqlnode2), pasang volume yang Anda buat untuk node tertentu tersebut.Di konsol Google Cloud , buka halaman Volumes untuk NetApp Volumes.
Pilih volume yang ditetapkan ke node yang Anda konfigurasi. Catat alamat IP Target portal yang tercantum di bagian Target details iSCSI. Anda memerlukan alamat ini untuk terhubung ke volume.
Di VM, buka PowerShell sebagai administrator dan jalankan perintah berikut, dengan mengganti IP contoh dengan IP portal target untuk volume Anda:
"10.165.128.216","10.165.128.217" | ForEach-Object { New-IscsiTargetPortal -TargetPortalAddress $_ }Jalankan
iscsicpl.exeuntuk membuka iSCSI Initiator Properties.Buka tab Targets, pilih salah satu target volume Anda dari daftar, lalu klik Connect.
Dalam dialog Connect to Target, pilih Enable multi-path, lalu klik Advanced.
Pada dialog Setelan Lanjutan:
- Local adapter: Pilih Microsoft iSCSI Initiator.
- IP Inisiator: Pilih alamat IP di VM.
- Target portal IP: Pilih salah satu IP portal yang Anda temukan.
- Klik Oke.
Dalam dialog Connect to Target, klik OK.
Ulangi langkah-langkah koneksi untuk semua target yang terkait dengan VM.
Untuk mengonfigurasi MPIO untuk perangkat iSCSI, buka MPIO Properties dari Control Panel atau Server Manager.
Klik tab Discover Multi-Paths.
Pilih Tambahkan dukungan untuk perangkat iSCSI, lalu klik Tambahkan. Mulai ulang VM jika diminta.
Setelah melakukan reboot, buka Device Manager dan luaskan Disk drives. Disk iSCSI Anda muncul sebagai perangkat multi-jalur.
Buka Disk Management (
compmgmt.msc). Untuk setiap disk baru:- Aktifkan disk.
- Lakukan inisialisasi disk (GPT).
- Buat volume baru, tetapkan huruf drive (misalnya, D untuk data, E untuk log, F untuk cadangan, G untuk tempdb), dan format menggunakan NTFS dengan Ukuran unit alokasi 64K.
Buat struktur direktori untuk SQL Server di drive yang baru diformat. Contoh:
$paths = "D:\MSSQL\DATA","E:\MSSQL\Log","F:\MSSQL\Backup","G:\MSSQL\Temp" $paths | ForEach-Object { New-Item -ItemType Directory -Path $_ -Force }
Mengonfigurasi SQL Server
Lakukan langkah-langkah ini di
sqlnode1dansqlnode2setelah memasang volumenya masing-masing.- Buka SQL Server Configuration Manager.
- Di panel kiri, pilih SQL Server Services.
- Di panel kanan, klik kanan SQL Server (MSSQLSERVER), pilih Properties, buka tab Log On, dan ubah Account Name ke akun layanan Anda (DOMAIN\sqlsvc). Masukkan sandi, lalu klik OK.
- Ulangi langkah sebelumnya untuk SQL Server Agent (MSSQLSERVER).
- Hubungkan ke instance SQL Server menggunakan SQL Server Management Studio (SSMS) dengan akun administrator domain Anda.
- Buat kredensial login untuk akun layanan dan berikan izin yang diperlukan:
USE [master]; GO CREATE LOGIN [DOMAIN\sqlsvc] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]; GO ALTER SERVER ROLE [sysadmin] ADD MEMBER [DOMAIN\sqlsvc]; GO
- Jalankan skrip berikut di SSMS untuk mengalihkan jalur database, log, cadangan, dan tempdb default ke volume iSCSI yang Anda pasang:
USE [master]; GO EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'BackupDirectory', REG_SZ, N'F:\MSSQL\Backup'; GO EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', REG_SZ, N'D:\MSSQL\DATA'; GO EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog', REG_SZ, N'E:\MSSQL\Log'; GO -- Modify model and msdb paths ALTER DATABASE model MODIFY FILE (NAME = modeldev, FILENAME = 'D:\MSSQL\DATA\model.mdf'); ALTER DATABASE model MODIFY FILE (NAME = modellog, FILENAME = 'E:\MSSQL\Log\modellog.ldf'); ALTER DATABASE msdb MODIFY FILE (NAME = MSDBData, FILENAME = 'D:\MSSQL\DATA\MSDBData.mdf'); ALTER DATABASE msdb MODIFY FILE (NAME = MSDBLog, FILENAME = 'E:\MSSQL\Log\MSDBLog.ldf'); GO -- Modify tempdb paths ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'G:\MSSQL\Temp\tempdb.mdf'); ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'G:\MSSQL\Temp\templog.ldf'); GO
- Hentikan layanan SQL Server (MSSQLSERVER).
- Pindahkan file
model,msdb, dantempdbyang ada dari lokasi lamanya (misalnya,C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA) ke lokasi barunya di drive D:, E:, dan G:. - Untuk memindahkan database
masterdanERRORLOG:- Buka SQL Server Configuration Manager.
- Klik kanan SQL Server (MSSQLSERVER), pilih Properties, lalu buka tab Startup Parameters.
- Untuk setiap parameter
-d,-e, dan-lyang ada yang mengarah ke drive C:, pilih parameter tersebut, lalu klik Hapus. - Tambahkan parameter berikut, dengan mengklik Tambahkan untuk setiap parameter:
-dD:\MSSQL\DATA\master.mdf-lE:\MSSQL\Log\mastlog.ldf-eE:\MSSQL\Log\ERRORLOG
- Klik Oke.
- Pindahkan
master.mdfdanmastlog.ldfsecara manual dariC:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATAkeD:\MSSQL\DATA\` andE:\MSSQL\Log`. - Pindahkan file
ERRORLOGdari lokasi lamanya ke `E:\MSSQL\Log`.
- Mulai layanan SQL Server (MSSQLSERVER).
Menyiapkan Windows Server Failover Clustering
Ikuti langkah-langkah berikut untuk membuat cluster dan mengonfigurasi saksi kuorum.
Mengonfigurasi Windows Firewall
Sebelum membuat cluster, pastikan Firewall Windows di setiap node mengizinkan traffic untuk WSFC, SQL Server, dan iSCSI.
Di
sqlnode1dansqlnode2, buka PowerShell sebagai administrator dan jalankan perintah berikut:New-NetFirewallRule -DisplayName 'Failover Clusters (UDP-In)' -Direction Inbound -Protocol UDP -LocalPort 3343 -Action Allow New-NetFirewallRule -DisplayName 'Failover Clusters (TCP-In)' -Direction Inbound -Protocol TCP -LocalPort 3343 -Action Allow New-NetFirewallRule -DisplayName 'RPC Endpoint Mapper' -Direction Inbound -Protocol TCP -LocalPort 135 -Action Allow New-NetFirewallRule -DisplayName 'File and Printer Sharing (SMB-In)' -Direction Inbound -Protocol TCP -LocalPort 445 -Action Allow New-NetFirewallRule -DisplayName 'Failover Cluster Manager RPC' -Direction Inbound -Protocol TCP -LocalPort 49152-65535 -Action Allow New-NetFirewallRule -DisplayName 'iSCSI' -Direction Inbound -Protocol TCP -LocalPort 3260 -Action Allow New-NetFirewallRule -DisplayName 'SQL Server' -Direction Inbound -Protocol TCP -LocalPort 1433 -Action Allow New-NetFirewallRule -DisplayName 'SQL Server AG Endpoint' -Direction Inbound -Protocol TCP -LocalPort 5022 -Action Allow
Membuat cluster
- Di
sqlnode1, buka Failover Cluster Manager (cluadmin.msc). - Di bagian Management, pilih Validate Configuration. Ikuti wizard untuk memvalidasi
sqlnode1dansqlnode2. Pastikan semua pengujian berhasil sebelum melanjutkan. - Setelah validasi, pilih Buat Cluster.
- Di Create Cluster Wizard, tambahkan
sqlnode1dansqlnode2sebagai node cluster. - Untuk Access Point for Administering the Cluster, masukkan Cluster Name (misalnya,
sqlcluster) dan berikan alamat IP statis untuk cluster. - Ikuti petunjuk untuk membuat cluster.
Membuat berbagi file untuk kuorum cluster
Sebaiknya buat berbagi file di VM ketiga, sebaiknya di zona yang berbeda, untuk berfungsi sebagai saksi kuorum cluster.
- Hubungkan ke VM yang akan Anda gunakan sebagai saksi berbagi file.
- Di jendela Server Manager, pilih Tools > Computer Management.
- Luaskan System Tools > Shared Folders, klik kanan Shares, dan pilih New Share.
- Ikuti Wizard Membuat Folder Bersama. Di halaman Folder Path, telusuri atau buat folder untuk berbagi.
- Di halaman Izin, pilih Sesuaikan izin.
- Klik Tambahkan, dan berikan Kontrol penuh ke akun objek nama cluster (CNO) (misalnya,
sqlcluster$). - Selesaikan wizard untuk membuat berbagi.
Mengonfigurasi kuorum cluster
- Di
sqlnode1, buka Failover Cluster Manager. - Klik kanan nama cluster, lalu pilih More Actions > Configure Cluster Quorum Settings.
- Di Configure Cluster Quorum Wizard, pilih Next.
- Di halaman Select Quorum Configuration Option, pilih Select the quorum witness, lalu klik Next.
- Di halaman Select Quorum Witness, pilih Configure a file share witness, lalu klik Next.
- Untuk File Share Path, masukkan jalur ke berbagi yang Anda buat (misalnya,
\\witness-server\quorum), lalu klik Next. - Konfirmasi setelan Anda, lalu klik Berikutnya, lalu klik Selesai.
Mengonfigurasi grup ketersediaan Always On
Terapkan langkah-langkah di bagian ini ke kedua VM SQL Server untuk mengaktifkan dan mengonfigurasi grup ketersediaan.
Mengaktifkan grup ketersediaan di SQL Server
- Buka SQL Server Configuration Manager.
- Di hierarki browser, pilih SQL Server Services.
- Klik kanan SQL Server (MSSQLSERVER), lalu pilih Properties.
- Pilih tab Always On High Availability, lalu pilih Aktifkan grup ketersediaan Always On.
- Klik Apply, lalu OK. Mulai ulang layanan SQL Server.
Membuat database untuk grup ketersediaan
- Hubungkan ke
sqlnode1menggunakan SSMS. - Di panel Object Explorer, klik kanan Databases, lalu pilih New Database.
- Masukkan
MyDB1untuk Nama database, lalu klik OK. - Klik kanan
MyDB1, pilih Tasks > Back Up. Lakukan pencadangan Penuh. Pastikan model pemulihan database adalah Full. - Klik kanan
MyDB1, pilih Tasks > Back Up. Lakukan pencadangan Log Transaksi. - Salin file cadangan lengkap dan log transaksi ke
sqlnode2. - Hubungkan ke
sqlnode2menggunakan SSMS. Klik kanan Databases, lalu pilih Restore Database. - Pulihkan pencadangan penuh
MyDB1darisqlnode1, dengan menentukan RESTORE WITH NORECOVERY di halaman Options. - Klik kanan
MyDB1disqlnode2, pilih Tasks > Restore > Transaction Log. Pulihkan cadangan log transaksi, sekaligus menentukan RESTORE WITH NORECOVERY.
Buat grup ketersediaan
- Hubungkan ke
sqlnode1menggunakan SSMS. - Di Object Explorer, klik kanan Always On High Availability, lalu pilih New Availability Group Wizard.
- Tentukan nama grup ketersediaan, misalnya
sql-ag. - Pilih
MyDB1sebagai database yang akan disertakan. - Di halaman Specify Replicas, klik Add Replica, lalu hubungkan ke
sqlnode2. - Aktifkan Automatic Failover untuk kedua replika, tetapkan Availability Mode ke Synchronous commit, dan Readable Secondary ke Yes.
- Buka tab Endpoints dan pastikan port
5022digunakan. - Di halaman Select Initial Data Synchronization, pilih Join only.
- Selesaikan wizard untuk membuat grup ketersediaan.
Buat resource DNN untuk grup ketersediaan
Daripada load balancer, gunakan Nama Jaringan Terdistribusi (DNN) untuk merutekan traffic klien ke pemroses grup ketersediaan.
- Buka Failover Cluster Manager, luaskan Roles, lalu pilih peran grup ketersediaan Anda.
- Di Resources, klik kanan resource grup ketersediaan, lalu pilih Add Resource > Client Access Point.
- Berikan Name untuk pemroses DNN dan selesaikan wizard.
- Aktifkan resource DNN baru.
- Secara default, cluster mengikat nama DNS DNN ke semua node dalam cluster. Jika Anda memiliki node di cluster yang tidak menghosting replika SQL Server, Anda harus mengecualikannya dari kemungkinan pemilik DNN:
- Klik kanan resource DNN yang Anda buat, lalu pilih Properties.
- Hapus centang pada kotak untuk node yang bukan replika grup ketersediaan.
- Klik Oke.
- Perbarui string koneksi aplikasi Anda untuk terhubung ke nama pemroses DNN dan sertakan
MultiSubnetFailover=True.
Menguji failover
Hubungkan ke
sqlnode1atausqlnode2menggunakan SSMS dan jalankan kueri berikut untuk memeriksa replika mana yang utama dan bahwa kedua replika dikonfigurasi untuk commit sinkron dan failover otomatis:-- Check primary replica SELECT ag.name AS AG_Name, ar.replica_server_name as PrimaryReplica FROM sys.dm_hadr_availability_replica_states AS ars JOIN sys.availability_groups AS ag ON ag.group_id = ars.group_id JOIN sys.availability_replicas ar ON ar.replica_id = ars.replica_id WHERE ars.role_desc = 'PRIMARY';
-- Check replica configuration SELECT replica_server_name, availability_mode_desc, failover_mode_desc FROM sys.availability_replicas WHERE group_id = (SELECT group_id FROM sys.availability_groups WHERE name = N'sql-ag');
Untuk memulai failover manual, hubungkan ke replika sekunder di SSMS dan jalankan:
ALTER AVAILABILITY GROUP [sql-ag] FAILOVER;
Setelah failover, verifikasi server utama baru dengan menjalankan
SELECT @@SERVERNAME;atau dengan menghubungkan kembali ke pendengar DNN dan memeriksa nama server.Anda juga dapat melihat status grup ketersediaan di SSMS dengan mengklik kanan grup ketersediaan di bagian Always On High Availability, lalu memilih Show Dashboard.
Pembersihan
Menghapus project
Agar project Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan dalam tutorial ini, hapus project Anda. Untuk mengetahui informasi selengkapnya, lihat Menonaktifkan project.