Azure VM'de SQL Server için kullanılabilirlik grubu yapılandırmak için PowerShell veya Az CLI kullanma

Şunlar için geçerlidir: Azure VM'de SQL Server

İpucu

SQL Server VM'lerinizi aynı Azure sanal ağındaki birden çok alt ağda oluşturarak Always On kullanılabilirlik (AG) grubunuz için Azure Load Balancer gereksinimini ortadan kaldırın.

Bu makalede, Bir Windows yük devretme kümesi dağıtmak, kümeye SQL Server VM'ler eklemek ve tek bir alt ağ içinde bir Always On kullanılabilirlik grubu için iç yük dengeleyici ve dinleyici oluşturmak için PowerShell veya Azure CLI'nın nasıl kullanılacağı açıklanmaktadır.

Kullanılabilirlik grubunun dağıtımı hala SQL Server Management Studio (SSMS) veya Transact-SQL (T-SQL) aracılığıyla el ile gerçekleştirilir.

Bu makalede kullanılabilirlik grubu ortamını yapılandırmak için PowerShell ve Az CLI kullanılır ancak bunu Azure portal, Azure Hızlı Başlangıç şablonları veya El ile de yapabilirsiniz.

Not

Artık Azure Geçişi kullanarak kullanılabilirlik grubu çözümünüzü azure vm'lerinde SQL Server kaldırmak ve değiştirmek mümkündür. Daha fazla bilgi edinmek için bkz . Kullanılabilirlik grubunu geçirme .

Önkoşullar

Always On kullanılabilirlik grubunu yapılandırmak için aşağıdaki önkoşullara sahip olmanız gerekir:

  • Bir Azure aboneliği.
  • Etki alanı denetleyicisine sahip bir kaynak grubu.
  • Azure'da aynı kullanılabilirlikkümesinde SQL Server 2016 (veya üzeri) Enterprise sürümünü veya SQL IaaS Aracısı uzantısıyla kaydedilmişfarklı kullanılabilirlik alanlarını çalıştıran bir veya daha fazla etki alanına katılmış VM.
  • PowerShell'in veya Azure CLI'nin en son sürümü.
  • İki kullanılabilir (herhangi bir varlık tarafından kullanılmaz) IP adresi. Biri iç yük dengeleyici içindir. Diğeri, kullanılabilirlik grubuyla aynı alt ağ içindeki kullanılabilirlik grubu dinleyicisine yöneliktir. Mevcut bir yük dengeleyici kullanıyorsanız, kullanılabilirlik grubu dinleyicisi için yalnızca bir kullanılabilir IP adresine ihtiyacınız vardır.

İzinler

Azure CLI kullanarak Always On kullanılabilirlik grubunu yapılandırmak için aşağıdaki hesap izinlerine ihtiyacınız vardır:

  • Etki alanında Bilgisayar Nesnesi Oluştur izni olan mevcut bir etki alanı kullanıcı hesabı. Örneğin, bir etki alanı yönetici hesabının genellikle yeterli izni vardır (örneğin: account@domain.com). Bu hesap, kümeyi oluşturmak için her vm'de yerel yönetici grubunun da bir parçası olmalıdır.
  • SQL Server denetleen etki alanı kullanıcı hesabı.

Depolama hesabı oluşturma

Kümenin bulut tanığı olarak görev yapması için bir depolama hesabı gerekir. Mevcut herhangi bir depolama hesabını kullanabilir veya yeni bir depolama hesabı oluşturabilirsiniz. Mevcut bir depolama hesabını kullanmak istiyorsanız sonraki bölüme geçin.

Aşağıdaki kod parçacığı depolama hesabını oluşturur:

# 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

İpucu

Azure CLI'nın eski bir sürümünü kullanıyorsanız hatayı az sql: 'vm' is not in the 'az sql' command group görebilirsiniz. Bu hatayı aşmak için Azure CLI'nın en son sürümünü indirin.

Küme meta verilerini tanımlama

Azure CLI az sql vm group komut grubu, kullanılabilirlik grubunu barındıran Windows Server Yük Devretme Kümesi (WSFC) hizmetinin meta verilerini yönetir. Küme meta verileri Active Directory etki alanını, küme hesaplarını, bulut tanığı olarak kullanılacak depolama hesaplarını ve SQL Server sürümünü içerir. İlk SQL Server VM eklendiğinde kümenin tanımlandığı gibi oluşturulması için WSFC meta verilerini tanımlamak için az sql vm group create komutunu kullanın.

