Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:Program SQL Server w systemie Linux
W tym artykule wyjaśniono, jak zarządzać instancją klastrową w trybie przełączania awaryjnego dla SQL Server na systemie Linux. Aby utworzyć SQL Server FCI na Linuksie, zobacz Konfiguruj instancję klastra awaryjnego na Linuksie (RHEL).
Opis architektury
Warstwa klastrowania opiera się na dodatku Red Hat Enterprise Linux (RHEL) HA, zbudowanym na Pacemakerze. Corosync i Pacemaker koordynują komunikację klastra i zarządzanie zasobami. Instancja SQL Server jest aktywna na jednym węźle naraz.
Na poniższym diagramie przedstawiono składniki w klastrze systemu Linux z programem SQL Server.
Aby uzyskać więcej informacji na temat konfiguracji klastra, opcji agentów zasobów i zarządzania, odwiedź dokumentację referencyjną RHEL.
Failover
Tryb failover dla instancji klastrów (FCI) jest podobny do klastrów failover systemu Windows Server (WSFC). Jeśli węzeł klastra obsługujący FCI napotka jakąś awarię, FCI powinno automatycznie przełączyć się na inny węzeł. W przeciwieństwie do klastra Windows Server Failover Clustering (WSFC), nie ma możliwości ustawienia preferowanych właścicieli, dlatego program Pacemaker wybiera węzeł, który będzie nowym hostem dla instancji FCI (Failover Cluster Instance).
Czasem możesz chcieć ręcznie przełączyć FCI na inny węzeł. Proces nie jest taki sam jak w przypadku instancji klastra na WSFC. W przypadku WSFC przełączasz zasoby na poziomie roli. W Pacemakerze wybierasz zasób do przeniesienia, a jeśli wszystkie ograniczenia są prawidłowo ustawione, cała reszta również zostaje przeniesiona.
Sposób awaryjnego przełączania zależy od dystrybucji Linuksa. Postępuj zgodnie z instrukcjami dotyczącymi dystrybucji Linuksa.
Ręczne przełączanie awaryjne (RHEL lub Ubuntu)
Aby wykonać ręczne przejście w tryb failover na serwerach Red Hat Enterprise Linux (RHEL) lub Ubuntu, wykonaj następujące kroki.
Wydaj następujące polecenie:
sudo pcs resource move <FCIResourceName> <NewHostNode><FCIResourceName>to nazwa zasobu Pacemaker dla SQL Server FCI, a<NewHostNode>to nazwa węzła klastra, na którym ma być hostowane FCI.Podczas ręcznego przejścia w tryb failover program Pacemaker tworzy ograniczenie lokalizacji dla zasobu wybranego do ręcznego przenoszenia. Aby wyświetlić to ograniczenie, uruchom polecenie
sudo pcs constraint.Po zakończeniu przełączenia awaryjnego usuń ograniczenie:
sudo pcs resource clear <FCIResourceName>
Ręczne przełączanie awaryjne (SLES)
Note
Począwszy od SQL Server 2025 (17.x), system SUSE Linux Enterprise Server (SLES) nie jest obsługiwany. Dla SQL Server 2022 (16.x) i wcześniejszych wersji obsługiwany jest tylko SLES 15.
W SUSE Linux Enterprise Server (SLES) użyj polecenia migrate, aby ręcznie przełączyć klaster SQL Server FCI. Przykład:
crm resource migrate <FCIResourceName> <NewHostNode>
<FCIResourceName> to nazwa zasobu dla instancji klastra awaryjnego oraz <NewHostNode> jest nazwą nowego hosta docelowego.
Monitorowanie klastra awaryjnego
Wyświetl bieżący stan klastra:
sudo pcs status
Zobacz status na żywo klastra i zasobów:
sudo crm_mon
Wyświetl logi agenta zasobów w /var/log/cluster/corosync.log.
Dodawanie węzła do klastra
Sprawdź adres IP dla każdego węzła. Poniższy skrypt przedstawia adres IP bieżącego węzła.
ip addr showNowy węzeł potrzebuje unikalnej nazwy, która ma 15 znaków lub mniej. Ustaw nazwę komputera, dodając ją do
/etc/hosts. Poniższy skrypt umożliwia edytowanie/etc/hostsza pomocąvi.sudo vi /etc/hostsW poniższym przykładzie przedstawiono
/etc/hostsz dodatkami dla trzech węzłów o nazwachsqlfcivm1,sqlfcivm2, isqlfcivm3.127.0.0.1 localhost localhost4 localhost4.localdomain4 ::1 localhost localhost6 localhost6.localdomain6 10.128.18.128 sqlfcivm1 10.128.16.77 sqlfcivm2 10.128.14.26 sqlfcivm3Plik powinien być taki sam w każdym węźle.
Zatrzymaj usługę SQL Server na nowym węźle.
Postępuj zgodnie z instrukcjami, aby zamontować katalog plików bazy danych do współdzielonej lokalizacji.
Na serwerze NFS zainstaluj program
nfs-utils:sudo yum -y install nfs-utilsOtwórz zaporę 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 --reloadEdytuj plik
/etc/fstab, aby uwzględnić polecenie instalacji:<IP OF NFS SERVER>:<shared_storage_path> <database_files_directory_path> nfs timeo=14,intrUruchom
mount -a, aby zmiany zaczęły obowiązywać.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/secrets/passwd echo "<loginName>" | sudo tee -a /var/opt/mssql/secrets/passwd echo "<password>" | sudo tee -a /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 600 /var/opt/mssql/secrets/passwdCaution
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.
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 --reloadJeśli używasz innej zapory, która nie ma wbudowanej konfiguracji wysokiej dostępności, otwórz następujące porty, aby Pacemaker mógł komunikować się z innymi węzłami w klastrze:
- TCP: Porty 2224, 3121, 21064
- UDP: Port 5405
Zainstaluj pakiety Pacemaker w nowym węźle.
sudo yum install pacemaker pcs fence-agents-all resource-agentsUstaw 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 haclusterWłącz i uruchom usługę
pcsdi program Pacemaker. Nowy węzeł może ponownie dołączyć do klastra po restarcie. Uruchom następujące polecenie w nowym węźle.sudo systemctl enable pcsd sudo systemctl start pcsd sudo systemctl enable pacemakerZainstaluj agenta zasobów FCI dla programu SQL Server. Uruchom następujące polecenie w nowym węźle.
sudo yum install mssql-server-haNa istniejącym węźle w klastrze uwierzytelnij nowy węzeł i dodaj go do klastra:
sudo pcs cluster auth <nodeName3> -u hacluster sudo pcs cluster node add <nodeName3>
Usuwanie węzłów z klastra
Aby usunąć węzeł z klastra, uruchom następujące polecenie:
sudo pcs cluster node remove <nodeName>
Zmień częstotliwość monitorowania zasobów
sudo pcs resource op monitor interval=<interval>s <sqlResourceName>
Poniższy przykład ustawia interwał monitoringu na 2 sekundy dla mssqlha zasobu:
sudo pcs resource op monitor interval=2s mssqlha
Troubleshoot
Podczas rozwiązywania problemów z klastrem pomaga zrozumieć, jak trzy demony współpracują ze sobą w celu zarządzania zasobami klastra.
| Daemon | Description |
|---|---|
| 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.
Poniższy przykład przedstawia prawidłowe dane wyjściowe kworum Pacemaker:
Cluster name: MyAppSQL
Last updated: Wed Oct 31 12:00:00 2024 Last change: Wed Oct 31 11:00:00 2024 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 oznacza to, partition with quorum że większość kworum węzłów jest online. 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 sieciowa
Otwórz następujące porty na wszystkich węzłach, aby Pacemaker mógł się komunikować:
- TCP: Porty 2224, 3121, 21064
- UDP: Port 5405
Usługi Pacemaker lub Corosync działają
Komunikacja Node
Mapowania nazw węzłów