Samouczek: konfigurowanie odbiornika grupy dostępności na maszynach wirtualnych z systemem Linux

Dotyczy:SQL Server na maszynie wirtualnej platformy Azure

W tym samouczku opisano procedurę tworzenia odbiornika grupy dostępności dla serwerów SQL na maszynach wirtualnych z systemem Linux na platformie Azure, w przypadku systemów Red Hat Enterprise Linux (RHEL), SUSE Linux Enterprise Server (SLES) i Ubuntu.

Dowiesz się, jak:

  • Tworzenie modułu równoważenia obciążenia w witrynie Azure Portal
  • Konfigurowanie puli zaplecza dla modułu równoważenia obciążenia
  • Tworzenie sondy dla modułu równoważenia obciążenia
  • Ustawianie reguł równoważenia obciążenia
  • Tworzenie zasobu modułu równoważenia obciążenia w klastrze
  • Tworzenie odbiornika grupy dostępności
  • Testowanie nawiązywania połączenia z odbiornikiem
  • Testowanie trybu failover

Uwaga

Komunikacja bez uprzedzeń

Ten artykuł zawiera odwołania do terminu niewolnik, termin Microsoft uznaje za obraźliwe w przypadku użycia w tym kontekście. Termin pojawia się w tym artykule, ponieważ jest on obecnie wyświetlany w oprogramowaniu. Po usunięciu terminu z oprogramowania usuniemy go z artykułu.

Warunek wstępny

Tworzenie modułu równoważenia obciążenia w witrynie Azure Portal

Poniższe instrukcje obejmują kroki od 1 do 4 z artykułu Tworzenie i konfigurowanie modułu równoważenia obciążenia w witrynie Azure Portal w artykule Konfigurowanie odbiornika grupy dostępności i modułu równoważenia obciążenia (SQL Server na maszynach wirtualnych platformy Azure).

Tworzenie modułu równoważenia obciążenia

  1. W witrynie Azure Portal otwórz grupę zasobów zawierającą maszyny wirtualne programu SQL Server.

  2. W grupie zasobów wybierz pozycję Dodaj.

  3. Wyszukaj moduł równoważenia obciążenia, a następnie w wynikach wyszukiwania wybierz pozycję Load Balancer, który jest publikowany przez firmę Microsoft.

  4. W okienku Moduł równoważenia obciążenia wybierz pozycję Utwórz.

  5. W oknie dialogowym Tworzenie modułu równoważenia obciążenia skonfiguruj moduł równoważenia obciążenia w następujący sposób:

    Ustawienie Wartość
    Nazwa/nazwisko Nazwa tekstowa reprezentująca moduł równoważenia obciążenia. Na przykład sqlLB.
    Type Wewnętrzny
    Sieć wirtualna Domyślna utworzona sieć wirtualna powinna mieć nazwę VM1VNET.
    Podsieć Wybierz podsieć, w których znajdują się wystąpienia programu SQL Server. Wartość domyślna powinna mieć wartość VM1Subnet.
    Przypisanie adresu IP Static
    Prywatny adres IP virtualip Użyj adresu IP utworzonego w klastrze.
    Subskrypcja Użyj subskrypcji, która została użyta dla grupy zasobów.
    Grupa zasobów: Wybierz grupę zasobów, w których znajdują się wystąpienia programu SQL Server.
    Lokalizacja Wybierz lokalizację platformy Azure, w których znajdują się wystąpienia programu SQL Server.

Konfigurowanie puli zaplecza

Platforma Azure wywołuje pulę zaplecza puli adresów zaplecza. W takim przypadku pula zaplecza to adresy trzech wystąpień programu SQL Server w twojej ag.

  1. W grupie zasobów wybierz utworzony moduł równoważenia obciążenia.

  2. W Ustawienia wybierz pozycję Pule zaplecza.

  3. W obszarze Pule zaplecza wybierz pozycję Dodaj , aby utworzyć pulę adresów zaplecza.

  4. W obszarze Dodawanie puli zaplecza w obszarze Nazwa wpisz nazwę puli zaplecza.

  5. W obszarze Skojarzone z wybierz pozycję Maszyna wirtualna.

  6. Wybierz każdą maszynę wirtualną w środowisku i skojarz odpowiedni adres IP z każdym wyborem.

    Screenshot showing how to add a backend pool.

  7. Wybierz Dodaj.

Tworzenie sondy

Sonda definiuje sposób, w jaki platforma Azure weryfikuje, które wystąpienia programu SQL Server są obecnie właścicielem odbiornika grupy dostępności. Platforma Azure sonduje usługę na podstawie adresu IP na porcie zdefiniowanym podczas tworzenia sondy.

  1. W okienku Ustawienia modułu równoważenia obciążenia wybierz pozycję Sondy kondycji.

  2. W okienku Sondy kondycji wybierz pozycję Dodaj.

  3. Skonfiguruj sondę w okienku Dodawanie sondy . Aby skonfigurować sondę, użyj następujących wartości:

    Ustawienie Wartość
    Nazwa/nazwisko Nazwa tekstowa reprezentująca sondę. Na przykład SQLAlwaysOnEndPointProbe.
    Protokół TCP
    Port Możesz użyć dowolnego dostępnego portu. Na przykład 59999.
    Interwał 5
    Próg złej kondycji 2
  4. Wybierz przycisk OK.

  5. Zaloguj się do wszystkich maszyn wirtualnych i otwórz port sondy przy użyciu następujących poleceń:

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