Aşağıdaki kod parçacığı kümenin meta verilerini tanımlar:

# 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/>'

Kümeye VM ekleme

kümeye ilk SQL Server VM eklendiğinde küme oluşturulur. az sql vm add-to-group komutu, kümeyi daha önce verilen adla oluşturur, SQL Server VM'lere küme rolünü yükler ve kümeye ekler. Komutun az sql vm add-to-group sonraki kullanımları, yeni oluşturulan kümeye daha fazla SQL Server VM ekler.

Aşağıdaki kod parçacığı kümeyi oluşturur ve kümeye ilk SQL Server VM'yi ekler:

# 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>

Kümeye diğer SQL Server VM'leri eklemek için bu komutu kullanın. Yalnızca -n SQL Server VM adı parametresini değiştirin.

Çekirdeği yapılandırma

Disk tanığı en dayanıklı çekirdek seçeneği olsa da, kullanılabilirlik grubuna bazı sınırlamalar getiren bir Azure paylaşılan diski gerektirir. Bu nedenle bulut tanığı, Azure VM'lerinde SQL Server için kullanılabilirlik gruplarını barındıran kümeler için önerilen çekirdek çözümüdür.

Kümede eşit sayıda oy varsa, çekirdek çözümünü iş gereksinimlerinize en uygun şekilde yapılandırın. Daha fazla bilgi için bkz. SQL Server VM'lerle çekirdek.

Kümeyi doğrulama

Bir yük devretme kümesinin Microsoft tarafından desteklenmesi için küme doğrulamasını geçmesi gerekir. Uzak Masaüstü Protokolü (RDP) gibi tercih ettiğiniz yöntemi kullanarak VM'ye bağlanın ve devam etmeden önce kümenizin doğrulamayı geçtiğini doğrulayın. Bunun başarısız olması kümenizi desteklenmeyen bir durumda bırakır.

Yük Devretme Kümesi Yöneticisi'ni (FCM) veya aşağıdaki PowerShell komutunu kullanarak kümeyi doğrulayabilirsiniz:

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

Kullanılabilirlik grubu oluşturma

SQL Server Management Studio, PowerShell veya Transact-SQL kullanarak kullanılabilirlik grubunu normalde yaptığınız gibi el ile oluşturun.

Önemli

Bu işlem aşağıdaki bölümlerde Azure CLI aracılığıyla yapıldığından şu anda bir dinleyici oluşturmayın .

İç yük dengeleyici oluşturma

Not

Windows 2016 ve sonraki sürümlerde SQL Server 2019 CU8 ve üzeri sürümlerde bulunan müşteriler, geleneksel VNN dinleyicisini ve Azure Load Balancer yerine dağıtılmış ağ adı (DNN) dinleyicisini değiştirebilir. Dinleyiciyi ve yük dengeleyiciyi oluşturan bu makaledeki diğer adımları atlayın.

Always On kullanılabilirlik grubu dinleyicisi bir iç Azure Load Balancer örneği gerektirir. İç yük dengeleyici, kullanılabilirlik grubu dinleyicisi için daha hızlı yük devretme ve yeniden bağlantı sağlayan "kayan" bir IP adresi sağlar. Kullanılabilirlik grubundaki SQL Server VM'ler aynı kullanılabilirlik kümesinin parçasıysa, Temel yük dengeleyici kullanabilirsiniz. Aksi takdirde Standart yük dengeleyici kullanmanız gerekir.

Not

İç yük dengeleyici, SQL Server VM örnekleriyle aynı sanal ağda olmalıdır.

Aşağıdaki kod parçacığı iç yük dengeleyiciyi oluşturur:

# 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>

Önemli

Her SQL Server VM için genel IP kaynağının Standart yük dengeleyici ile uyumlu olması için bir Standart SKU'su olmalıdır. VM'nizin genel IP kaynağının SKU'sunu belirlemek için Kaynak Grubu'na gidin, istenen SQL Server VM için Genel IP Adresi kaynağınızı seçin ve Genel Bakış bölmesinde SKU'nun altındaki değeri bulun.

Dinleyici oluşturma

Kullanılabilirlik grubunu el ile oluşturduktan sonra az sql vm ag-listener komutunu kullanarak dinleyiciyi oluşturabilirsiniz.

