Öğretici: Azure'daki RHEL sanal makinelerinde SQL Server için kullanılabilirlik gruplarını yapılandırma

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

Not

Bu öğreticide SQL Server 2017'yi RHEL 7.6 ile kullanıyoruz, ancak yüksek kullanılabilirliği yapılandırmak için RHEL 7 veya RHEL 8'de SQL Server 2019'u kullanmak mümkündür. Pacemake kümesi ve kullanılabilirlik grubu kaynaklarını yapılandırma komutları RHEL 8'de değişmiştir ve doğru komutlar hakkında daha fazla bilgi için Kullanılabilirlik grubu kaynağı ve RHEL 8 kaynakları oluşturma makalesine göz atmak istersiniz.

Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:

  • Yeni kaynak grubu, kullanılabilirlik kümesi ve Linux sanal makineleri (VM) oluşturma
  • Yüksek kullanılabilirliği etkinleştirme (HA)
  • Pacemaker kümesi oluşturma
  • STONITH cihazı oluşturarak eskrim aracısını yapılandırma
  • RHEL'de SQL Server ve mssql-tools yükleme
  • SQL Server AlwaysOn kullanılabilirlik grubunu yapılandırma
  • Pacemaker kümesindeki kullanılabilirlik grubu (AG) kaynaklarını yapılandırma
  • Yük devretmeyi ve eskrim aracısını test etme

Bu öğreticide Azure'da kaynak dağıtmak için Azure CLI kullanılır.

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Önkoşullar

  • Bu makale, Azure CLI'nın 2.0.30 veya sonraki bir sürümünü gerektirir. Azure Cloud Shell kullanılıyorsa en son sürüm zaten yüklüdür.

Kaynak grubu oluşturma

Birden fazla aboneliğiniz varsa, bu kaynakları dağıtmak istediğiniz aboneliği ayarlayın .

Bir bölgede kaynak grubu <resourceGroupName> oluşturmak için aşağıdaki komutu kullanın. değerini kendi seçtiğiniz bir adla değiştirin <resourceGroupName> . Bu öğretici için kullanıyoruz East US 2 . Daha fazla bilgi için aşağıdaki Hızlı Başlangıç'a bakın.

az group create --name <resourceGroupName> --location eastus2

Kullanılabilirlik kümesi oluşturma

Sonraki adım bir kullanılabilirlik kümesi oluşturmaktır. Azure Cloud Shell'de aşağıdaki komutu çalıştırın ve değerini kaynak grubunuzun adıyla değiştirin<resourceGroupName>. için <availabilitySetName>bir ad seçin.

az vm availability-set create \
    --resource-group <resourceGroupName> \
    --name <availabilitySetName> \
    --platform-fault-domain-count 2 \
    --platform-update-domain-count 2

Komut tamamlandıktan sonra aşağıdaki sonuçları almanız gerekir:

{
  "id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/availabilitySets/<availabilitySetName>",
  "location": "eastus2",
  "name": "<availabilitySetName>",
  "platformFaultDomainCount": 2,
  "platformUpdateDomainCount": 2,
  "proximityPlacementGroup": null,
  "resourceGroup": "<resourceGroupName>",
  "sku": {
    "capacity": null,
    "name": "Aligned",
    "tier": null
  },
  "statuses": null,
  "tags": {},
  "type": "Microsoft.Compute/availabilitySets",
  "virtualMachines": []
}

Kullanılabilirlik kümesi içinde RHEL VM'leri oluşturma

Uyarı

Kullandıkça Öde (PAYG) RHEL görüntüsü seçerseniz ve yüksek kullanılabilirliği (HA) yapılandırdıysanız aboneliğinizi kaydetmeniz gerekebilir. Bu, VM için Microsoft Azure RHEL aboneliği ve Red Hat aboneliği için ücretlendirileceği için abonelik için iki kez ödemenize neden olabilir. Daha fazla bilgi için bkz. https://access.redhat.com/solutions/2458541.