Platforma Azure tworzy sondę, a następnie używa jej do testowania, które wystąpienie programu SQL Server ma odbiornik grupy dostępności.

Ustawianie reguł równoważenia obciążenia

Reguły równoważenia obciążenia konfigurują sposób kierowania ruchu przez moduł równoważenia obciążenia do wystąpień programu SQL Server. W przypadku tego modułu równoważenia obciążenia włączysz bezpośredni zwrot serwera, ponieważ tylko jedno z trzech wystąpień programu SQL Server jest właścicielem zasobu odbiornika grupy dostępności jednocześnie.

  1. W okienku Ustawienia modułu równoważenia obciążenia wybierz pozycję Reguły równoważenia obciążenia.

  2. W okienku Reguły równoważenia obciążenia wybierz pozycję Dodaj.

  3. W okienku Dodawanie reguł równoważenia obciążenia skonfiguruj regułę równoważenia obciążenia. Użyj następujących ustawień:

    Ustawienie Wartość
    Nazwa/nazwisko Nazwa tekstu reprezentująca reguły równoważenia obciążenia. Na przykład SQLAlwaysOnEndPointListener.
    Protokół TCP
    Port 1433
    Port zaplecza 1433. Ta wartość jest ignorowana, ponieważ ta reguła używa zmiennoprzecinkowego adresu IP (bezpośredni zwrot serwera).
    Sondy Użyj nazwy sondy utworzonej dla tego modułu równoważenia obciążenia.
    Trwałość sesji Brak
    Limit czasu bezczynności (w minutach) 4
    Pływający adres IP (bezpośredni zwrot serwera) Włączono

    Screenshot showing how to add a load balancing rule.

  4. Wybierz przycisk OK.

  5. Platforma Azure konfiguruje regułę równoważenia obciążenia. Teraz moduł równoważenia obciążenia jest skonfigurowany do kierowania ruchu do wystąpienia programu SQL Server, które hostuje odbiornik grupy dostępności.

W tym momencie grupa zasobów ma moduł równoważenia obciążenia, który łączy się ze wszystkimi maszynami z programem SQL Server. Moduł równoważenia obciążenia zawiera również adres IP odbiornika zawsze włączonej grupy dostępności programu SQL Server, dzięki czemu każda maszyna może odpowiadać na żądania dla grup dostępności.

Tworzenie zasobu odbiornika grupy dostępności

Przed utworzeniem zasobu modułu równoważenia obciążenia w narzędziu Pacemaker najpierw utwórz zasób odbiornika:

sudo crm configure primitive virtualip \
ocf:heartbeat:IPaddr2 \
params ip=x.y.z.a

W poprzednim przykładzie x.y.z.a odwołuje się do adresu IP frontonu modułu równoważenia obciążenia.

Tworzenie zasobu modułu równoważenia obciążenia w klastrze

Postępuj zgodnie z instrukcjami dotyczącymi konfigurowanych dystrybucji.

  1. Zaloguj się do podstawowej maszyny wirtualnej. Musimy utworzyć zasób, aby włączyć port sondy modułu równoważenia obciążenia platformy Azure (59999 jest używany w naszym przykładzie). Uruchom następujące polecenie:

    sudo pcs resource create azure_load_balancer azure-lb port=59999
    
  2. Utwórz grupę zawierającą virtualip zasób i :azure_load_balancer

    sudo pcs resource group add virtualip_group azure_load_balancer virtualip
    

Dodawanie ograniczeń

  1. Należy skonfigurować ograniczenie kolokacji, aby upewnić się, że adres IP modułu równoważenia obciążenia platformy Azure i zasób grupy dostępności są uruchomione w tym samym węźle. Uruchom następujące polecenie:

    sudo pcs constraint colocation add azure_load_balancer ag_cluster-master INFINITY with-rsc-role=Master
    
  2. Utwórz ograniczenie zamawiania, aby upewnić się, że zasób grupy dostępności jest uruchomiony przed adresem IP modułu równoważenia obciążenia platformy Azure. Chociaż ograniczenie kolokacji oznacza ograniczenie porządkowania, wymusza to ograniczenie.

    sudo pcs constraint order promote ag_cluster-master then start azure_load_balancer
    
  3. Aby sprawdzić ograniczenia, uruchom następujące polecenie:

    sudo pcs constraint list --full
    

    Powinny zostać wyświetlone następujące dane wyjściowe:

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

Tworzenie odbiornika grupy dostępności

  1. W węźle podstawowym uruchom następujące polecenie w narzędziu sqlcmd lub SSMS. Zastąp virtualip adres IP używany poniżej adresem IP.

    • SQL Server 2022 i nowsze wersje:

      ALTER AVAILABILITY GROUP [ag1]
      ADD LISTENER 'ag1-listener' (
          WITH IP((
              '10.0.0.7',
              '0.0.0.0'
          )),
          PORT = 1433
      );
      GO
      
    • SQL Server 2017 i SQL Server 2019:

      ALTER AVAILABILITY GROUP [ag1]
      ADD LISTENER 'ag1-listener' (
          WITH IP((
              '10.0.0.7',
              '255.255.255.255'
          )),
          PORT = 1433
      );
      GO
      
  2. Zaloguj się do każdego węzła maszyny wirtualnej. Użyj następującego polecenia, aby otworzyć plik hosts i skonfigurować rozpoznawanie nazw hosta dla ag1-listener elementu na każdej maszynie.

    sudo vi /etc/hosts
    

    W edytorze vi wprowadź , i aby wstawić tekst, a w pustym wierszu dodaj adres IP .ag1-listener Następnie dodaj ag1-listener po spacji obok adresu IP.

    <IP of ag1-listener> ag1-listener
    

    Aby zamknąć edytor vi , najpierw naciśnij klawisz Esc , a następnie wprowadź polecenie :wq , aby zapisać plik i zamknąć. Zrób to w każdym węźle.

Testowanie odbiornika i trybu failover

W tej sekcji opisano logowanie się do odbiornika grupy dostępności programu SQL Server i testowanie trybu failover.

Testowanie logowania się do programu SQL Server przy użyciu odbiornika grupy dostępności

  1. Użyj narzędzia sqlcmd , aby zalogować się do podstawowego węzła programu SQL Server przy użyciu nazwy odbiornika grupy dostępności:

    • Użyj wcześniej utworzonego identyfikatora logowania i zastąp <YourPassword> go poprawnym hasłem. W poniższym przykładzie użyto identyfikatora logowania utworzonego sa za pomocą programu SQL Server.
    sqlcmd -S ag1-listener -U sa -P <YourPassword>
    
  2. Sprawdź nazwę serwera, z którym masz połączenie. Uruchom następujące polecenie w narzędziu sqlcmd:

    SELECT @@SERVERNAME;
    

    Dane wyjściowe powinny zawierać bieżący węzeł podstawowy. Powinno to być VM1 , jeśli nigdy nie przetestowano trybu failover.

    Zamknij sesję programu SQL Server, wpisując exit polecenie .

Testowanie trybu failover

  1. Uruchom następujące polecenie, aby ręcznie przejechać replikę podstawową w tryb failover do <VM2> lub innej repliki. Zastąp <VM2> ciąg wartością nazwy serwera.

    sudo pcs resource move ag_cluster-master <VM2> --master
    
  2. Jeśli sprawdzisz ograniczenia, zobaczysz, że inne ograniczenie zostało dodane z powodu ręcznego przejścia w tryb failover:

    sudo pcs constraint list --full
    

    Zobaczysz, że dodano ograniczenie o identyfikatorze cli-prefer-ag_cluster-master .

  3. Usuń ograniczenie z identyfikatorem cli-prefer-ag_cluster-master przy użyciu następującego polecenia:

    sudo pcs constraint remove cli-prefer-ag_cluster-master
    
  4. Sprawdź zasoby klastra przy użyciu polecenia sudo pcs resourcei sprawdź, czy wystąpienie podstawowe ma teraz wartość <VM2>.

    Uwaga

    Ten artykuł zawiera odwołania do terminu slave (element podrzędny), który nie jest już używany przez firmę Microsoft. Po usunięciu terminu z oprogramowania usuniemy go z tego artykułu.

    [<username>@<VM1> ~]$ sudo pcs resource
    Master/Slave Set: ag_cluster-master [ag_cluster]
        Masters: [ <VM2> ]
        Slaves: [ <VM1> <VM3> ]
    Resource Group: virtualip_group
        azure_load_balancer        (ocf::heartbeat:azure-lb):      Started <VM2>
        virtualip  (ocf::heartbeat:IPaddr2):       Started <VM2>
    
  5. Użyj polecenia sqlcmd , aby zalogować się do repliki podstawowej przy użyciu nazwy odbiornika:

    • Użyj wcześniej utworzonego identyfikatora logowania i zastąp <YourPassword> go poprawnym hasłem. W poniższym przykładzie użyto identyfikatora logowania utworzonego sa za pomocą programu SQL Server.
    sqlcmd -S ag1-listener -U sa -P <YourPassword>
    
  6. Sprawdź serwer, z którym masz połączenie. Uruchom następujące polecenie w narzędziu sqlcmd:

    SELECT @@SERVERNAME;
    

    Powinien zostać wyświetlony komunikat, że masz teraz połączenie z maszyną wirtualną, z którą nawiązano przełączenie w tryb failover.

Następny krok

Aby korzystać z odbiornika grupy dostępności dla wystąpień programu SQL Server, należy utworzyć i skonfigurować moduł równoważenia obciążenia.