Menggunakan PowerShell atau Az CLI untuk mengonfigurasi grup ketersediaan untuk SQL Server di Azure VM

BERLAKU UNTUK: SQL Server di Komputer Virtual Azure

Tip

Hilangkan kebutuhan akan Azure Load Balancer untuk grup ketersediaan AlwaysOn (AG) Anda dengan membuat mesin virtual SQL Server di beberapa subnet dalam jaringan virtual Azure yang sama.

Artikel ini menjelaskan cara menggunakan PowerShell atau Azure CLI untuk menyebarkan kluster failover Windows, menambahkan VM SQL Server ke kluster, serta membuat penyeimbang beban internal dan listener untuk grup ketersediaan AlwaysOn dalam subnet tunggal.

Penyebaran grup ketersediaan masih dilakukan secara manual melalui SQL Server Management Studio (SSMS) atau Transact-SQL (T-SQL).

Meskipun artikel ini menggunakan PowerShell dan Az CLI untuk mengonfigurasi lingkungan grup ketersediaan, dimungkinkan juga untuk melakukannya dari portal Microsoft Azure, menggunakan templat Quickstart Azure , atau Secara Manual juga.

Catatan

Sekarang Anda juga dapat mengangkat dan mengalihkan solusi grup ketersediaan Anda ke SQL Server di Azure VM menggunakan Azure Migrate. Lihat Memigrasikan grup ketersediaan untuk mempelajari selengkapnya.

Prasyarat

Untuk mengonfigurasi grup ketersediaan Always On, Anda harus memiliki prasyarat berikut:

Izin

Anda memerlukan izin akun berikut untuk mengonfigurasi grup ketersediaan Always On dengan menggunakan Azure CLI:

  • Akun pengguna domain yang sudah ada yang memiliki izin Buat Obyek Komputer di domain. Misalnya, akun admin domain biasanya memiliki izin yang memadai (misalnya: account@domain.com ). Akun ini juga harus menjadi bagian dari grup administrator lokal pada setiap VM untuk membuat kluster.
  • Akun pengguna domain yang mengontrol SQL Server.

Buat akun penyimpanan

Klaster ini memerlukan akun penyimpanan untuk bertindak sebagai saksi cloud. Anda dapat menggunakan akun penyimpanan apa pun yang sudah ada, atau Anda dapat membuat akun penyimpanan baru. Jika Anda ingin menggunakan akun penyimpanan yang sudah ada, lewati hingga ke bagian berikutnya.

Snippet kode berikut membuat akun penyimpanan:

# Create the storage account
# example: az storage account create -n 'cloudwitness' -g SQLVM-RG -l 'West US' `
#  --sku Standard_LRS --kind StorageV2 --access-tier Hot --https-only true

az storage account create -n <name> -g <resource group name> -l <region> `
  --sku Standard_LRS --kind StorageV2 --access-tier Hot --https-only true

Tip

Anda mungkin melihat kesalahan az sql: 'vm' is not in the 'az sql' command group jika Anda menggunakan versi Azure CLI yang sudah ketinggalan zaman. Unduh versi terbaru Azure CLI untuk melewati kesalahan ini.

Tentukan metadata kluster

Grup perintah Azure CLI grup az sql vm mengelola metadata layanan Windows Server Failover Cluster (WSFC) yang menghosting grup ketersediaan. Metadata kluster mencakup domain Active Directory, akun kluster, akun penyimpanan yang akan digunakan sebagai saksi cloud, dan versi SQL Server. Gunakan az sql vm group create untuk menentukan metadata untuk WSFC sehingga ketika SQL Server VM pertama ditambahkan, kluster dibuat seperti yang didefinisikan.

Snippet kode berikut mendefinisikan metadata untuk kluster:

# Define the cluster metadata
# example: az sql vm group create -n Cluster -l 'West US' -g SQLVM-RG `
#  --image-offer SQL2017-WS2016 --image-sku Enterprise --domain-fqdn domain.com `
#  --operator-acc vmadmin@domain.com --bootstrap-acc vmadmin@domain.com --service-acc sqlservice@domain.com `
#  --sa-key '4Z4/i1Dn8/bpbseyWX' `
#  --storage-account 'https://cloudwitness.blob.core.windows.net/'