"Çift faturalandırılmaktan" kaçınmak için Azure VM'yi oluştururken rhel ha görüntüsü kullanın. RHEL-HA görüntüleri olarak sunulan görüntüler, HA deposu önceden etkin olan PAYG görüntüleridir.

  1. HA ile RHEL sunan sanal makine görüntülerinin listesini alın:

    az vm image list --all --offer "RHEL-HA"
    

    Aşağıdaki sonuçları görmeniz gerekir:

    [
      {
    "offer": "RHEL-HA",
    "publisher": "RedHat",
    "sku": "7.4",
    "urn": "RedHat:RHEL-HA:7.4:7.4.2019062021",
    "version": "7.4.2019062021"
       },
       {
    "offer": "RHEL-HA",
    "publisher": "RedHat",
    "sku": "7.5",
    "urn": "RedHat:RHEL-HA:7.5:7.5.2019062021",
    "version": "7.5.2019062021"
        },
        {
    "offer": "RHEL-HA",
    "publisher": "RedHat",
    "sku": "7.6",
    "urn": "RedHat:RHEL-HA:7.6:7.6.2019062019",
    "version": "7.6.2019062019"
         },
         {
    "offer": "RHEL-HA",
    "publisher": "RedHat",
    "sku": "8.0",
    "urn": "RedHat:RHEL-HA:8.0:8.0.2020021914",
    "version": "8.0.2020021914"
         },
         {
    "offer": "RHEL-HA",
    "publisher": "RedHat",
    "sku": "8.1",
    "urn": "RedHat:RHEL-HA:8.1:8.1.2020021914",
    "version": "8.1.2020021914"
          },
          {
    "offer": "RHEL-HA",
    "publisher": "RedHat",
    "sku": "80-gen2",
    "urn": "RedHat:RHEL-HA:80-gen2:8.0.2020021915",
    "version": "8.0.2020021915"
           },
           {
    "offer": "RHEL-HA",
    "publisher": "RedHat",
    "sku": "81_gen2",
    "urn": "RedHat:RHEL-HA:81_gen2:8.1.2020021915",
    "version": "8.1.2020021915"
           }
    ]
    

    Bu öğreticide RHEL 7 örneği için görüntüyü RedHat:RHEL-HA:7.6:7.6.2019062019 ve RHEL 8 örneğini seçiyoruz RedHat:RHEL-HA:8.1:8.1.2020021914 .

    RHEL8-HA görüntülerinde önceden yüklenmiş SQL Server 2019'u da seçebilirsiniz. Bu görüntülerin listesini almak için aşağıdaki komutu çalıştırın:

    az vm image list --all --offer "sql2019-rhel8"
    

    Aşağıdaki sonuçları görmeniz gerekir:

    [
      {
    "offer": "sql2019-rhel8",
    "publisher": "MicrosoftSQLServer",
    "sku": "enterprise",
    "urn": "MicrosoftSQLServer:sql2019-rhel8:enterprise:15.0.200317",
    "version": "15.0.200317"
       },
       }
    "offer": "sql2019-rhel8",
    "publisher": "MicrosoftSQLServer",
    "sku": "enterprise",
    "urn": "MicrosoftSQLServer:sql2019-rhel8:enterprise:15.0.200512",
    "version": "15.0.200512"
       },
       {
    "offer": "sql2019-rhel8",
    "publisher": "MicrosoftSQLServer",
    "sku": "sqldev",
    "urn": "MicrosoftSQLServer:sql2019-rhel8:sqldev:15.0.200317",
    "version": "15.0.200317"
       },
       {
    "offer": "sql2019-rhel8",
    "publisher": "MicrosoftSQLServer",
    "sku": "sqldev",
    "urn": "MicrosoftSQLServer:sql2019-rhel8:sqldev:15.0.200512",
    "version": "15.0.200512"
       },
       {
    "offer": "sql2019-rhel8",
    "publisher": "MicrosoftSQLServer",
    "sku": "standard",
    "urn": "MicrosoftSQLServer:sql2019-rhel8:standard:15.0.200317",
    "version": "15.0.200317"
       },
       {
    "offer": "sql2019-rhel8",
    "publisher": "MicrosoftSQLServer",
    "sku": "standard",
    "urn": "MicrosoftSQLServer:sql2019-rhel8:standard:15.0.200512",
    "version": "15.0.200512"
       }
    ]
    

    Sanal makineleri oluşturmak için yukarıdaki görüntülerden birini kullanırsanız, 2019 SQL Server önceden yüklenmiştir. Bu makalede açıklandığı gibi SQL Server ve mssql-tools yükleme bölümünü atlayın.

    Önemli

    Kullanılabilirlik grubunu ayarlamak için makine adlarının 15 karakterden kısa olması gerekir. Kullanıcı adı büyük harf karakter içeremez ve parolalarda 12'den fazla karakter olmalıdır.

  2. Kullanılabilirlik kümesinde 3 VM oluşturmak istiyoruz. Aşağıdaki komutta aşağıdakini değiştirin:

    • <resourceGroupName>
    • <VM-basename>
    • <availabilitySetName>
    • <VM-Size> - Örnek olarak "Standard_D16_v3" olabilir
    • <username>
    • <adminPassword>
    for i in `seq 1 3`; do
           az vm create \
             --resource-group <resourceGroupName> \
             --name <VM-basename>$i \
             --availability-set <availabilitySetName> \
             --size "<VM-Size>"  \
             --image "RedHat:RHEL-HA:7.6:7.6.2019062019" \
             --admin-username "<username>" \
             --admin-password "<adminPassword>" \
             --authentication-type all \
             --generate-ssh-keys
    done
    

Yukarıdaki komut VM'leri oluşturur ve bu VM'ler için varsayılan bir sanal ağ oluşturur. Farklı yapılandırmalar hakkında daha fazla bilgi için az vm create makalesine bakın.

Her VM için komut tamamlandıktan sonra aşağıdakine benzer sonuçlar almalısınız:

{
  "fqdns": "",
  "id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<VM1>",
  "location": "eastus2",
  "macAddress": "<Some MAC address>",
  "powerState": "VM running",
  "privateIpAddress": "<IP1>",
  "publicIpAddress": "",
  "resourceGroup": "<resourceGroupName>",
  "zones": ""
}

Önemli

Yukarıdaki komutla oluşturulan varsayılan görüntü, varsayılan olarak 32 GB işletim sistemi diski oluşturur. Bu varsayılan yüklemeyle alanınız tükenebilir. Örnek olarak 128 GB'lık bir işletim sistemi diski oluşturmak için yukarıdaki az vm create komuta eklenen aşağıdaki parametreyi kullanabilirsiniz: --os-disk-size-gb 128.

Daha sonra, yüklemenize uyum sağlamak için uygun klasör birimlerini genişletmeniz gerekiyorsa Mantıksal Birim Yöneticisi'yi (LVM) yapılandırabilirsiniz .

Oluşturulan VM'lere bağlantıyı test etme

Azure Cloud Shell'de aşağıdaki komutu kullanarak VM1'e veya diğer VM'lere bağlanın. VM IP'lerinizi bulamıyorsanız Azure Cloud Shell'da bu Hızlı Başlangıcı izleyin.

ssh <username>@publicipaddress

Bağlantı başarılı olursa Linux terminalini temsil eden aşağıdaki çıkışı görmeniz gerekir:

[<username>@<VM1> ~]$

SSH oturumundan çıkmak için yazın exit .

Yüksek kullanılabilirliği etkinleştirme

Önemli

Öğreticinin bu bölümünü tamamlamak için RHEL ve Yüksek Kullanılabilirlik Eklentisi aboneliğiniz olmalıdır. Önceki bölümde önerilen bir görüntü kullanıyorsanız, başka bir abonelik kaydetmeniz gerekmez.

Her VM düğümüne bağlanın ve HA'yı etkinleştirmek için aşağıdaki kılavuzu izleyin. Daha fazla bilgi için bkz. RHEL için yüksek kullanılabilirlik aboneliğini etkinleştirme.

İpucu

Aynı komutların makale boyunca her VM'de çalıştırılması gerekeceği için vm'lerin her birine aynı anda bir SSH oturumu açarsanız daha kolay olur.

