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.
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
Sprawdź adres IP dla każdego węzła. Poniższy skrypt przedstawia adres IP bieżącego węzła.
ip addr show
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życiuvi
.sudo vi /etc/hosts
W poniższym przykładzie przedstawiono
/etc/hosts
z dodatkami dla trzech węzłów o nazwiesqlfcivm1
,sqlfcivm2
isqlfcivm3
.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.
Zatrzymaj usługę SQL Server na nowym węźle.
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ć.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.
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
Zainstaluj pakiety Pacemaker w nowym węźle.
sudo yum install pacemaker pcs fence-agents-all resource-agents
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
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
Zainstaluj agenta zasobów FCI dla programu SQL Server. Uruchom następujące polecenia w nowym węźle.
sudo yum install mssql-server-ha
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