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

Berlaku untuk:SQL Server di Azure VM

Tip

Ada banyak metode untuk menyebarkan grup ketersediaan. Sederhanakan penyebaran Anda dan hilangkan kebutuhan akan Azure Load Balancer atau nama jaringan terdistribusi (DNN) untuk grup ketersediaan AlwaysOn Anda dengan membuat komputer virtual (VM) SQL Server Anda di beberapa subnet dalam jaringan virtual Azure yang sama. Jika Anda telah membuat grup ketersediaan dalam satu subnet, Anda dapat memigrasikannya ke lingkungan multi-subnet.

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 dimungkinkan untuk 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:

  • Langganan Azure.
  • Grup sumber daya dengan pengendali domain.
  • Satu atau beberapa VM yang bergabung dengan domain di Azure yang menjalankan SQL Server 2016 (atau yang lebih baru) Edisi enterprise dalam kumpulan ketersediaan yang sama atau zona ketersediaan berbeda yang telah terdaftar dengan ekstensi Agen IAAS SQL.
  • Versi terbaru Azure CLI dan/atau PowerShell.
  • Dua alamat IP yang tersedia (tidak digunakan oleh entitas mana pun). Salah satunya adalah untuk load balancer internal. Yang lainnya adalah untuk pendengar grup ketersediaan dalam subnet yang sama dengan grup ketersediaan. Jika Anda menggunakan load balancer yang ada, Anda hanya memerlukan satu alamat IP yang tersedia untuk pendengar grup ketersediaan.
  • Windows Server Core bukan sistem operasi yang didukung untuk perintah PowerShell yang dirujuk dalam artikel ini karena ada dependensi pada RSAT, yang tidak termasuk dalam penginstalan Inti Windows.

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 Membuat Objek Komputer di domain. Sebagai contoh, 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.

Validasi kluster

Agar kluster failover didukung oleh Microsoft, kluster harus lulus 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 status 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 T-SQL.

Penting

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

Membuat penyeimbang muatan internal

Catatan

Penyebaran grup ketersediaan ke beberapa subnet tidak memerlukan load balancer. Dalam lingkungan subnet tunggal, pelanggan yang menggunakan SQL Server 2019 CU8 dan yang lebih baru pada Windows 2016 dan yang lebih baru dapat mengganti listener nama jaringan virtual tradisional (VNN) dan Azure Load Balancer dengan pendengar nama jaringan terdistribusi (DNN). Jika Anda ingin menggunakan DNN, lewati langkah-langkah tutorial apa pun yang mengonfigurasi Azure Load Balancer untuk grup ketersediaan Anda.

Pendengar grup ketersediaan Always On memerlukan instans internal Azure Load Balancer. Load balancer internal menyediakan alamat IP "floating" untuk listener grup ketersediaan yang memungkinkan kegagalan dan koneksi ulang yang lebih cepat. Jika komputer virtual SQL Server dalam grup ketersediaan adalah bagian dari set ketersediaan yang sama, Anda dapat menggunakan load balancer Dasar. Jika tidak, Anda perlu menggunakan load balancer 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 listener

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 panelSettings.
  4. Identifikasi ID sumber daya untuk jaringan virtual dan tambahkan /subnets/<subnetname> pada ujungnya untuk membuat ID sumber daya subjaringan. Misalnya:
    • 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 komputer virtual SQL Server 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 komputer virtual SQL Server 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> 
    

Menghapus listener

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 listener grup ketersediaan dari ekstensi Agen infrastruktur sebagai layanan 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>

Menghapus 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: