Aracılığıyla paylaş


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

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

Dekont

Bu öğreticide SUSE Linux Enterprise Server (SLES) v15 ile SQL Server 2022 (16.x) kullanıyoruz, ancak yüksek kullanılabilirliği yapılandırmak için SLES v12 veya SLES v15 ile SQL Server 2019 (15.x) kullanmak mümkündür.

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
  • SLES'e 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 öğreticide East US 2 kullanılır. 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": []
}

Sanal ağ ve alt ağ oluşturma

  1. Önceden atanmış ip adresi aralığına sahip adlandırılmış bir alt ağ oluşturun. Aşağıdaki komutta bu değerleri değiştirin:

    • <resourceGroupName>
    • <vNetName>
    • <subnetName>
    az network vnet create \
        --resource-group <resourceGroupName> \
        --name <vNetName> \
        --address-prefix 10.1.0.0/16 \
        --subnet-name <subnetName> \
        --subnet-prefix 10.1.1.0/24
    

    Önceki komut bir sanal ağ ve özel IP aralığı içeren bir alt ağ oluşturur.

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

  1. BYOS ile SLES v15 SP4 sunan sanal makine görüntülerinin listesini alın (kendi aboneliğinizi getirin). SUSE Enterprise Linux 15 SP4 + Düzeltme Eki Uygulama VM'sini (sles-15-sp4-basic) de kullanabilirsiniz.

    az vm image list --all --offer "sles-15-sp3-byos"
    # if you want to search the basic offers you could search using the command below
    az vm image list --all --offer "sles-15-sp3-basic"
    

    BYOS görüntülerini ararken aşağıdaki sonuçları görmeniz gerekir:

    [
       {
          "offer": "sles-15-sp3-byos",
          "publisher": "SUSE",
          "sku": "gen1",
          "urn": "SUSE:sles-15-sp3-byos:gen1:2022.05.05",
          "version": "2022.05.05"
       },
       {
          "offer": "sles-15-sp3-byos",
          "publisher": "SUSE",
          "sku": "gen1",
          "urn": "SUSE:sles-15-sp3-byos:gen1:2022.07.19",
          "version": "2022.07.19"
       },
       {
          "offer": "sles-15-sp3-byos",
          "publisher": "SUSE",
          "sku": "gen1",
          "urn": "SUSE:sles-15-sp3-byos:gen1:2022.11.10",
          "version": "2022.11.10"
       },
       {
          "offer": "sles-15-sp3-byos",
          "publisher": "SUSE",
          "sku": "gen2",
          "urn": "SUSE:sles-15-sp3-byos:gen2:2022.05.05",
          "version": "2022.05.05"
       },
       {
          "offer": "sles-15-sp3-byos",
          "publisher": "SUSE",
          "sku": "gen2",
          "urn": "SUSE:sles-15-sp3-byos:gen2:2022.07.19",
          "version": "2022.07.19"
       },
       {
          "offer": "sles-15-sp3-byos",
          "publisher": "SUSE",
          "sku": "gen2",
          "urn": "SUSE:sles-15-sp3-byos:gen2:2022.11.10",
          "version": "2022.11.10"
       }
    ]
    

    Bu öğreticide SUSE:sles-15-sp3-byos:gen1:2022.11.10 kullanılır.

    Önemli

    Kullanılabilirlik grubu ayarlamak için makine adlarının uzunluğu 15 karakterden kısa olmalıdır. Kullanıcı adları büyük harf karakter içeremez ve parolalar 12 ile 72 karakter arasında olmalıdır.

  2. Kullanılabilirlik kümesinde üç VM oluşturun. Aşağıdaki komutta bu değerleri değiştirin:

    • <resourceGroupName>
    • <VM-basename>
    • <availabilitySetName>
    • <VM-Size> - Örnek olarak "Standard_D16s_v3" olabilir
    • <username>
    • <adminPassword>
    • <vNetName>
    • <subnetName>
    for i in `seq 1 3`; do
        az vm create \
           --resource-group <resourceGroupName> \
           --name <VM-basename>$i \
           --availability-set <availabilitySetName> \
           --size "<VM-Size>" \
           --os-disk-size-gb 128 \
           --image "SUSE:sles-15-sp3-byos:gen1:2022.11.10" \
           --admin-username "<username>" \
           --admin-password "<adminPassword>" \
           --authentication-type all \
           --generate-ssh-keys \
           --vnet-name "<vNetName>" \
           --subnet "<subnetName>" \
           --public-ip-sku Standard \
           --public-ip-address ""
        done
    

Önceki komut, önceden tanımlanmış sanal ağı kullanarak VM'leri oluşturur. Farklı yapılandırmalar hakkında daha fazla bilgi için az vm create makalesine bakın.

Komut ayrıca 128 GB'lık özel bir işletim sistemi sürücüsü boyutu oluşturmak için parametresini de içerir --os-disk-size-gb . Bu boyutu daha sonra büyütürseniz, yüklemenize uyum sağlamak için uygun klasör birimlerini genişletin, Mantıksal Birim Yöneticisi'ni (LVM) yapılandırı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/sles1",
  "location": "westus",
  "macAddress": "<Some MAC address>",
  "powerState": "VM running",
  "privateIpAddress": "<IP1>",
  "resourceGroup": "<resourceGroupName>",
  "zones": ""
}

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

Azure Cloud Shell'de aşağıdaki komutu kullanarak vm'lerin her birine Bağlan. 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>@sles1 ~]$

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

SUSE Bağlan ile kaydolun ve yüksek kullanılabilirlik paketleri yükleyin

Bu öğreticiyi tamamlamak için VM'lerinizin güncelleştirmeleri ve desteği almak için SUSE Bağlan'ye kayıtlı olması gerekir. Daha sonra Yüksek Kullanılabilirlik Uzantısı modülünü veya HA'yı etkinleştiren bir paket kümesi olan deseni yükleyebilirsiniz.

Aynı komutların makale boyunca her vm üzerinde çalıştırılması gerektiğinden, vm'lerin (düğümlerin) her birinde aynı anda bir SSH oturumu açmak daha kolaydır.

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.

Aşağıdaki adımları çalıştırmak için her VM düğümüne Bağlan.

VM'yi SUSE ile kaydedin Bağlan

VM düğümünüzü SUSE'ye kaydetmek için Bağlan aşağıdaki komuttaki bu değerleri tüm düğümlerde değiştirin:

  • <subscriptionEmailAddress>
  • <registrationCode>
sudo SUSEConnect
    --url=https://scc.suse.com
    -e <subscriptionEmailAddress> \
    -r <registrationCode>

Yüksek Kullanılabilirlik Uzantısını Yükleme

Yüksek Kullanılabilirlik Uzantısı'nı yüklemek için tüm düğümlerde aşağıdaki komutu çalıştırın:

sudo SUSEConnect -p sle-ha/15.3/x86_64 -r <registration code for Partner Subscription for High Availability Extension>

Düğümler arasında parolasız SSH erişimini yapılandırma

Parolasız SSH erişimi, VM'lerinizin SSH ortak anahtarlarını kullanarak birbirleriyle iletişim kurmasını sağlar. Her düğümde SSH anahtarları yapılandırmanız ve bu anahtarları her düğüme kopyalamanız gerekir.

Yeni SSH anahtarları oluşturma

Gerekli SSH anahtarı boyutu 4.096 bittir. Her VM'de klasörüne /root/.ssh geçin ve aşağıdaki komutu çalıştırın:

ssh-keygen -t rsa -b 4096

Bu adım sırasında, mevcut bir SSH dosyasının üzerine yazmanız istenebilir. Bu istemi kabul etmeniz gerekir. Parola girmeniz gerekmez.

Genel SSH anahtarlarını kopyalama

Her VM'de, komutunu kullanarak ssh-copy-id yeni oluşturduğunuz düğümden ortak anahtarı kopyalamanız gerekir. Hedef VM'de hedef dizini belirtmek istiyorsanız parametresini -i kullanabilirsiniz.

Aşağıdaki komutta <username> hesap, VM'yi oluştururken her düğüm için yapılandırdığınız hesapla aynı olabilir. Hesabı da kullanabilirsiniz root , ancak bu bir üretim ortamında önerilmez.

sudo ssh-copy-id <username>@sles1
sudo ssh-copy-id <username>@sles2
sudo ssh-copy-id <username>@sles3

Her düğümden parolasız erişimi doğrulama

SSH ortak anahtarının her düğüme kopyalandığını onaylamak için her düğümden komutunu kullanın ssh . Anahtarları doğru kopyaladıysanız, parola girmeniz istenmez ve bağlantı başarılı olur.

Bu örnekte, ilk VM'den (sles1) ikinci ve üçüncü düğümlere bağlanıyoruz. Bir kez daha hesap, <username> VM'yi oluştururken her düğüm için yapılandırdığınız hesapla aynı olabilir

ssh <username>@sles2
ssh <username>@sles3

Her düğümün parola gerektirmeden diğerleriyle iletişim kurabilmesi için bu işlemi üç düğümden de yineleyin.

Ad çözümlemeyi yapılandırma

Ad çözümlemesini DNS kullanarak veya dosyayı her düğümde etc/hosts el ile düzenleyerek yapılandırabilirsiniz.

DNS ve Active Directory hakkında daha fazla bilgi için bkz . Linux konağındaki SQL Server'ı Active Directory etki alanına ekleme.

Ö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'nizi dış ağlarda kullanıma sunar.

Bu örnekte kullanılan VM'ler ve IP adresleri aşağıdaki gibi listelenir:

  • sles1: 10.0.0.85
  • sles2: 10.0.0.86
  • sles3: 10.0.0.87

Kümeyi yapılandırma

Bu öğreticide ilk VM'niz (sles1) düğüm 1, ikinci VM'niz (sles2) düğüm 2 ve üçüncü VM'niz (sles3) düğüm 3'tür. Küme yükleme hakkında daha fazla bilgi için bkz . Azure'da SUSE Linux Enterprise Server'da Pacemaker'ı ayarlama.

Küme yüklemesi

  1. Aşağıdaki komutu çalıştırarak ha-cluster-bootstrap paketi düğüm 1'e yükleyin ve ardından düğümü yeniden başlatın. Bu örnekte vm'dir sles1 .

    sudo zypper install ha-cluster-bootstrap
    

    Düğüm yeniden başlatıldıktan sonra aşağıdaki komutu çalıştırarak kümeyi dağıtın:

    sudo crm cluster init --name sqlcluster
    

    Aşağıdaki örneğe benzer bir çıkış görürsünüz:

    Do you want to continue anyway (y/n)? y
      Generating SSH key for root
      The user 'hacluster' will have the login shell configuration changed to /bin/bash
    Continue (y/n)? y
      Generating SSH key for hacluster
      Configuring csync2
      Generating csync2 shared key (this may take a while)...done
      csync2 checking files...done
      Detected cloud platform: microsoft-azure
    
    Configure Corosync (unicast):
      This will configure the cluster messaging layer.  You will need
      to specify a network address over which to communicate (default
      is eth0's network, but you can use the network address of any
      active interface).
    
      Address for ring0 [10.0.0.85]
      Port for ring0 [5405]
    
    Configure SBD:
      If you have shared storage, for example a SAN or iSCSI target,
      you can use it avoid split-brain scenarios by configuring SBD.
      This requires a 1 MB partition, accessible to all nodes in the
      cluster.  The device path must be persistent and consistent
      across all nodes in the cluster, so /dev/disk/by-id/* devices
      are a good choice.  Note that all data on the partition you
      specify here will be destroyed.
    
    Do you wish to use SBD (y/n)? n
    WARNING: Not configuring SBD - STONITH will be disabled.
      Hawk cluster interface is now running. To see cluster status, open:
        https://10.0.0.85:7630/
      Log in with username 'hacluster', password 'linux'
    WARNING: You should change the hacluster password to something more secure!
      Waiting for cluster..............done
      Loading initial cluster configuration
    
    Configure Administration IP Address:
      Optionally configure an administration virtual IP
      address. The purpose of this IP address is to
      provide a single IP that can be used to interact
      with the cluster, rather than using the IP address
      of any specific cluster node.
    
    Do you wish to configure a virtual IP address (y/n)? y
      Virtual IP []10.0.0.89
      Configuring virtual IP (10.0.0.89)....done
    
    Configure Qdevice/Qnetd:
      QDevice participates in quorum decisions. With the assistance of
      a third-party arbitrator Qnetd, it provides votes so that a cluster
      is able to sustain more node failures than standard quorum rules
      allow. It is recommended for clusters with an even number of nodes
      and highly recommended for 2 node clusters.
    
    Do you want to configure QDevice (y/n)? n
    Done (log saved to /var/log/crmsh/ha-cluster-bootstrap.log)
    
  2. Aşağıdaki komutu kullanarak düğüm 1'de kümenin durumunu denetleyin:

    sudo crm status
    

    Başarılı olursa çıkışınız aşağıdaki metni içermelidir:

    1 node configured
    1 resource instance configured
    
  3. Tüm düğümlerde, aşağıdaki komutu kullanarak parolasını hacluster daha güvenli bir şeyle değiştirin. Kullanıcı parolanızı root da değiştirmeniz gerekir:

    sudo passwd hacluster
    
    sudo passwd root
    
  4. İlk olarak paketi yüklemek crmsh için düğüm 2 ve düğüm 3'teaşağıdaki komutu çalıştırın:

    sudo zypper install crmsh
    

    Şimdi komutunu çalıştırarak kümeye katılın:

    sudo crm cluster join
    

    Beklemesi gereken etkileşimlerden bazıları şunlardır:

    Join This Node to Cluster:
    You will be asked for the IP address of an existing node, from which
    configuration will be copied.  If you have not already configured
    passwordless ssh between nodes, you will be prompted for the root
    password of the existing node.
    
      IP address or hostname of existing node (e.g.: 192.168.1.1) []10.0.0.85
      Configuring SSH passwordless with root@10.0.0.85
      root@10.0.0.85's password:
      Configuring SSH passwordless with hacluster@10.0.0.85
      Configuring csync2...done
    Merging known_hosts
    WARNING: scp to sles2 failed (Exited with error code 1, Error output: The authenticity of host 'sles2 (10.1.1.5)' can't be established.
    ECDSA key fingerprint is SHA256:UI0iyfL5N6X1ZahxntrScxyiamtzsDZ9Ftmeg8rSBFI.
    Are you sure you want to continue connecting (yes/no/[fingerprint])?
    lost connection
    ), known_hosts update may be incomplete
    Probing for new partitions...done
      Address for ring0 [10.0.0.86]
    
    Hawk cluster interface is now running. To see cluster status, open:
        https://10.0.0.86:7630/
      Log in with username 'hacluster', password 'linux'
    WARNING: You should change the hacluster password to something more secure!
    Waiting for cluster.....done
    Reloading cluster configuration...done
      Done (log saved to /var/log/crmsh/ha-cluster-bootstrap.log)
    
  5. Tüm makineleri kümeye kattırdıktan sonra, tüm VM'lerin çevrimiçi olup olmadığını görmek için kaynağınızı denetleyin:

    sudo crm status
    

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

    Stack: corosync
     Current DC: sles1 (version 2.0.5+20201202.ba59be712-150300.4.30.3-2.0.5+20201202.ba59be712) - partition with quorum
     Last updated: Mon Mar  6 18:01:17 2023
     Last change:  Mon Mar  6 17:10:09 2023 by root via cibadmin on sles1
    
    3 nodes configured
    1 resource instance configured
    
    Online: [ sles1 sles2 sles3 ]
    
    Full list of resources:
    
     admin-ip       (ocf::heartbeat:IPaddr2):       Started sles1
    
  6. Küme kaynak bileşenini yükleyin. Tüm düğümlerde aşağıdaki komutu çalıştırın.

    sudo zypper in socat
    
  7. azure-lb Bileşeni yükleyin. Tüm düğümlerde aşağıdaki komutu çalıştırın.

    sudo zypper in resource-agents
    
  8. İşletim sistemini yapılandırın. Tüm düğümlerde aşağıdaki adımları izleyin.

    1. Yapılandırma dosyasını düzenleyin:

      sudo vi /etc/systemd/system.conf
      
    2. değerini 4096olarak DefaultTasksMax değiştirin:

      #DefaultTasksMax=512
      DefaultTasksMax=4096
      
    3. Vi düzenleyicisini kaydedin ve çıkın.

    4. Bu ayarı etkinleştirmek için aşağıdaki komutu çalıştırın:

      sudo systemctl daemon-reload
      
    5. Değişikliğin başarılı olup olmadığını test edin:

      sudo systemctl --no-pager show | grep DefaultTasksMax
      
  9. Kirli önbelleğin boyutunu küçültün. Tüm düğümlerde aşağıdaki adımları izleyin.

    1. Sistem denetimi yapılandırma dosyasını düzenleyin:

      sudo vi /etc/sysctl.conf
      
    2. Dosyaya aşağıdaki iki satırı ekleyin:

      vm.dirty_bytes = 629145600
      vm.dirty_background_bytes = 314572800
      
    3. Vi düzenleyicisini kaydedin ve çıkın.

  10. Azure Python SDK'sını aşağıdaki komutlarla tüm düğümlere yükleyin:

    sudo zypper install fence-agents
    # Install the Azure Python SDK on SLES 15 or later:
    # You might need to activate the public cloud extension first. In this example, the SUSEConnect command is for SLES 15 SP1
    SUSEConnect -p sle-module-public-cloud/15.1/x86_64
    sudo zypper install python3-azure-mgmt-compute
    sudo zypper install python3-azure-identity
    

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 . Azure çit aracısı 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 zypper info resource-agents

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

Information for package resource-agents:
----------------------------------------
Repository     : SLE-Product-HA15-SP3-Updates
Name           : resource-agents
Version        : 4.8.0+git30.d0077df0-150300.8.37.1
Arch           : x86_64
Vendor         : SUSE LLC <https://www.suse.com/>
Support Level  : Level 3
Installed Size : 2.5 MiB
Installed      : Yes (automatically)
Status         : up-to-date
Source package : resource-agents-4.8.0+git30.d0077df0-150300.8.37.1.src
Upstream URL   : http://linux-ha.org/
Summary        : HA Reusable Cluster Resource Scripts
Description    : A set of scripts to interface with several services
                 to operate in a High Availability environment for both
                 Pacemaker and rgmanager service managers.

Yeni uygulamayı Microsoft Entra Id'ye 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 girin (örneğin, http://localhost) 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 sorumlusuna atayın. Tüm düğümler için bu adımları yineleyin.

Uyarı

Bundan sonra 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 atamaları ekle'yi seçin
  6. Rol listesinden rolü Linux Fence Agent Role-<username> seçin
  7. Erişim ata'yı varsayılan Users, group, or service principalolarak bırakın.
  8. Seç listesinde, daha önce oluşturduğunuz uygulamanın adını girin, örneğin<resourceGroupName>-app.
  9. Kaydet'i seçin.

STONITH cihazlarını oluşturma

  1. 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.
  2. Crm istemini açmak için komutunu çalıştırıncrm configure:

    sudo crm configure
    
  3. Crm isteminde aşağıdaki komutu çalıştırarak kaynak özelliklerini yapılandırın ve bu komut aşağıdaki örnekte gösterildiği gibi adlı rsc_st_azure kaynağı oluşturur:

    primitive rsc_st_azure stonith:fence_azure_arm params subscriptionId="subscriptionID" resourceGroup="ResourceGroup_Name" tenantId="TenantID" login="ApplicationID" passwd="servicePrincipalPassword" pcmk_monitor_retries=4 pcmk_action_limit=3 power_timeout=240 pcmk_reboot_timeout=900 pcmk_host_map="sles1:sles1;sles2:sles2;sles3:sles3" op monitor interval=3600 timeout=120
    commit
    quit
    
  4. Eskrim aracısını yapılandırmak için aşağıdaki komutları çalıştırın:

    sudo crm configure property stonith-timeout=900
    sudo crm configure property stonith-enabled=true
    sudo crm configure property concurrent-fencing=true
    
  5. STONITH'in etkinleştirildiğini görmek için kümenizin durumunu denetleyin:

    sudo crm status
    

    Aşağıdaki metne benzer bir çıktı görmeniz gerekir:

    Stack: corosync
     Current DC: sles1 (version 2.0.5+20201202.ba59be712-150300.4.30.3-2.0.5+20201202.ba59be712) - partition with quorum
     Last updated: Mon Mar  6 18:20:17 2023
     Last change:  Mon Mar  6 18:10:09 2023 by root via cibadmin on sles1
    
    3 nodes configured
    2 resource instances configured
    
    Online: [ sles1 sles2 sles3 ]
    
    Full list of resources:
    
    admin-ip       (ocf::heartbeat:IPaddr2):       Started sles1
    rsc_st_azure   (stonith:fence_azure_arm):      Started sles2
    

SQL Server ve mssql-tools'u yükleme

SQL Server ve mssql-tools'u yüklemek için aşağıdaki bölümü kullanın. Daha fazla bilgi için bkz . SUSE Linux Enterprise Server'a SQL Server yükleme.

Bu bölümdeki tüm düğümlerde bu adımları gerçekleştirin.

VM'lere SQL Server yükleme

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

  1. Microsoft SQL Server 2019 SLES depo yapılandırma dosyasını indirin:

    sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/15/mssql-server-2022.repo
    
  2. Depolarınızı yenileyin.

    sudo zypper --gpg-auto-import-keys refresh
    

    Sisteminizde Microsoft paket imzalama anahtarının yüklü olduğundan emin olmak için aşağıdaki komutu kullanarak anahtarı içeri aktarın:

    sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
    
  3. SQL Server'ı yüklemek için aşağıdaki komutları çalıştırın:

    sudo zypper install -y mssql-server
    
  4. Paket yüklemesi tamamlandıktan sonra komutunu çalıştırın mssql-conf setup ve istemleri izleyerek SA parolasını ayarlayın ve sürümünüzü seçin.

    sudo /opt/mssql/bin/mssql-conf setup
    

    Dekont

    SA hesabı için güçlü bir parola belirttiğinizden emin olun (Büyük ve küçük harfler, temel 10 basamak ve/veya alfasayısal olmayan simgeler dahil olmak üzere en az uzunluk 8 karakter).

  5. Yapılandırma tamamlandıktan sonra hizmetin çalıştığını doğrulayın:

    systemctl status mssql-server
    

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

Aşağıdaki adımlar SQL Server komut satırı araçlarını (sqlcmd ve bcp) yükler.

  1. Microsoft SQL Server deposunu Zypper'a ekleyin.

    sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/15/prod.repo
    
  2. Depolarınızı yenileyin.

    sudo zypper --gpg-auto-import-keys refresh
    
  3. Geliştirici paketiyle mssql-tools'uunixODBC yükleyin. Daha fazla bilgi için bkz . SQL Server (Linux) için Microsoft ODBC sürücüsünü yükleme.

    sudo zypper install -y mssql-tools unixODBC-devel
    

Kolaylık sağlamak için ortam değişkeninize PATH ekleyebilirsiniz/opt/mssql-tools/bin/. Bu, tam yolu belirtmeden araçları çalıştırmanızı sağlar. PATH ortam değişkenini hem oturum açma bilgileriyle başlatılan oturumları hem de etkileşimli/oturum açma bilgisi olmadan başlatılan oturumları için değiştirmek üzere 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 yüksek kullanılabilirlik aracısı yükleme

SQL Server için yüksek kullanılabilirlik aracısı paketini yüklemek için tüm düğümlerde aşağıdaki komutu çalıştırın:

sudo zypper install mssql-server-ha

Yüksek kullanılabilirlik hizmetleri için bağlantı noktalarını açma

  1. SQL Server ve HA hizmetleri için tüm düğümlerde aşağıdaki güvenlik duvarı bağlantı noktalarını açabilirsiniz: 1433, 2224, 3121, 5022, 5405, 21064.

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

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

Kullanılabilirlik gruplarını etkinleştirme ve SQL Server'ı yeniden başlatma

SQL Server örneğini barındıran her düğümde kullanılabilirlik gruplarını etkinleştirin. Ardından hizmeti yeniden başlatın mssql-server . Her düğümde aşağıdaki komutları çalıştırın:

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

Sertifika oluşturma

Microsoft, AG uç noktasında Active Directory kimlik doğrulamasını desteklemez. Bu nedenle, AG uç nokta şifrelemesi için bir sertifika kullanmanız gerekir.

  1. SQL Server Management Studio (SSMS) veya sqlcmd kullanarak tüm düğümlere Bağlan. 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 <MasterKeyPassword> kendi parolanızla değiştirin.
    ALTER EVENT SESSION AlwaysOn_health ON SERVER
        WITH (STARTUP_STATE = ON);
    GO
    
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<MasterKeyPassword>';
    GO
    
  2. SSMS veya sqlcmd kullanarak birincil çoğaltmaya Bağlan. 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 <PrivateKeyPassword> 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 = '<PrivateKeyPassword>'
            );
    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 sles2 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.

    Dekont

    komutunu çalıştırmanız sudo -igerekmez ve bu da size kök ortamı sağlar. Bunun yerine komutu her komutun önünde çalıştırabilirsiniz sudo .

    # The below command allows you to run commands in the root environment
    sudo -i
    
    scp /var/opt/mssql/data/dbm_certificate.* <username>@sles2:/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 = '<PrivateKeyPassword>'
    );
    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. Kullanılabilirlik grubunu oluşturmak için aşağıdaki komutu çalıştırın:

  • değerini istediğiniz AG adıyla değiştirin ag1 .
  • sles1, sles2ve sles3 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'sles1'
WITH (
        ENDPOINT_URL = N'tcp://sles1:5022',
        AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
        FAILOVER_MODE = EXTERNAL,
        SEEDING_MODE = AUTOMATIC
        ),
    N'sles2'
WITH (
        ENDPOINT_URL = N'tcp://sles2:5022',
        AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
        FAILOVER_MODE = EXTERNAL,
        SEEDING_MODE = AUTOMATIC
        ),
    N'sles3'
WITH (
        ENDPOINT_URL = N'tcp://sles3: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 iki satırı 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ı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
    
  2. 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
    
  3. İkincil çoğaltmalar birleştirildikten sonra, Always On Yüksek Kullanılabilirlik düğümünü genişleterek bunları SSMS Nesne Gezgini görebilirsiniz:

    Screenshot shows the primary and secondary availability replicas.

Kullanılabilirlik grubuna veritabanı ekleme

Bu bölüm, kullanılabilirlik grubuna veritabanı ekleme makalesini izler.

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;
GO

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

Dekont

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.

Bu makalede Pacemaker kümesinde kullanılabilirlik grubu kaynakları oluşturma kılavuzuna başvuruda bulunulanmaktadır.

Pacemaker'i etkinleştirme

Pacemaker'ın otomatik olarak başlatılmasını sağlayın.

Kümedeki tüm düğümlerde aşağıdaki komutu çalıştırın.

sudo systemctl enable pacemaker

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

  1. Crm istemini açmak için komutunu çalıştırıncrm configure:

    sudo crm configure
    
  2. Crm isteminde aşağıdaki komutu çalıştırarak kaynak özelliklerini yapılandırın. Aşağıdaki komutlar kullanılabilirlik grubunda ag1kaynağı ag_cluster oluşturur.

    primitive ag_cluster ocf:mssql:ag params ag_name="ag1" meta failure-timeout=60s op start timeout=60s op stop timeout=60s op promote timeout=60s op demote timeout=10s op monitor timeout=60s interval=10s op monitor timeout=60s interval=11s role="Master" op monitor timeout=60s interval=12s role="Slave" op notify timeout=60s ms ms-ag_cluster ag_cluster meta master-max="1" master-node-max="1" clone-max="3" clone-node-max="1" notify="true"
    commit
    quit
    

    Bahşiş

    Crm isteminden çıkmak için yazınquit.

  3. Sanal IP için ortak konum kısıtlamasını, birincil düğümle aynı düğümde çalışacak şekilde ayarlayın:

    sudo crm configure
    colocation vip_on_master inf: admin-ip ms-ag_cluster: Master
    commit
    quit
    
  4. IP adresinin geçici olarak yük devretme öncesi ikincil düğüme işaret etmesini önlemek için sıralama kısıtlamasını ekleyin. Sıralama kısıtlaması oluşturmak için aşağıdaki komutu çalıştırın:

    sudo crm configure
    order ag_first inf: ms-ag_cluster:promote admin-ip:start
    commit
    quit
    
  5. komutunu kullanarak kümenin durumunu denetleyin:

    sudo crm status
    

    Çıktı aşağıdaki örneğe benzer olmalıdır:

    Cluster Summary:
      * Stack: corosync
      * Current DC: sles1 (version 2.0.5+20201202.ba59be712-150300.4.30.3-2.0.5+20201202.ba59be712) - partition with quorum
      * Last updated: Mon Mar  6 18:38:17 2023
      * Last change:  Mon Mar  6 18:38:09 2023 by root via cibadmin on sles1
      * 3 nodes configured
      * 5 resource instances configured
    
    Node List:
      * Online: [ sles1 sles2 sles3 ]
    
    Full List of Resources:
      * admin-ip    (ocf::heartbeat:IPaddr2):                Started sles1
      * rsc_st_azure        (stonith:fence_azure_arm):       Started sles2
      * Clone Set: ms-ag_cluster [ag_cluster] (promotable):
        * Masters: [ sles1 ]
        * Slaves: [ sles2 sles3 ]
    
  6. Kısıtlamaları gözden geçirmek için aşağıdaki komutu çalıştırın:

    sudo crm configure show
    

    Çıktı aşağıdaki örneğe benzer olmalıdır:

    node 1: sles1
    node 2: sles2
    node 3: sles3
    primitive admin-ip IPaddr2 \
            params ip=10.0.0.93 \
            op monitor interval=10 timeout=20
    primitive ag_cluster ocf:mssql:ag \
            params ag_name=ag1 \
            meta failure-timeout=60s \
            op start timeout=60s interval=0 \
            op stop timeout=60s interval=0 \
            op promote timeout=60s interval=0 \
            op demote timeout=10s interval=0 \
            op monitor timeout=60s interval=10s \
            op monitor timeout=60s interval=11s role=Master \
            op monitor timeout=60s interval=12s role=Slave \
            op notify timeout=60s interval=0
    primitive rsc_st_azure stonith:fence_azure_arm \
            params subscriptionId=xxxxxxx resourceGroup=amvindomain tenantId=xxxxxxx login=xxxxxxx passwd="******" cmk_monitor_retries=4 pcmk_action_limit=3 power_timeout=240 pcmk_reboot_timeout=900 pcmk_host_map="sles1:sles1;les2:sles2;sles3:sles3" \
            op monitor interval=3600 timeout=120
    ms ms-ag_cluster ag_cluster \
            meta master-max=1 master-node-max=1 clone-max=3 clone-node-max=1 notify=true
    order ag_first Mandatory: ms-ag_cluster:promote admin-ip:start
    colocation vip_on_master inf: admin-ip ms-ag_cluster:Master
    property cib-bootstrap-options: \
            have-watchdog=false \
            dc-version="2.0.5+20201202.ba59be712-150300.4.30.3-2.0.5+20201202.ba59be712" \
            cluster-infrastructure=corosync \
            cluster-name=sqlcluster \
            stonith-enabled=true \
            concurrent-fencing=true \
            stonith-timeout=900
    rsc_defaults rsc-options: \
            resource-stickiness=1 \
            migration-threshold=3
    op_defaults op-options: \
            timeout=600 \
            record-pending=true
    

Yük devretme testi

Yapılandırmanın şu ana kadar başarılı olduğundan emin olmak için yük devretmeyi test edin. 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 sles2aşağıdaki komutu çalıştırın. değerini sunucu adınızın değeriyle değiştirin sles2 .

    sudo crm resource move ag_cluster sles2
    

    Çıktı aşağıdaki örneğe benzer olmalıdır:

    INFO: Move constraint created for ms-ag_cluster to sles2
    INFO: Use `crm resource clear ms-ag_cluster` to remove this constraint
    
  2. Kümenin durumunu denetleyin:

    sudo crm status
    

    Çıktı aşağıdaki örneğe benzer olmalıdır:

    Cluster Summary:
      * Stack: corosync
      * Current DC: sles1 (version 2.0.5+20201202.ba59be712-150300.4.30.3-2.0.5+20201202.ba59be712) - partition with quorum
      * Last updated: Mon Mar  6 18:40:02 2023
      * Last change:  Mon Mar  6 18:39:53 2023 by root via crm_resource on sles1
      * 3 nodes configured
      * 5 resource instances configured
    
    Node List:
      * Online: [ sles1 sles2 sles3 ]
    
    Full List of Resources:
      * admin-ip    (ocf::heartbeat:IPaddr2):                Stopped
      * rsc_st_azure        (stonith:fence_azure_arm):       Started sles2
      * Clone Set: ms-ag_cluster [ag_cluster] (promotable):
        * Slaves: [ sles1 sles2 sles3 ]
    
  3. Bir süre sonra vm sles2 artık birincil, diğer iki VM ise ikincildir. Bir kez daha çalıştırın sudo crm status ve aşağıdaki örneğe benzer şekilde çıktıyı gözden geçirin:

    Cluster Summary:
      * Stack: corosync
      * Current DC: sles1 (version 2.0.5+20201202.ba59be712-150300.4.30.3-2.0.5+20201202.ba59be712) - partition with quorum
      * Last updated: Tue Mar  6 22:00:44 2023
      * Last change:  Mon Mar  6 18:42:59 2023 by root via cibadmin on sles1
      * 3 nodes configured
      * 5 resource instances configured
    
    Node List:
      * Online: [ sles1 sles2 sles3 ]
    
    Full List of Resources:
      * admin-ip    (ocf::heartbeat:IPaddr2):                Started sles2
      * rsc_st_azure        (stonith:fence_azure_arm):       Started sles2
      * Clone Set: ms-ag_cluster [ag_cluster] (promotable):
        * Masters: [ sles2 ]
        * Slaves: [ sles1 sles3 ]
    
  4. kullanarak crm config showkısıtlamalarınızı yeniden denetleyin. El ile yük devretme nedeniyle başka bir kısıtlama eklendiğini gözlemleyin.

  5. Aşağıdaki komutu kullanarak id cli-prefer-ag_clusterile kısıtlamayı kaldırın:

    crm configure
    delete cli-prefer-ms-ag_cluster
    commit
    

Test eskrim

Aşağıdaki komutu çalıştırarak STONITH'i test edebilirsiniz. için sles3aşağıdaki komutu çalıştırmayı sles1 deneyin.

sudo crm node fence sles3

Sonraki adım