az sql vm group create -n <cluster name> -l <region ex:eastus> -g <resource group name> `
  --image-offer <SQL2016-WS2016 or SQL2017-WS2016> --image-sku Enterprise --domain-fqdn <FQDN ex: domain.com> `
  --operator-acc <domain account ex: testop@domain.com> --bootstrap-acc <domain account ex:bootacc@domain.com> `
  --service-acc <service account ex: testservice@domain.com> `
  --sa-key '<PublicKey>' `
  --storage-account '<ex:https://cloudwitness.blob.core.windows.net/>'

Menambahkan VM ke kluster

Menambahkan SQL Server VM pertama ke kluster membuat kluster. Perintah add-to-group az sql vm membuat kluster dengan nama yang sebelumnya diberikan, menginstal peran kluster pada VM SQL Server, dan menambahkannya ke kluster. Penggunaan berikutnya perintah az sql vm add-to-group menambahkan lebih banyak VM SQL Server ke kluster yang baru dibuat.

Cuplikan kode berikut membuat kluster dan menambahkan SQL Server VM pertama ke dalamnya:

# Add SQL Server VMs to cluster
# example: az sql vm add-to-group -n SQLVM1 -g SQLVM-RG --sqlvm-group Cluster `
#  -b Str0ngAzur3P@ssword! -p Str0ngAzur3P@ssword! -s Str0ngAzur3P@ssword!
# example: az sql vm add-to-group -n SQLVM2 -g SQLVM-RG --sqlvm-group Cluster `
#  -b Str0ngAzur3P@ssword! -p Str0ngAzur3P@ssword! -s Str0ngAzur3P@ssword!

az sql vm add-to-group -n <VM1 Name> -g <Resource Group Name> --sqlvm-group <cluster name> `
  -b <bootstrap account password> -p <operator account password> -s <service account password>
az sql vm add-to-group -n <VM2 Name> -g <Resource Group Name> --sqlvm-group <cluster name> `
  -b <bootstrap account password> -p <operator account password> -s <service account password>

Gunakan perintah ini untuk menambahkan VM SQL Server lainnya ke kluster. Modifikasi hanya parameter -n untuk nama SQL Server VM.

Konfigurasikan kuorum

Meskipun merupakan opsi kuorum yang paling andal, saksi disk memerlukan disk bersama Azure yang memberlakukan beberapa batasan pada grup ketersediaan. Dengan demikian, saksi cloud adalah solusi kuorum yang direkomendasikan untuk grup ketersediaan yang menghosting kluster untuk SQL Server di Azure VM.

Jika memiliki jumlah suara yang merata di kluster, konfigurasikan solusi kuorum yang paling sesuai dengan kebutuhan bisnis Anda. Untuk informasi selengkapnya, lihat Kuorum dengan VM SQL Server.

Memvalidasi kluster

Agar kluster failover didukung oleh Microsoft, kluster harus melewati validasi kluster. Sambungkan ke VM menggunakan metode pilihan Anda, seperti Protokol Desktop Jarak Jauh (RDP) dan validasi agar kluster Anda melewati validasi sebelum melanjutkan lebih lanjut. Kegagalan untuk melakukannya membuat kluster Anda dalam keadaan tidak didukung.

Anda dapat memvalidasi kluster menggunakan Failover Cluster Manager (FCM) atau perintah PowerShell berikut:

Test-Cluster –Node ("<node1>","<node2>") –Include "Inventory", "Network", "System Configuration"

Membuat grup ketersediaan

Buat grup ketersediaan secara manual seperti biasa, dengan menggunakan SQL Server Management Studio, PowerShell, atau Transact-SQL.

Penting

Jangan membuat pendengar saat ini karena ini dilakukan melalui Azure CLI di bagian berikut.

Membuat penyeimbang beban internal

Catatan

Pelanggan di SQL Server 2019 CU8 dan yang lebih baru pada Windows 2016 dan yang lebih baru dapat mengganti pendengar VNN tradisional dan Azure Load Balancer dengan pendengar nama jaringan terdistribusi (DNN). Lewati langkah-langkah lain dalam artikel ini tentang cara membuat pendengar dan load balancer.

