Aracılığıyla paylaş


Öğretici: Azure'da 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 RHEL 7.6 ile SQL Server 2017 (14.x) kullanıyoruz, ancak yüksek kullanılabilirliği yapılandırmak için RHEL 7 veya RHEL 8'de SQL Server 2019 (15.x) kullanmak mümkündür. RHEL 8'de Pacemaker kümesi ve kullanılabilirlik grubu kaynaklarını yapılandırma komutları 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 atabilirsiniz.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Yeni bir 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 Always On 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 kaynakları dağıtmak için Azure CLI kullanılır.

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

Önkoşullar

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

  • 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, 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 öğesini kaynak grubu adınızla 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ılabilirlik (HA) yapılandırdıysanız aboneliğinizi kaydetmeniz gerekebilir. Bu durum, vm için Microsoft Azure RHEL aboneliği ve Red Hat aboneliği için sizden ücret alınacağından abonelik için iki kez ödeme yapılmasına 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 etkinleştirilmiş 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ülerine önceden yüklenmiş SQL Server 2019 (15.x) seçeneğini de belirleyebilirsiniz. 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, SQL Server 2019 (15.x) ö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 parolaların 12 karakterden fazla olması gerekir.

  2. Kullanılabilirlik kümesinde 3 VM oluşturmak istiyoruz. Aşağıdaki komutta bu değerleri 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 büyük olasılıkla alanınız tükenebilir. Yukarıdaki komuta eklenen aşağıdaki parametreyi az vm create kullanarak örnek olarak 128 GB'lık bir işletim sistemi diski oluşturabilirsiniz: --os-disk-size-gb 128.

Ardından, yüklemenize uyum sağlamak için uygun klasör birimlerini genişletmeniz gerekiyorsa Mantıksal Birim Yöneticisi'ne (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'de 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 bu 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ı gerektiğinden, 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 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 ana bilgisayar 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 karşılık gelen 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

    Önceki örnekte Ö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'nizin dış ağlara açık olmasını ö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şlatıp kümeyi yapılandıracaksınız. Linux üzerinde SQL Server için küme kaynakları otomatik olarak oluşturulmaz. Pacemaker kaynaklarını el ile etkinleştirmeniz ve oluşturmanı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 her düğüm yeniden başlatıldıktan 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. Kümeyi ayarlamak için birincil düğümde 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 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ğıdaki örneğe 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

Bir eskrim aracısını yapılandırmak için, bu öğreticide aşağıdaki yönergeler değiştirilir. Daha fazla bilgi için bkz . STONITH cihazı oluşturma.

Güncelleştirildiğinden emin olmak için Azure Çit 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.

Microsoft Entra Id'de yeni bir uygulama kaydetme

Microsoft Entra Id'ye (eski adıYla Azure Active Directory) yeni bir uygulama kaydetmek için şu adımları izleyin:

  1. Şuraya git: https://portal.azure.com .
  2. Microsoft Entra ID Özellikleri bölmesini açın ve yazınTenant ID.
  3. Uygulama kayıtları’nı seçin.
  4. Yeni kayıt öğesini seçin.
  5. gibi <resourceGroupName>-appbir Ad girin. Desteklenen hesap türleri için Yalnızca bu kuruluş dizinindeki hesaplar 'ı seçin (yalnızca Microsoft - Tek kiracı).
  6. Yeniden Yönlendirme URI'si için Web'i seçin ve bir URL (örneğin, http://localhost) girin ve Ekle'yi seçin. Oturum açma URL'si herhangi bir geçerli URL olabilir. İşiniz bittiğinde Kaydet'i seçin.
  7. Yeni Uygulama kaydınız için Sertifikalar ve gizli diziler'i ve ardından Yeni istemci gizli dizisi'ni seçin.
  8. Yeni anahtar (istemci gizli dizisi) için bir açıklama girin ve Ekle'yi seçin.
  9. Gizli dizinin değerini not edin. Hizmet sorumlusunun parolası olarak kullanılır.
  10. Genel bakış'ı seçin. Uygulama Kimliğini 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ğıdaki örneğe benzer görünmelidir:

  • değerini, seçtiğiniz bir adla değiştirin <username> . Bu, bu rol tanımını oluştururken yinelenenleri önlemektir.
  • 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örden farklı 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 Sorumlusu'na atayın. Artık Sahip rolünü kullanmayın.

  1. Şuraya gidin: https://portal.azure.com
  2. Tüm kaynaklar bölmesini açma
  3. İlk küme düğümünün sanal makinesini seçin
  4. Erişim denetimi (IAM) öğesini seçin
  5. Rol ataması ekle'yi seçin
  6. Rol listesinden rolü Linux Fence Agent Role-<username> seçin
  7. Seç listesinde, daha önce oluşturduğunuz uygulamanın adını girin,<resourceGroupName>-app
  8. Kaydet'i seçin.
  9. Tüm küme düğümleri için bu adımları yineleyin.

STONITH cihazlarını oluşturma

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

  • değerini <ApplicationID> uygulama kaydınızdaki kimlik değeriyle değiştirin.
  • değerini <servicePrincipalPassword> istemci gizli dizisinden gelen değerle değiştirin.
  • öğesini <resourceGroupName> , bu öğretici için kullanılan aboneliğinizdeki kaynak grubuyla değiştirin.
  • ve değerini <tenantID> <subscriptionId> 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

HA hizmetine ()--add-service=high-availability izin vermek için güvenlik duvarımıza zaten 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ı, izleyen ilgili 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

SQL Server 2019 (15.x) ile VM'leri RHEL8-HA'da önceden yüklenmiş olarak 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'ye SQL Server 2017 (14.x) veya RHEL 8'de SQL Server 2019 (15.x) 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

SQL Server komut satırı araçlarını yüklemek için aşağıdaki komutlar 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. Hem oturum açma oturumları hem de etkileşimli/oturum açma dışı oturumlar için PATH'i 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'ın durumunu denetleme

Yapılandırmayı tamamladıktan sonra SQL Server'ın 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 bir SQL Server Always On 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 Always On kullanılabilirlik gruplarını yapılandırma.

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

Sql Server örneğini barındıran her düğümde Always On 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 sqlcmd 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 sqlcmd 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 sqlcmd 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ğaltması üzerinde oluşturduğunuz yedeklemeden 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 sqlcmd 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

sqlcmd 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

sqlcmd 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 oturumu oluşturma

Tüm SQL Server örneklerinde Pacemaker için bir SQL Server oturumu 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 örneklerinde, 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 satırları ekleyin:

    pacemakerLogin
    <password>
    

    Vi düzenleyicisinden çıkmak için önce Esc tuşuna basın ve ardından dosyayı yazmak ve çı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 grubunu yapılandırma makalesini takip ediyoruz.

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 model
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 aşağıdaki sorguyu çalıştırarak db1 veritabanının oluşturulup oluşturulmadığını ve EŞITLENDİ durumda olup olmadığını denetleyin:

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ŞITLENDİyse, 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 ediyoruz.

Not

Tarafsız iletişim

Bu makalede, Microsoft'un bu bağlamda kullanıldığında rahatsız edici olarak değerlendiren bağımlı terimine yönelik başvurular yer alır. Terim şu anda yazılımda göründüğünden bu makalede görünür. Terim yazılımdan kaldırıldığında, bunu 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. Devam etmeden önce aşağıdaki komutu kullanarak kaynaklarınızın çevrimiçi olduğundan 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. yerine kullanılmayan bir IP adresi yazın <availableIP> .

    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 birlikte bulundurma kısıtlamasının yapılandırılması gerekir. Ş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. Düğüm 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 yapıyoruz. 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 yönergelerde 2. ve 3. adımları gerçekleştirmeniz gerekmesi 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 komutundaki geçici kısıtlamayı temizleyen 2. ve 3. adımları otomatikleştirmenin bir diğer alternatifi de birden çok komutu tek bir 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 artık <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 eskrim 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ım