Birden çok sudo komutu kopyalayıp yapıştırıyorsanız ve parola istenirse, ek komutlar çalışmaz. Her komutu ayrı ayrı çalıştırın.

  1. Pacemaker güvenlik duvarı bağlantı noktalarını açmak için her VM'de aşağıdaki komutları çalıştırın:

    sudo firewall-cmd --permanent --add-service=high-availability
    sudo firewall-cmd --reload
    
  2. Aşağıdaki komutları kullanarak Pacemaker paketlerini tüm düğümlere güncelleştirin ve yükleyin:

    Not

    nmap , ağınızdaki kullanılabilir IP adreslerini bulmak için bir araç olarak bu komut bloğunun bir parçası olarak yüklenir. nmap yüklemeniz gerekmez, ancak bu öğreticinin ilerleyen bölümlerinde yararlı olacaktır.

    sudo yum update -y
    sudo yum install -y pacemaker pcs fence-agents-all resource-agents fence-agents-azure-arm nmap
    sudo reboot
    
  3. Pacemaker paketlerini yüklerken oluşturulan varsayılan kullanıcının parolasını ayarlayın. Tüm düğümlerde aynı parolayı kullanın.

    sudo passwd hacluster
    
  4. Konaklar dosyasını açmak ve konak adı çözümlemesini ayarlamak için aşağıdaki komutu kullanın. Daha fazla bilgi için bkz. Konak dosyasını yapılandırma konusunda AG'yi yapılandırma.

    sudo vi /etc/hosts
    

    Vi düzenleyicisinde, metin eklemek için girin i ve boş bir satıra ilgili VM'nin Özel IP'sini ekleyin. Ardından VM adını IP'nin yanındaki bir alanın arkasına ekleyin. Her satırın ayrı bir girişi olmalıdır.

    <IP1> <VM1>
    <IP2> <VM2>
    <IP3> <VM3>
    

    Önemli

    Yukarıda Özel IP adresinizi kullanmanızı öneririz. Bu yapılandırmada Genel IP adresinin kullanılması kurulumun başarısız olmasına neden olur ve VM'nizi dış ağlara kullanıma açmanızı önermeyiz.

    Vi düzenleyicisinden çıkmak için önce Esc tuşuna basın ve ardından dosyayı yazmak ve çıkmak için komutunu :wq girin.

Pacemaker kümesini oluşturma

Bu bölümde pcsd hizmetini etkinleştirip başlatacak ve ardından kümeyi yapılandıracağız. Linux üzerinde SQL Server için küme kaynakları otomatik olarak oluşturulmaz. Pacemaker kaynaklarını el ile etkinleştirmemiz ve oluşturmamız gerekir. Daha fazla bilgi için RHEL için yük devretme kümesi örneğini yapılandırma makalesine bakın

Pcsd hizmetini ve Pacemaker'ı etkinleştirme ve başlatma

  1. Komutları tüm düğümlerde çalıştırın. Bu komutlar, düğümlerin yeniden başlatmadan sonra kümeye yeniden katılmasını sağlar.

    sudo systemctl enable pcsd
    sudo systemctl start pcsd
    sudo systemctl enable pacemaker
    
  2. Tüm düğümlerden mevcut küme yapılandırmasını kaldırın. Şu komutu çalıştırın:

    sudo pcs cluster destroy 
    sudo systemctl enable pacemaker 
    
  3. Birincil düğümde, kümeyi ayarlamak için aşağıdaki komutları çalıştırın.

    • Küme düğümlerinin pcs cluster auth kimliğini doğrulamak için komutunu çalıştırırken bir parola girmeniz istenir. Daha önce oluşturulan hacluster kullanıcısının parolasını girin.

    RHEL7

    sudo pcs cluster auth <VM1> <VM2> <VM3> -u hacluster
    sudo pcs cluster setup --name az-hacluster <VM1> <VM2> <VM3> --token 30000
    sudo pcs cluster start --all
    sudo pcs cluster enable --all
    

    RHEL8

    RHEL 8 için düğümlerin kimliğini ayrı olarak doğrulamanız gerekir. İstendiğinde hacluster kullanıcı adını ve parolasını el ile girin.

    sudo pcs host auth <node1> <node2> <node3>
    sudo pcs cluster setup <clusterName> <node1> <node2> <node3>
    sudo pcs cluster start --all
    sudo pcs cluster enable --all
    
  4. Tüm düğümlerin çevrimiçi olup olmadığını denetlemek için aşağıdaki komutu çalıştırın.

    sudo pcs status
    

    RHEL 7

    Tüm düğümler çevrimiçiyse aşağıdakine benzer bir çıkış görürsünüz:

    Cluster name: az-hacluster
    
    WARNINGS:
    No stonith devices and stonith-enabled is not false
    
    Stack: corosync
    Current DC: <VM2> (version 1.1.19-8.el7_6.5-c3c624ea3d) - partition with quorum
    Last updated: Fri Aug 23 18:27:57 2019
    Last change: Fri Aug 23 18:27:56 2019 by hacluster via crmd on <VM2>
    
    3 nodes configured
    0 resources configured
    
    Online: [ <VM1> <VM2> <VM3> ]
    
    No resources
    
    
    Daemon Status:
          corosync: active/enabled
          pacemaker: active/enabled
          pcsd: active/enabled
    

    RHEL 8

    Cluster name: az-hacluster
    
    WARNINGS:
    No stonith devices and stonith-enabled is not false
    
    Cluster Summary:
    * Stack: corosync
    * Current DC: <VM2> (version 1.1.19-8.el7_6.5-c3c624ea3d) - partition with quorum
    * Last updated: Fri Aug 23 18:27:57 2019
    * Last change: Fri Aug 23 18:27:56 2019 by hacluster via crmd on <VM2>
    * 3 nodes configured
    * 0 resource instances configured
    
    Node List:
    * Online: [ <VM1> <VM2> <VM3> ]
    
    Full List of Resources:
    * No resources
    
    Daemon Status:
          corosync: active/enabled
          pacemaker: active/enabled
          pcsd: active/enabled
    
    
  5. Canlı kümedeki beklenen oyları 3 olarak ayarlayın. Bu komut yalnızca canlı kümeyi etkiler ve yapılandırma dosyalarını değiştirmez.

    Tüm düğümlerde, aşağıdaki komutla beklenen oyları ayarlayın:

    sudo pcs quorum expected-votes 3
    

Eskrim aracısını yapılandırma

STONITH cihazı bir eskrim aracısı sağlar. Bu öğretici için aşağıdaki yönergeler değiştirilmiştir. Daha fazla bilgi için bkz. STONITH cihazı oluşturma.

Güncelleştirildiğinden emin olmak için Azure Fence Aracısının sürümünü denetleyin. Aşağıdaki komutu kullanın:

sudo yum info fence-agents-azure-arm

Aşağıdaki örneğe benzer bir çıkış görmeniz gerekir.

Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
Installed Packages
Name        : fence-agents-azure-arm
Arch        : x86_64
Version     : 4.2.1
Release     : 11.el7_6.8
Size        : 28 k
Repo        : installed
From repo   : rhel-ha-for-rhel-7-server-eus-rhui-rpms
Summary     : Fence agent for Azure Resource Manager
URL         : https://github.com/ClusterLabs/fence-agents
License     : GPLv2+ and LGPLv2+
Description : The fence-agents-azure-arm package contains a fence agent for Azure instances.

Azure Active Directory'de yeni bir uygulama kaydetme

  1. Şuraya gidin: https://portal.azure.com
  2. Azure Active Directory dikey penceresini açın. Özellikler'e gidin ve Dizin Kimliğini yazın. Bu, tenant ID
  3. Uygulama kayıtları'a tıklayın
  4. Yeni kayıt'a tıklayın
  5. gibi <resourceGroupName>-appbir Ad girin, Yalnızca bu kuruluş dizinindeki Hesaplar'ı seçin
  6. Uygulama Türü Web'i seçin, bir oturum açma URL'si girin (örneğin http://localhost) ve Ekle'ye tıklayın). Oturum açma URL'si kullanılmaz ve geçerli herhangi bir URL olabilir. İşiniz bittiğinde Kaydet'e tıklayın
  7. Yeni Uygulama kaydınız için Sertifikalar ve gizli diziler'i seçin, ardından Yeni istemci gizli dizisi'ne tıklayın
  8. Yeni anahtar (istemci gizli dizisi) için bir açıklama girin, Hiçbir zaman süresi dolmaz'ı seçin ve Ekle'ye tıklayın
  9. Gizli dizinin değerini not edin. Hizmet Sorumlusu için parola olarak kullanılır
  10. Genel bakış'ı seçin. Uygulama Kimliği'ni not edin. Hizmet Sorumlusunun kullanıcı adı (aşağıdaki adımlarda oturum açma kimliği) olarak kullanılır

Çit aracısı için özel rol oluşturma

Azure CLI kullanarak Azure özel rolü oluşturma öğreticisini izleyin.

JSON dosyanız aşağıdakine benzer görünmelidir:

  • değerini, seçtiğiniz bir adla değiştirin <username> . Bu, bu rol tanımını oluştururken herhangi bir yinelemeden kaçınmaktır.
  • değerini Azure Abonelik Kimliğiniz ile değiştirin <subscriptionId> .
{
  "Name": "Linux Fence Agent Role-<username>",
  "Id": null,
  "IsCustom": true,
  "Description": "Allows to power-off and start virtual machines",
  "Actions": [
    "Microsoft.Compute/*/read",
    "Microsoft.Compute/virtualMachines/powerOff/action",
    "Microsoft.Compute/virtualMachines/start/action"
  ],
  "NotActions": [
  ],
  "AssignableScopes": [
    "/subscriptions/<subscriptionId>"
  ]
}

Rolü eklemek için aşağıdaki komutu çalıştırın:

  • değerini dosyanın adıyla değiştirin <filename> .
  • Komutu, dosyanın kaydedildiği klasör dışındaki bir yoldan yürütüyorsanız, komutuna dosyanın klasör yolunu ekleyin.
az role definition create --role-definition "<filename>.json"

Aşağıdaki çıkışı görmeniz gerekir:

{
  "assignableScopes": [
    "/subscriptions/<subscriptionId>"
  ],
  "description": "Allows to power-off and start virtual machines",
  "id": "/subscriptions/<subscriptionId>/providers/Microsoft.Authorization/roleDefinitions/<roleNameId>",
  "name": "<roleNameId>",
  "permissions": [
    {
      "actions": [
        "Microsoft.Compute/*/read",
        "Microsoft.Compute/virtualMachines/powerOff/action",
        "Microsoft.Compute/virtualMachines/start/action"
      ],
      "dataActions": [],
      "notActions": [],
      "notDataActions": []
    }
  ],
  "roleName": "Linux Fence Agent Role-<username>",
  "roleType": "CustomRole",
  "type": "Microsoft.Authorization/roleDefinitions"
}

Özel rolü Hizmet Sorumlusuna atama

Son adımda oluşturulan özel rolü Linux Fence Agent Role-<username> Hizmet Sorumlusuna atayın. Artık Sahip rolünü kullanmayın!

  1. Şuraya gidin: https://portal.azure.com
  2. Tüm kaynaklar dikey penceresini açma
  3. İlk küme düğümünün sanal makinesini seçin
  4. Erişim denetimi (IAM) öğesine tıklayın
  5. Rol ataması ekle'ye tıklayın
  6. Rol listesinden rolü Linux Fence Agent Role-<username> seçin
  7. Seç listesinde, yukarıda oluşturduğunuz uygulamanın adını girin,<resourceGroupName>-app
  8. Kaydet’e tıklayın
  9. Yukarıdaki adımları tüm küme düğümü için yineleyin.

STONITH cihazları oluşturma

Düğüm 1'de aşağıdaki komutları çalıştırın:

  • <ApplicationID> değerini uygulama kaydınızdaki kimlik değeriyle değiştirin.
  • <servicePrincipalPassword> değerini istemci gizli anahtarındaki değerle değiştirin.
  • <resourceGroupName> değerini, bu öğretici için kullanılan aboneliğinizdeki kaynak grubuyla değiştirin.
  • <tenantID> ve <subscriptionId> değerini Azure Aboneliğinizden değiştirin.
sudo pcs property set stonith-timeout=900
sudo pcs stonith create rsc_st_azure fence_azure_arm login="<ApplicationID>" passwd="<servicePrincipalPassword>" resourceGroup="<resourceGroupName>" tenantId="<tenantID>" subscriptionId="<subscriptionId>" power_timeout=240 pcmk_reboot_timeout=900

GÜVENLIK duvarımıza HA hizmetine ()--add-service=high-availability izin veren bir kural eklediğimizden, tüm düğümlerde şu güvenlik duvarı bağlantı noktalarını açmanız gerekmez: 2224, 3121, 21064, 5405. Ancak, HA ile ilgili herhangi bir bağlantı sorunu yaşıyorsanız, HA ile ilişkili bu bağlantı noktalarını açmak için aşağıdaki komutu kullanın.

İpucu

Zaman kazanmak için isteğe bağlı olarak bu öğreticideki tüm bağlantı noktalarını aynı anda ekleyebilirsiniz. Açılması gereken bağlantı noktaları aşağıdaki göreli bölümlerinde açıklanmıştır. Tüm bağlantı noktalarını şimdi eklemek isterseniz ek bağlantı noktalarını ekleyin: 1433 ve 5022.

sudo firewall-cmd --zone=public --add-port=2224/tcp --add-port=3121/tcp --add-port=21064/tcp --add-port=5405/tcp --permanent
sudo firewall-cmd --reload

SQL Server ve mssql-tools'u yükleme

Not

RHEL8-HA üzerinde önceden yüklenmiş SQL Server 2019 ile VM'leri oluşturduysanız, SQL Server ve mssql-tools'u yüklemek için aşağıdaki adımları atlayabilir ve tüm VM'lerde sa parolasını ayarladıktan sonra tüm VM'lerde komutunu sudo /opt/mssql/bin/mssql-conf set-sa-password çalıştırarak Kullanılabilirlik Grubu Yapılandırma bölümünü başlatabilirsiniz.

VM'lere SQL Server ve mssql-tools yüklemek için aşağıdaki bölümü kullanın. RHEL 7'de SQL Server 2017'yi veya RHEL 8'de SQL Server 2019'u yüklemek için aşağıdaki örneklerden birini seçebilirsiniz. Bu eylemlerin her birini tüm düğümlerde gerçekleştirin. Daha fazla bilgi için bkz. Red Hat VM'sinde SQL Server yükleme.

VM'lere SQL Server yükleme

SQL Server yüklemek için aşağıdaki komutlar kullanılır:

SQL Server 2017 ile RHEL 7

sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo
sudo yum install -y mssql-server
sudo /opt/mssql/bin/mssql-conf setup
sudo yum install mssql-server-ha

SQL Server 2019 ile RHEL 8

sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2019.repo
sudo yum install -y mssql-server
sudo /opt/mssql/bin/mssql-conf setup
sudo yum install mssql-server-ha

Uzak bağlantılar için güvenlik duvarı bağlantı noktası 1433'i açın

Uzaktan bağlanmak için VM'de 1433 numaralı bağlantı noktasını açmanız gerekir. Her vm'nin güvenlik duvarında 1433 numaralı bağlantı noktasını açmak için aşağıdaki komutları kullanın:

sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
sudo firewall-cmd --reload

SQL Server komut satırı araçlarını yükleme

Aşağıdaki komutlar, SQL Server komut satırı araçlarını yüklemek için kullanılır. Daha fazla bilgi için bkz. SQL Server komut satırı araçlarını yükleme.

RHEL 7

sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo
sudo yum install -y mssql-tools unixODBC-devel

RHEL 8

sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo
sudo yum install -y mssql-tools unixODBC-devel

Not

Kolaylık sağlamak için PATH ortam değişkeninize /opt/mssql-tools/bin/ ekleyin. Bu, tam yolu belirtmeden araçları çalıştırmanızı sağlar. Path'i hem oturum açma oturumları hem de etkileşimli/oturum açma dışı oturumlar için değiştirmek için aşağıdaki komutları çalıştırın:

echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc

SQL Server durumunu denetleme

Yapılandırmayı tamamladıktan sonra SQL Server durumunu denetleyebilirsiniz ve çalıştığını doğrulayabilirsiniz:

systemctl status mssql-server --no-pager

Aşağıdaki çıkışı görmeniz gerekir:

● mssql-server.service - Microsoft SQL Server Database Engine
   Loaded: loaded (/usr/lib/systemd/system/mssql-server.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2019-12-05 17:30:55 UTC; 20min ago
     Docs: https://learn.microsoft.com/sql/linux
 Main PID: 11612 (sqlservr)
   CGroup: /system.slice/mssql-server.service
           ├─11612 /opt/mssql/bin/sqlservr
           └─11640 /opt/mssql/bin/sqlservr

Kullanılabilirlik grubunu yapılandırma

VM'leriniz için SQL Server AlwaysOn kullanılabilirlik grubu yapılandırmak için aşağıdaki adımları kullanın. Daha fazla bilgi için bkz. Linux'ta yüksek kullanılabilirlik için SQL Server AlwaysOn kullanılabilirlik gruplarını yapılandırma

AlwaysOn kullanılabilirlik gruplarını etkinleştirme ve mssql-server'ı yeniden başlatma

bir SQL Server örneği barındıran her düğümde AlwaysOn kullanılabilirlik gruplarını etkinleştirin. Ardından mssql-server'ı yeniden başlatın. Şu betiği çalıştırın:

sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
sudo systemctl restart mssql-server

Sertifika oluşturma

Şu anda AG uç noktasında AD kimlik doğrulamasını desteklemiyoruz. Bu nedenle AG uç nokta şifrelemesi için bir sertifika kullanmalıyız.

  1. SQL Server Management Studio (SSMS) veya SQL CMD kullanarak tüm düğümlere bağlanın. AlwaysOn_health oturumunu etkinleştirmek ve bir ana anahtar oluşturmak için aşağıdaki komutları çalıştırın:

    Önemli

    SQL Server örneğine uzaktan bağlanıyorsanız güvenlik duvarınızda 1433 numaralı bağlantı noktasının açık olması gerekir. Ayrıca her vm için NSG'nizdeki 1433 numaralı bağlantı noktasına gelen bağlantılara izin vermeniz gerekir. Daha fazla bilgi için bkz. Gelen güvenlik kuralı oluşturmak için güvenlik kuralı oluşturma.

    • öğesini <Master_Key_Password> kendi parolanızla değiştirin.
    ALTER EVENT SESSION  AlwaysOn_health ON SERVER WITH (STARTUP_STATE=ON);
    GO
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Master_Key_Password>';
    
  2. SSMS veya SQL CMD kullanarak birincil çoğaltmaya bağlanın. Aşağıdaki komutlar birincil SQL Server çoğaltmanızda bir sertifika /var/opt/mssql/data/dbm_certificate.cer ve konumunda var/opt/mssql/data/dbm_certificate.pvk özel anahtar oluşturur:

    • öğesini <Private_Key_Password> kendi parolanızla değiştirin.
    CREATE CERTIFICATE dbm_certificate WITH SUBJECT = 'dbm';
    GO
    
    BACKUP CERTIFICATE dbm_certificate
       TO FILE = '/var/opt/mssql/data/dbm_certificate.cer'
       WITH PRIVATE KEY (
               FILE = '/var/opt/mssql/data/dbm_certificate.pvk',
               ENCRYPTION BY PASSWORD = '<Private_Key_Password>'
           );
    GO
    

komutunu çalıştırarak SQL CMD oturumundan exit çıkın ve SSH oturumunuza geri dönün.

Sertifikayı ikincil çoğaltmalara kopyalayın ve sunucuda sertifikaları oluşturun

  1. Oluşturulan iki dosyayı kullanılabilirlik çoğaltmalarını barındıracak tüm sunucularda aynı konuma kopyalayın.

    Birincil sunucuda aşağıdaki scp komutu çalıştırarak sertifikayı hedef sunuculara kopyalayın:

    • ve <VM2> değerini, kullandığınız kullanıcı adı ve hedef VM adıyla değiştirin<username>.
    • Tüm ikincil çoğaltmalar için bu komutu çalıştırın.

    Not

    komutunu çalıştırmanız sudo -igerekmez ve bu da size kök ortamı sağlar. Bu öğreticide sudo daha önce yaptığımız gibi komutu her komutun önünde çalıştırabilirsiniz.

    # The below command allows you to run commands in the root environment
    sudo -i
    
    scp /var/opt/mssql/data/dbm_certificate.* <username>@<VM2>:/home/<username>
    
  2. Hedef sunucuda aşağıdaki komutu çalıştırın:

    • değerini kullanıcı adınız ile değiştirin <username> .
    • Komut, mv dosyaları veya dizini bir yerden diğerine taşır.
    • Komutu chown dosya, dizin veya bağlantı sahibini ve grubunu değiştirmek için kullanılır.
    • Tüm ikincil çoğaltmalar için bu komutları çalıştırın.
    sudo -i
    mv /home/<username>/dbm_certificate.* /var/opt/mssql/data/
    cd /var/opt/mssql/data
    chown mssql:mssql dbm_certificate.*
    
  3. Aşağıdaki Transact-SQL betiği, birincil SQL Server çoğaltmada oluşturduğunuz yedekten bir sertifika oluşturur. Betiği güçlü parolalarla güncelleştirin. Şifre çözme parolası, önceki adımda .pvk dosyasını oluşturmak için kullandığınız parolayla aynıdır. Sertifikayı oluşturmak için tüm ikincil sunucularda SQL CMD veya SSMS kullanarak aşağıdaki betiği çalıştırın:

    CREATE CERTIFICATE dbm_certificate
        FROM FILE = '/var/opt/mssql/data/dbm_certificate.cer'
        WITH PRIVATE KEY (
        FILE = '/var/opt/mssql/data/dbm_certificate.pvk',
        DECRYPTION BY PASSWORD = '<Private_Key_Password>'
                );
    GO
    

Tüm çoğaltmalarda veritabanı yansıtma uç noktalarını oluşturma

SQL CMD veya SSMS kullanarak tüm SQL Server örneklerinde aşağıdaki betiği çalıştırın:

CREATE ENDPOINT [Hadr_endpoint]
    AS TCP (LISTENER_PORT = 5022)
    FOR DATABASE_MIRRORING (
    ROLE = ALL,
    AUTHENTICATION = CERTIFICATE dbm_certificate,
ENCRYPTION = REQUIRED ALGORITHM AES
);
GO

ALTER ENDPOINT [Hadr_endpoint] STATE = STARTED;
GO

Kullanılabilirlik grubunu oluşturma

SQL CMD veya SSMS kullanarak birincil çoğaltmayı barındıran SQL Server örneğine bağlanın. Kullanılabilirlik grubunu oluşturmak için aşağıdaki komutu çalıştırın:

  • değerini istediğiniz Kullanılabilirlik Grubu adıyla değiştirin ag1 .
  • <VM1>, <VM2>ve <VM3> değerlerini, çoğaltmaları barındıran SQL Server örneklerinin adlarıyla değiştirin.
CREATE AVAILABILITY GROUP [ag1]
     WITH (DB_FAILOVER = ON, CLUSTER_TYPE = EXTERNAL)
     FOR REPLICA ON
         N'<VM1>'
          WITH (
             ENDPOINT_URL = N'tcp://<VM1>:5022',
             AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
             FAILOVER_MODE = EXTERNAL,
             SEEDING_MODE = AUTOMATIC
             ),
         N'<VM2>'
          WITH (
             ENDPOINT_URL = N'tcp://<VM2>:5022',
             AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
             FAILOVER_MODE = EXTERNAL,
             SEEDING_MODE = AUTOMATIC
             ),
         N'<VM3>'
         WITH(
            ENDPOINT_URL = N'tcp://<VM3>:5022',
            AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
            FAILOVER_MODE = EXTERNAL,
            SEEDING_MODE = AUTOMATIC
            );
GO

ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;
GO

Pacemaker için SQL Server oturum açma bilgileri oluşturma

Tüm SQL Server örneklerde Pacemaker için SQL Server oturum açma bilgileri oluşturun. Aşağıdaki Transact-SQL bir oturum açma bilgisi oluşturur.

  • değerini kendi karmaşık parolanızla değiştirin <password> .
USE [master]
GO

CREATE LOGIN [pacemakerLogin] with PASSWORD= N'<password>';
GO

ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
GO

Tüm SQL Server örneklerde, SQL Server oturum açma bilgileri için kullanılan kimlik bilgilerini kaydedin.

  1. Dosyayı oluşturun:

    sudo vi /var/opt/mssql/secrets/passwd
    
  2. Dosyaya aşağıdaki 2 satırı ekleyin:

    pacemakerLogin
    <password>
    

    Vi düzenleyicisinden çıkmak için önce Esc tuşuna basın ve ardından dosyayı yazıp çıkmak için komutunu :wq girin.

  3. Dosyayı yalnızca kök tarafından okunabilir hale getirin:

    sudo chown root:root /var/opt/mssql/secrets/passwd
    sudo chmod 400 /var/opt/mssql/secrets/passwd
    

İkincil çoğaltmaları kullanılabilirlik grubuna ekleme

  1. İkincil çoğaltmaları AG'ye eklemek için tüm sunucular için güvenlik duvarında 5022 numaralı bağlantı noktasını açmanız gerekir. SSH oturumunuzda aşağıdaki komutu çalıştırın:

    sudo firewall-cmd --zone=public --add-port=5022/tcp --permanent
    sudo firewall-cmd --reload
    
  2. İkincil çoğaltmalarınızda aşağıdaki komutları çalıştırarak bunları AG'ye ekleyin:

    ALTER AVAILABILITY GROUP [ag1] JOIN WITH (CLUSTER_TYPE = EXTERNAL);
    GO
    
    ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;
    GO
    
  3. Birincil çoğaltmada ve her ikincil çoğaltmada aşağıdaki Transact-SQL betiğini çalıştırın:

    GRANT ALTER, CONTROL, VIEW DEFINITION ON AVAILABILITY GROUP::ag1 TO pacemakerLogin;
    GO
    
    GRANT VIEW SERVER STATE TO pacemakerLogin;
    GO
    
  4. İkincil çoğaltmalar birleştirildikten sonra Always On Yüksek Kullanılabilirlik düğümünü genişleterek bunları SSMS Nesne Gezgini görebilirsiniz:

    Birincil ve ikincil kullanılabilirlik çoğaltmalarını gösteren ekran görüntüsü.

Kullanılabilirlik grubuna veritabanı ekleme

Veritabanı eklemeyle ilgili kullanılabilirlik grubu yapılandırma makalesini izleyeceğiz.

Bu adımda aşağıdaki Transact-SQL komutları kullanılır. Birincil çoğaltmada şu komutları çalıştırın:

CREATE DATABASE [db1]; -- creates a database named db1
GO

ALTER DATABASE [db1] SET RECOVERY FULL; -- set the database in full recovery mode
GO

BACKUP DATABASE [db1] -- backs up the database to disk
   TO DISK = N'/var/opt/mssql/data/db1.bak';
GO

ALTER AVAILABILITY GROUP [ag1] ADD DATABASE [db1]; -- adds the database db1 to the AG
GO

Veritabanının ikincil sunucularda oluşturulduğunu doğrulayın

Her ikincil SQL Server çoğaltmasında, db1 veritabanının oluşturulup oluşturulmadığını ve EŞITLENMİ DURUMDA olup olmadığını görmek için aşağıdaki sorguyu çalıştırın:

SELECT * FROM sys.databases WHERE name = 'db1';
GO
SELECT DB_NAME(database_id) AS 'database', synchronization_state_desc FROM sys.dm_hadr_database_replica_states;

synchronization_state_desc listeleri için db1EŞITLENMİRse, bu çoğaltmaların eşitlenmiş olduğu anlamına gelir. İkinciller birincil çoğaltmada gösteriliyor db1 .

Pacemaker kümesinde kullanılabilirlik grubu kaynakları oluşturma

Pacemaker kümesinde kullanılabilirlik grubu kaynaklarını oluşturmak için kılavuzu takip edeceğiz.

Not

Bu makale, Microsoft'un artık kullanmadığını ifade eden bağımlı terimine başvurular içerir. Terim yazılımdan kaldırıldığında, bu makaleden kaldıracağız.

AG küme kaynağını oluşturma

  1. Kullanılabilirlik grubunda ag1kaynağı ag_cluster oluşturmak için daha önce seçilen ortama göre aşağıdaki komutlardan birini kullanın.

    RHEL 7

    sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=30s master notify=true
    

    RHEL 8

    sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=30s promotable notify=true
    
  2. Aşağıdaki komutu kullanarak devam etmeden önce kaynağınızı denetleyin ve çevrimiçi olduklarından emin olun:

    sudo pcs resource
    

    Aşağıdaki çıkışı görmeniz gerekir:

    RHEL 7

    [<username>@VM1 ~]$ sudo pcs resource
    Master/Slave Set: ag_cluster-master [ag_cluster]
    Masters: [ <VM1> ]
    Slaves: [ <VM2> <VM3> ]
    

    RHEL 8

    [<username>@VM1 ~]$ sudo pcs resource
    * Clone Set: ag_cluster-clone [ag_cluster] (promotable):
    * ag_cluster             (ocf::mssql:ag) :            Slave VMrhel3 (Monitoring) 
    * ag_cluster             (ocf::mssql:ag) :            Master VMrhel1 (Monitoring)
    * ag_cluster             (ocf::mssql:ag) :            Slave VMrhel2 (Monitoring)
    

Sanal IP kaynağı oluşturma

  1. Sanal IP kaynağı oluşturmak için ağınızdan kullanılabilir bir statik IP adresi kullanın. Komut aracını nmapkullanarak bir tane bulabilirsiniz.

    nmap -sP <IPRange>
    # For example: nmap -sP 10.0.0.*
    # The above will scan for all IP addresses that are already occupied in the 10.0.0.x space.
    
  2. Stonith özellikli özelliği false olarak ayarlayın

    sudo pcs property set stonith-enabled=false
    
  3. Aşağıdaki komutu kullanarak sanal IP kaynağını oluşturun:

    • <availableIP> Aşağıdaki değeri kullanılmayan bir IP adresiyle değiştirin.
    sudo pcs resource create virtualip ocf:heartbeat:IPaddr2 ip=<availableIP>
    

Kısıtlama ekleme

  1. IP adresinin ve AG kaynağının aynı düğümde çalıştığından emin olmak için bir birlikte bulundurma kısıtlaması yapılandırılmalıdır. Şu komutu çalıştırın:

    RHEL 7

    sudo pcs constraint colocation add virtualip ag_cluster-master INFINITY with-rsc-role=Master
    

    RHEL 8

     sudo pcs constraint colocation add virtualip with master ag_cluster-clone INFINITY with-rsc-role=Master
    
  2. AG kaynağının IP adresinden önce çalışır durumda olduğundan emin olmak için bir sıralama kısıtlaması oluşturun. Birlikte bulundurma kısıtlaması bir sıralama kısıtlaması anlamına gelir, ancak bu bunu zorlar.

    RHEL 7

    sudo pcs constraint order promote ag_cluster-master then start virtualip
    

    RHEL 8

    sudo pcs constraint order promote ag_cluster-clone then start virtualip
    
  3. Kısıtlamaları doğrulamak için aşağıdaki komutu çalıştırın:

    sudo pcs constraint list --full
    

    Aşağıdaki çıkışı görmeniz gerekir:

    RHEL 7

    Location Constraints:
    Ordering Constraints:
          promote ag_cluster-master then start virtualip (kind:Mandatory) (id:order-ag_cluster-master-virtualip-mandatory)
    Colocation Constraints:
          virtualip with ag_cluster-master (score:INFINITY) (with-rsc-role:Master) (id:colocation-virtualip-ag_cluster-master-INFINITY)
    Ticket Constraints:
    

    RHEL 8

    Location Constraints:
    Ordering Constraints:
            promote ag_cluster-clone then start virtualip (kind:Mandatory) (id:order-ag_cluster-clone-virtualip-mandatory)
    Colocation Constraints:
            virtualip with ag_cluster-clone (score:INFINITY) (with-rsc-role:Master) (id:colocation-virtualip-ag_cluster-clone-INFINITY)
    Ticket Constraints:
    

Stonith'i yeniden etkinleştirme

Test için hazırız. Node 1'de aşağıdaki komutu çalıştırarak kümede stonith'i yeniden etkinleştirin:

sudo pcs property set stonith-enabled=true

Küme durumunu denetleme

Küme kaynaklarınızın durumunu denetlemek için aşağıdaki komutu kullanabilirsiniz:

[<username>@VM1 ~]$ sudo pcs status
Cluster name: az-hacluster
Stack: corosync
Current DC: <VM3> (version 1.1.19-8.el7_6.5-c3c624ea3d) - partition with quorum
Last updated: Sat Dec  7 00:18:38 2019
Last change: Sat Dec  7 00:18:02 2019 by root via cibadmin on VM1

3 nodes configured
5 resources configured

Online: [ <VM1> <VM2> <VM3> ]

Full list of resources:

 Master/Slave Set: ag_cluster-master [ag_cluster]
     Masters: [ <VM2> ]
     Slaves: [ <VM1> <VM3> ]
 virtualip      (ocf::heartbeat:IPaddr2):       Started <VM2>
 rsc_st_azure   (stonith:fence_azure_arm):      Started <VM1>

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

Yük devretme testi

Yapılandırmanın şu ana kadar başarılı olduğundan emin olmak için yük devretme testi yapacağız. Daha fazla bilgi için bkz. Linux'ta Always On kullanılabilirlik grubu yük devretmesi.

  1. Birincil çoğaltmaya el ile yük devretmek için <VM2>aşağıdaki komutu çalıştırın. değerini sunucu adınızın değeriyle değiştirin <VM2> .

    RHEL 7

    sudo pcs resource move ag_cluster-master <VM2> --master
    

    RHEL 8

    sudo pcs resource move ag_cluster-clone <VM2> --master
    

    Ayrıca, kaynağı istenen düğüme taşımak için oluşturulan geçici kısıtlamanın otomatik olarak devre dışı bırakılması ve aşağıdaki 2. ve 3. adımları gerçekleştirmeniz gerekmemesi için ek bir seçenek belirtebilirsiniz.

    RHEL 7

    sudo pcs resource move ag_cluster-master <VM2> --master lifetime=30S
    

    RHEL 8

    sudo pcs resource move ag_cluster-clone <VM2> --master lifetime=30S
    

    Kaynak taşıma komutunun kendisindeki geçici kısıtlamayı temizleyen 2. ve 3. adımları otomatikleştirmenin bir diğer alternatifi de birden çok komutu tek satırda birleştirmektir.

    RHEL 7

    sudo pcs resource move ag_cluster-master <VM2> --master && sleep 30 && pcs resource clear ag_cluster-master
    

    RHEL 8

    sudo pcs resource move ag_cluster-clone <VM2> --master && sleep 30 && pcs resource clear ag_cluster-clone
    
  2. Kısıtlamalarınızı yeniden denetlerseniz el ile yük devretme nedeniyle başka bir kısıtlama eklendiğini görürsünüz:

    RHEL 7

    [<username>@VM1 ~]$ sudo pcs constraint list --full
    Location Constraints:
          Resource: ag_cluster-master
            Enabled on: VM2 (score:INFINITY) (role: Master) (id:cli-prefer-ag_cluster-master)
    Ordering Constraints:
            promote ag_cluster-master then start virtualip (kind:Mandatory) (id:order-ag_cluster-master-virtualip-mandatory)
    Colocation Constraints:
            virtualip with ag_cluster-master (score:INFINITY) (with-rsc-role:Master) (id:colocation-virtualip-ag_cluster-master-INFINITY)
    Ticket Constraints:
    

    RHEL 8

    [<username>@VM1 ~]$ sudo pcs constraint list --full
    Location Constraints:
          Resource: ag_cluster-master
            Enabled on: VM2 (score:INFINITY) (role: Master) (id:cli-prefer-ag_cluster-clone)
    Ordering Constraints:
            promote ag_cluster-clone then start virtualip (kind:Mandatory) (id:order-ag_cluster-clone-virtualip-mandatory)
    Colocation Constraints:
            virtualip with ag_cluster-clone (score:INFINITY) (with-rsc-role:Master) (id:colocation-virtualip-ag_cluster-clone-INFINITY)
    Ticket Constraints:
    
  3. Aşağıdaki komutu kullanarak id cli-prefer-ag_cluster-master ile kısıtlamayı kaldırın:

    RHEL 7

    sudo pcs constraint remove cli-prefer-ag_cluster-master
    

    RHEL 8

    sudo pcs constraint remove cli-prefer-ag_cluster-clone
    
  4. komutunu sudo pcs resourcekullanarak küme kaynaklarınızı denetleyin ve birincil örneğin şimdi <VM2>olduğunu görmeniz gerekir.

    [<username>@<VM1> ~]$ sudo pcs resource
    Master/Slave Set: ag_cluster-master [ag_cluster]
         ag_cluster (ocf::mssql:ag):        FAILED <VM1> (Monitoring)
         Masters: [ <VM2> ]
         Slaves: [ <VM3> ]
    virtualip      (ocf::heartbeat:IPaddr2):       Started <VM2>
    [<username>@<VM1> ~]$ sudo pcs resource
    Master/Slave Set: ag_cluster-master [ag_cluster]
         Masters: [ <VM2> ]
         Slaves: [ <VM1> <VM3> ]
    virtualip      (ocf::heartbeat:IPaddr2):       Started <VM2>
    

Test eskrim

Aşağıdaki komutu çalıştırarak STONITH'i test edebilirsiniz. için <VM3>aşağıdaki komutu çalıştırmayı <VM1> deneyin.

sudo pcs stonith fence <VM3> --debug

Not

Varsayılan olarak, çit eylemi düğümü kapatıp açar. Düğümü yalnızca çevrimdışına almak istiyorsanız komuttaki seçeneğini --off kullanın.

Aşağıdaki çıkışı almalısınız:

[<username>@<VM1> ~]$ sudo pcs stonith fence <VM3> --debug
Running: stonith_admin -B <VM3>
Return Value: 0
--Debug Output Start--
--Debug Output End--
 
Node: <VM3> fenced

Çit cihazını test etme hakkında daha fazla bilgi için aşağıdaki Red Hat makalesine bakın.

Sonraki adımlar

SQL Server örneklerinizde kullanılabilirlik grubu dinleyicisini kullanmak için yük dengeleyici oluşturup yapılandırmanız gerekir.