Pendengar grup ketersediaan Always On memerlukan instans internal Azure Load Balancer. Penyeimbang beban internal menyediakan alamat IP "floating" untuk pendengar grup ketersediaan yang memungkinkan failover dan rekoneksi yang lebih cepat. Jika VM SQL Server dalam grup ketersediaan adalah bagian dari kumpulan ketersediaan yang sama, Anda dapat menggunakan penyeimbang muatan dasar. Jika tidak, Anda perlu menggunakan penyeimbang muatan Standar.

Catatan

Penyeimbang beban internal harus berada di jaringan virtual yang sama dengan instance SQL Server VM.

Snipprt kode berikut membuat penyeimbang muatan internal:

# Create the internal load balancer
# example: az network lb create --name sqlILB -g SQLVM-RG --sku Standard `
# --vnet-name SQLVMvNet --subnet default

az network lb create --name sqlILB -g <resource group name> --sku Standard `
  --vnet-name <VNet Name> --subnet <subnet name>

Penting

Sumber daya IP publik untuk setiap SQL Server VM harus memiliki SKU Standar agar kompatibel dengan penyeimbang muatan Standar. Untuk menentukan SKU sumber daya IP publik VM Anda, masuk ke Grup sumber daya, pilih sumber daya Public IP Address Anda untuk VM SQL Server yang diinginkan, dan temukan nilai di bawah SKU di panel Overview.

Membuat pendengar

Setelah membuat grup ketersediaan secara manual, Anda dapat membuat pendengar dengan menggunakan az sql vm ag-listener.

ID sumber daya subjaringan adalah nilai /subnets/<subnetname> ditambahkan ke ID sumber daya dari sumber daya jaringan virtual. Untuk mengidentifikasi ID sumber daya subjaringan:

  1. Buka resource group Anda di portal Microsoft Azure.
  2. Pilih virtual network resource.
  3. Pilih Properties di panel Settings.
  4. Identifikasi ID sumber daya untuk jaringan virtual dan tambahkan /subnets/<subnetname> pada ujungnya untuk membuat ID sumber daya subjaringan. Contohnya:
    • ID sumber daya jaringan virtual Anda adalah: /subscriptions/a1a1-1a11a/resourceGroups/SQLVM-RG/providers/Microsoft.Network/virtualNetworks/SQLVMvNet
    • Nama subjaringan Anda adalah: default
    • Oleh karena itu, ID sumber daya subjaringan Anda adalah: /subscriptions/a1a1-1a11a/resourceGroups/SQLVM-RG/providers/Microsoft.Network/virtualNetworks/SQLVMvNet/subnets/default

Snippet kode berikut membuat pendengar grup ketersediaan:

# Create the availability group listener
# example: az sql vm group ag-listener create -n AGListener -g SQLVM-RG `
#  --ag-name SQLAG --group-name Cluster --ip-address 10.0.0.27 `
#  --load-balancer sqlilb --probe-port 59999  `
#  --subnet /subscriptions/a1a1-1a11a/resourceGroups/SQLVM-RG/providers/Microsoft.Network/virtualNetworks/SQLVMvNet/subnets/default `
#  --sqlvms sqlvm1 sqlvm2

az sql vm group ag-listener create -n <listener name> -g <resource group name> `
  --ag-name <availability group name> --group-name <cluster name> --ip-address <ag listener IP address> `
  --load-balancer <lbname> --probe-port <Load Balancer probe port, default 59999>  `
  --subnet <subnet resource id> `
  --sqlvms <names of SQL VM's hosting AG replicas, ex: sqlvm1 sqlvm2>

Ubah jumlah replika

Ada lapisan kompleksitas tambahan saat Anda menerapkan grup ketersediaan ke SQL Server VM yang dihosting di Azure. Penyedia sumber daya dan grup mesin virtual sekarang mengelola sumber daya. Dengan demikian, saat Anda menambahkan atau menghapus replika di grup ketersediaan, ada langkah tambahan untuk memperbarui metadata pendengar dengan informasi tentang VM SQL Server. Saat memodifikasi jumlah replika di grup ketersediaan, Anda juga harus menggunakan perintah az sql vm group ag-listener update untuk memperbarui pendengar dengan metadata VM SQL Server.

Tambahkan replika

Untuk menambahkan replika baru ke grup ketersediaan:

  1. Tambahkan SQL Server VM ke grup kluster:

    
    # Add the SQL Server VM to the cluster group
    # example: az sql vm add-to-group -n SQLVM3 -g SQLVM-RG --sqlvm-group Cluster `
    # -b Str0ngAzur3P@ssword! -p Str0ngAzur3P@ssword! -s Str0ngAzur3P@ssword!
    
    az sql vm add-to-group -n <VM3 Name> -g <Resource Group Name> --sqlvm-group <cluster name> `
    -b <bootstrap account password> -p <operator account password> -s <service account password>
    
  2. Gunakan SQL Server Management Studio untuk menambahkan instans SQL Server sebagai replika dalam grup ketersediaan.

  3. Tambahkan metadata SQL Server VM ke pendengar:

    # Update the listener metadata with the new VM
    # example: az sql vm group ag-listener update -n AGListener `
    # -g sqlvm-rg --group-name Cluster --sqlvms sqlvm1 sqlvm2 sqlvm3
    
    az sql vm group ag-listener update -n <Listener> `
    -g <RG name> --group-name <cluster name> --sqlvms <SQL VMs, along with new SQL VM>
    

Menghapus replika

Untuk menghapus replika dari grup ketersediaan:

  1. Hapus replika dari grup ketersediaan dengan menggunakan SQL Server Management Studio.
  2. Hapus metadata SQL Server VM dari pendengar:
    # Update the listener metadata by removing the VM from the SQLVMs list
    # example: az sql vm group ag-listener update -n AGListener `
    # -g sqlvm-rg --group-name Cluster --sqlvms sqlvm1 sqlvm2
    
    az sql vm group ag-listener update -n <Listener> `
    -g <RG name> --group-name <cluster name> --sqlvms <SQL VMs that remain>
    
  3. Hapus SQL Server VM dari kluster:
    # Remove the SQL VM from the cluster
    # example: az sql vm remove-from-group --name SQLVM3 --resource-group SQLVM-RG
    
    az sql vm remove-from-group --name <SQL VM name> --resource-group <RG name> 
    

Hapus pendengar

Jika nanti Anda perlu menghapus pendengar grup ketersediaan yang dikonfigurasi dengan Azure CLI, Anda harus melalui ekstensi Agen IaaS SQL. Karena pendengar terdaftar melalui ekstensi Agen IaaS SQL, hanya menghapusnya melalui SQL Server Management Studio tidak mencukupi.

Metode terbaik adalah menghapusnya melalui ekstensi Agen IaaS SQL dengan menggunakan cuplikan kode berikut di Azure CLI. Melakukan hal tersebut akan menghapus metadata pendengar grup ketersediaan dari ekstensi Agen IaaS SQL. Hal ini juga secara fisik menghapus pendengar dari grup ketersediaan.

# Remove the availability group listener
# example: az sql vm group ag-listener delete --group-name Cluster --name AGListener --resource-group SQLVM-RG

az sql vm group ag-listener delete --group-name <cluster name> --name <listener name > --resource-group <resource group name>

Hapus kluster

Hapus semua node dari kluster untuk menghancurkannya, lalu hapus metadata kluster dari ekstensi Agen IaaS SQL. Anda dapat melakukannya dengan menggunakan Azure CLI atau PowerShell.

Pertama, hapus semua VM SQL Server dari kluster:

# Remove the VM from the cluster metadata
# example: az sql vm remove-from-group --name SQLVM2 --resource-group SQLVM-RG

az sql vm remove-from-group --name <VM1 name>  --resource-group <resource group name>
az sql vm remove-from-group --name <VM2 name>  --resource-group <resource group name>

Jika ini adalah satu-satunya VM dalam kluster, maka kluster akan hancur. Jika ada VM lain dalam kluster selain dari VM SQL Server yang dihapus, VM lainnya tidak akan dihapus dan kluster tidak akan hancur.

Selanjutnya, hapus metadata kluster dari ekstensi Agen SQL IaaS:

# Remove the cluster from the SQL VM RP metadata
# example: az sql vm group delete --name Cluster --resource-group SQLVM-RG

az sql vm group delete --name <cluster name> Cluster --resource-group <resource group name>

Langkah berikutnya

Setelah grup ketersediaan disebarkan, pertimbangkan untuk mengoptimalkan pengaturan HADR untuk SQL Server di Azure VM.

Untuk mempelajari selengkapnya, lihat: