Udostępnij za pośrednictwem


Obsługa klastra RHEL w trybie failover (FCI) dla SQL Server

Dotyczy:programu SQL Server — Linux

W tym dokumencie opisano sposób wykonywania następujących zadań dla programu SQL Server w klastrze trybu failover dysku udostępnionego z systemem Red Hat Enterprise Linux.

  • Ręczne przełączanie klastra w tryb failover
  • Monitorowanie usługi SQL Server klastra trybu failover
  • Dodawanie węzła klastra
  • Usuwanie węzła klastra
  • Zmienianie częstotliwości monitorowania zasobów programu SQL Server

Opis architektury

Warstwa klastrowania jest oparta na dodatku Red Hat Enterprise Linux (RHEL) HA zbudowanym na Pacemaker. Corosync i Pacemaker koordynują komunikację klastra i zarządzanie zasobami. Wystąpienie programu SQL Server jest aktywne w jednym węźle lub w drugim.

Na poniższym diagramie przedstawiono składniki w klastrze systemu Linux z programem SQL Server.

diagram klastra SQL udostępnionego dysku Red Hat Enterprise Linux 7.

Aby uzyskać więcej informacji na temat konfiguracji klastra, opcji agentów zasobów i zarządzania, odwiedź dokumentację referencyjną systemu RHEL.

Klaster trybu failover ręcznie

Polecenie resource move tworzy ograniczenie wymuszające uruchomienie zasobu w węźle docelowym. Po wykonaniu polecenia move, uruchomienie zasobu clear spowoduje usunięcie ograniczenia, co umożliwi ponowne przeniesienie zasobu lub jego automatyczne przełączenie w tryb failover.

sudo pcs resource move <sqlResourceName> <targetNodeName>
sudo pcs resource clear <sqlResourceName>

Poniższy przykład przenosi zasób mssqlha do węzła o nazwie sqlfcivm2, a następnie usuwa ograniczenie, aby zasób mógł przejść do innego węzła później.

sudo pcs resource move mssqlha sqlfcivm2
sudo pcs resource clear mssqlha

Monitorowanie usługi klastra SQL Server w trybie przełączenia awaryjnego

Wyświetl bieżący stan klastra:

sudo pcs status

Wyświetl stan na żywo klastra i zasobów:

sudo crm_mon

Wyświetl dzienniki agenta zasobów na /var/log/cluster/corosync.log

Dodawanie węzła do klastra

  1. Sprawdź adres IP dla każdego węzła. Poniższy skrypt przedstawia adres IP bieżącego węzła.

    ip addr show
    
  2. Nowy węzeł wymaga unikatowej nazwy, która ma maksymalnie 15 znaków. Domyślnie w systemie Red Hat Linux nazwa komputera to localhost.localdomain. Ta nazwa domyślna może nie być unikatowa i jest za długa. Ustaw nazwę komputera dla nowego węzła. Ustaw nazwę komputera, dodając ją do /etc/hosts. Poniższy skrypt umożliwia edytowanie /etc/hosts przy użyciu vi.

    sudo vi /etc/hosts
    

    W poniższym przykładzie przedstawiono /etc/hosts z dodatkami dla trzech węzłów o nazwie sqlfcivm1, sqlfcivm2isqlfcivm3.

    127.0.0.1      localhost localhost4 localhost4.localdomain4
    ::1            localhost localhost6 localhost6.localdomain6
    10.128.18.128  fcivm1
    10.128.16.77   fcivm2
    10.128.14.26   fcivm3
    

    Plik powinien być taki sam w każdym węźle.

  3. Zatrzymaj usługę SQL Server na nowym węźle.

  4. Postępuj zgodnie z instrukcjami, aby zainstalować katalog plików bazy danych w lokalizacji udostępnionej:

    Na serwerze NFS zainstaluj nfs-utils

    sudo yum -y install nfs-utils
    

    Otwieranie zapory na klientach i serwerze NFS

    sudo firewall-cmd --permanent --add-service=nfs
    sudo firewall-cmd --permanent --add-service=mountd
    sudo firewall-cmd --permanent --add-service=rpc-bind
    sudo firewall-cmd --reload
    

    Edytuj plik /etc/fstab, aby uwzględnić polecenie instalacji:

    <IP OF NFS SERVER>:<shared_storage_path> <database_files_directory_path> nfs timeo=14,intr
    

    Uruchom mount -a, aby zmiany zaczęły obowiązywać.

  5. W nowym węźle utwórz plik do przechowywania nazwy użytkownika i hasła programu SQL Server na potrzeby logowania programu Pacemaker. Następujące polecenie tworzy i wypełnia ten plik:

    sudo touch /var/opt/mssql/passwd
    sudo echo "<loginName>" >> /var/opt/mssql/secrets/passwd
    sudo echo "<password>" >> /var/opt/mssql/secrets/passwd
    sudo chown root:root /var/opt/mssql/passwd
    sudo chmod 600 /var/opt/mssql/passwd
    

    Ostrożność

    Hasło powinno być zgodne z domyślnymi zasadami haseł programu SQL Server. Domyślnie hasło musi mieć długość co najmniej ośmiu znaków i zawierać znaki z trzech z następujących czterech zestawów: wielkie litery, małe litery, cyfry podstawowe-10 i symbole. Hasła mogą mieć długość maksymalnie 128 znaków. Używaj haseł, które są tak długie i złożone, jak to możliwe.

  6. W nowym węźle otwórz porty zapory Pacemaker. Aby otworzyć te porty przy użyciu firewalld, uruchom następujące polecenie:

    sudo firewall-cmd --permanent --add-service=high-availability
    sudo firewall-cmd --reload
    

    Jeśli używasz innej zapory, która nie ma wbudowanej konfiguracji wysokiej dostępności, należy otworzyć następujące porty, aby program Pacemaker mógł komunikować się z innymi węzłami w klastrze:

    • TCP: porty 2224, 3121, 21064
    • UDP: Port 5405
  7. Zainstaluj pakiety Pacemaker w nowym węźle.

    sudo yum install pacemaker pcs fence-agents-all resource-agents
    
  8. Ustaw hasło dla domyślnego użytkownika, który jest tworzony podczas instalowania pakietów Pacemaker i Corosync. Użyj tego samego hasła co istniejące węzły.

    sudo passwd hacluster
    
  9. Włącz i uruchom usługę pcsd i program Pacemaker. Umożliwi to nowemu węzłowi ponowne dołączenie do klastra po ponownym uruchomieniu. Uruchom następujące polecenie w nowym węźle.

    sudo systemctl enable pcsd
    sudo systemctl start pcsd
    sudo systemctl enable pacemaker
    
  10. Zainstaluj agenta zasobów FCI dla programu SQL Server. Uruchom następujące polecenia w nowym węźle.

    sudo yum install mssql-server-ha
    
  11. W istniejącym węźle z klastra uwierzytelnij nowy węzeł i dodaj go do klastra:

    sudo pcs cluster auth <nodeName3> -u hacluster
    sudo pcs cluster node add <nodeName3>
    

    Poniższy przykład dodaje do klastra węzeł o nazwie vm3.

    sudo pcs cluster auth
    sudo pcs cluster start
    

Usuwanie węzłów z klastra

Aby usunąć węzeł z klastra, uruchom następujące polecenie:

sudo pcs cluster node remove <nodeName>

Zmienianie częstotliwości interwału monitorowania zasobów sqlservr

sudo pcs resource op monitor interval=<interval>s <sqlResourceName>

Poniższy przykład ustawia interwał monitorowania na 2 sekundy dla zasobu mssql:

sudo pcs resource op monitor interval=2s mssqlha

Rozwiązywanie problemów z klastrem dysków udostępnionych systemu Red Hat Enterprise Linux dla programu SQL Server

Podczas rozwiązywania problemów z klastrem pomaga zrozumieć, jak trzy demony współpracują ze sobą w celu zarządzania zasobami klastra.

Daemon Opis
Corosync Zapewnia członkostwo w kworum i komunikację między węzłami klastra.
Rozrusznik serca Znajduje się na szczycie platformy Corosync i udostępnia maszyny stanu dla zasobów.
PCSD Zarządza zarówno Pacemaker, jak i Corosync za pomocą narzędzi pcs.

Aby można było używać narzędzi pcs, należy uruchomić narzędzie PCSD.

Bieżący stan klastra

sudo pcs status zwraca podstawowe informacje o klastrze, kworum, węzłach, zasobach i stanie demona dla każdego węzła.

Przykładem prawidłowego działania kworum rozrusznika jest:

Cluster name: MyAppSQL
Last updated: Wed Oct 31 12:00:00 2016  Last change: Wed Oct 31 11:00:00 2016 by root via crm_resource on sqlvmnode1
Stack: corosync
Current DC: sqlvmnode1  (version 1.1.13-10.el7_2.4-44eb2dd) - partition with quorum
3 nodes and 1 resource configured

Online: [ sqlvmnode1 sqlvmnode2 sqlvmnode3 ]

Full list of resources:

mssqlha (ocf::sql:fci): Started sqlvmnode1

PCSD Status:
sqlvmnode1: Online
sqlvmnode2: Online
sqlvmnode3: Online

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

W tym przykładzie partition with quorum oznacza, że kworum większości węzłów jest aktywnych. Jeśli klaster utraci większościowe kworum węzłów, pcs status zwraca partition WITHOUT quorum i wszystkie zasoby są zatrzymane.

online: [sqlvmnode1 sqlvmnode2 sqlvmnode3] zwraca nazwę wszystkich węzłów aktualnie uczestniczących w klastrze. Jeśli jakiekolwiek węzły nie uczestniczą, pcs status zwraca OFFLINE: [<nodename>].

PCSD Status pokazuje stan klastra dla każdego węzła.

Przyczyny, dla których węzeł może być w trybie offline

Sprawdź następujące elementy, gdy węzeł jest w trybie offline.

  • zapora

    Aby móc komunikować się, następujące porty muszą być otwarte na wszystkich węzłach programu Pacemaker.

    • **TCP: 2224, 3121, 21064
  • Usługi Pacemaker lub Corosync działają

  • Komunikacja Node

  • Mapowania nazw węzłów