Alt ağ kaynak kimliği, sanal ağ kaynağının kaynak kimliğine eklenen değeridir/subnets/<subnetname>. Alt ağ kaynak kimliğini tanımlamak için:

  1. Azure portal kaynak grubunuz gidin.
  2. Sanal ağ kaynağını seçin.
  3. Ayarlar bölmesinde Özellikler'i seçin.
  4. Sanal ağın kaynak kimliğini belirleyin ve alt ağ kaynak kimliğini oluşturmak için sonuna ekleyin /subnets/<subnetname> . Örnek:
    • Sanal ağ kaynak kimliğiniz: /subscriptions/a1a1-1a11a/resourceGroups/SQLVM-RG/providers/Microsoft.Network/virtualNetworks/SQLVMvNet
    • Alt ağ adınız: default
    • Bu nedenle alt ağ kaynak kimliğiniz şu şekildedir: /subscriptions/a1a1-1a11a/resourceGroups/SQLVM-RG/providers/Microsoft.Network/virtualNetworks/SQLVMvNet/subnets/default

Aşağıdaki kod parçacığı kullanılabilirlik grubu dinleyicisini oluşturur:

# 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>

Çoğaltma sayısını değiştirme

Azure'da barındırılan VM'leri SQL Server için bir kullanılabilirlik grubu dağıtırken daha fazla karmaşıklık katmanı vardır. Kaynak sağlayıcısı ve sanal makine grubu artık kaynakları yönetir. Bu nedenle, kullanılabilirlik grubuna çoğaltma eklerken veya kaldırırken, SQL Server VM'ler hakkındaki bilgilerle dinleyici meta verilerini güncelleştirmenin ek bir adımı vardır. Kullanılabilirlik grubundaki çoğaltma sayısını değiştirirken, dinleyiciyi SQL Server VM'lerinin meta verileriyle güncelleştirmek için az sql vm group ag-listener update komutunu da kullanmanız gerekir.

Çoğaltma ekleme

Kullanılabilirlik grubuna yeni bir çoğaltma eklemek için:

  1. SQL Server VM'sini küme grubuna ekleyin:

    
    # 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. SQL Server örneğini kullanılabilirlik grubuna çoğaltma olarak eklemek için SQL Server Management Studio kullanın.

  3. SQL Server VM meta verilerini dinleyiciye ekleyin:

    # 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>
    

Çoğaltmayı kaldırma

Kullanılabilirlik grubundan bir çoğaltmayı kaldırmak için:

  1. SQL Server Management Studio kullanarak çoğaltmayı kullanılabilirlik grubundan kaldırın.
  2. SQL Server VM meta verilerini dinleyiciden kaldırın:
    # 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. kümeden SQL Server VM'yi kaldırın:
    # 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> 
    

Dinleyiciyi kaldırma

Daha sonra Azure CLI ile yapılandırılan kullanılabilirlik grubu dinleyicisini kaldırmanız gerekiyorsa SQL IaaS Aracısı uzantısını gözden geçirmeniz gerekir. Dinleyici SQL IaaS Aracısı uzantısı aracılığıyla kaydedildiğinden, yalnızca SQL Server Management Studio aracılığıyla silmek yeterli değildir.

En iyi yöntem, Azure CLI'da aşağıdaki kod parçacığını kullanarak SQL IaaS Aracısı uzantısı aracılığıyla silmektir. Bunu yaptığınızda kullanılabilirlik grubu dinleyicisi meta verileri SQL IaaS Aracısı uzantısından kaldırılır. Ayrıca dinleyiciyi kullanılabilirlik grubundan fiziksel olarak siler.

# 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>

Kümeyi kaldırma

Yok etmek için kümedeki tüm düğümleri kaldırın ve ardından SQL IaaS Aracısı uzantısından küme meta verilerini kaldırın. Azure CLI veya PowerShell kullanarak bunu yapabilirsiniz.

İlk olarak, kümeden tüm SQL Server VM'leri kaldırın:

# 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>

Kümedeki tek VM'ler bunlarsa, küme yok edilir. Kümede kaldırılan SQL Server VM'ler dışında başka VM'ler varsa, diğer VM'ler kaldırılmaz ve küme yok edilmez.

Ardından SQL IaaS Aracısı uzantısından küme meta verilerini kaldırın:

# 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>

Sonraki adımlar

Kullanılabilirlik grubu dağıtıldıktan sonra Azure VM'lerinde SQL Server için HADR ayarlarını iyileştirmeyi göz önünde bulundurun.

Daha fazla bilgi edinmek için şu makalelere bakın: