Konfiguracja wystąpienia klastra przełączania awaryjnego dla programu SQL Server na systemie Linux (RHEL)
Dotyczy:programu SQL Server — Linux
Instancja klastru trybu failover z dwoma węzłami programu SQL Server zapewnia nadmiarowość na poziomie serwera dla wysokiej dostępności. W niniejszym samouczku dowiesz się, jak utworzyć wystąpienie klastra przełączania awaryjnego z dwoma węzłami programu SQL Server w systemie Linux. Konkretne kroki, które należy wykonać, obejmują:
- Zainstaluj i skonfiguruj system Linux
- Instalowanie i konfigurowanie programu SQL Server
- Konfigurowanie pliku hosts
- Konfigurowanie magazynu udostępnionego i przenoszenie plików bazy danych
- Instalowanie i konfigurowanie programu Pacemaker w każdym węźle klastra
- Konfigurowanie wystąpienia klastra przełączania awaryjnego
W tym artykule wyjaśniono, jak utworzyć wystąpienie klastra trybu failover z współdzielonym dyskiem i dwoma węzłami dla programu SQL Server. Artykuł zawiera instrukcje i przykłady skryptów dla systemu Red Hat Enterprise Linux (RHEL). Dystrybucje ubuntu są podobne do RHEL, więc przykłady skryptów będą zwykle działać również w systemie Ubuntu.
Aby uzyskać informacje koncepcyjne, zobacz wystąpienia klastra trybu failover — SQL Server w systemie Linux.
Warunki wstępne
Do wykonania następującego kompleksowego scenariusza potrzebne są dwie maszyny do wdrożenia klastra dwóch węzłów i innego serwera na potrzeby magazynu. Poniżej przedstawiono sposób konfigurowania tych serwerów.
Konfigurowanie i ustawianie systemu Linux
Pierwszym krokiem jest skonfigurowanie systemu operacyjnego w węzłach klastra. W każdym węźle w klastrze skonfiguruj dystrybucję systemu Linux. Użyj tej samej dystrybucji i wersji w obu węzłach. Użyj jednej lub drugiej z następujących dystrybucji:
- RHEL z ważną subskrypcją dodatku HA
Instalowanie i konfigurowanie programu SQL Server
Zainstaluj i skonfiguruj program SQL Server w obu węzłach. Aby uzyskać szczegółowe instrukcje, zobacz Wskazówki dotyczące instalacji programu SQL Server w systemie Linux.
Wyznaczanie jednego węzła jako podstawowego i drugiego jako pomocniczego na potrzeby konfiguracji. Użyj tych terminów, aby skorzystać z poniższego przewodnika.
W węźle pomocniczym zatrzymaj i wyłącz program SQL Server. Poniższy przykład zatrzymuje i wyłącza program SQL Server:
sudo systemctl stop mssql-server sudo systemctl disable mssql-server
Notatka
W czasie konfigurowania dla wystąpienia programu SQL Server jest generowany klucz główny serwera i umieszczany w
var/opt/mssql/secrets/machine-key
. W systemie Linux program SQL Server zawsze działa jako konto lokalne o nazwiemssql
. Ponieważ jest to konto lokalne, jego tożsamość nie jest współdzielona między węzłami. W związku z tym należy skopiować klucz szyfrowania z węzła podstawowego do każdego węzła pomocniczego, aby każde lokalne kontomssql
mógł uzyskać dostęp do niego w celu odszyfrowania klucza głównego serwera.Na węźle podstawowym utwórz login SQL Server dla Pacemaker i przyznaj uprawnienia do uruchamiania
sp_server_diagnostics
. Narzędzie Pacemaker używa tego konta do sprawdzania, który węzeł działa z programem SQL Server.sudo systemctl start mssql-server
Połącz się z bazą danych
master
programu SQL Server przy użyciu kontasa
i uruchom następujące polecenie:USE [master]; GO CREATE LOGIN [<loginName>] WITH PASSWORD = N'<password>'; ALTER SERVER ROLE [sysadmin] ADD MEMBER [<loginName>];
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.
Alternatywnie można ustawić uprawnienia na bardziej szczegółowym poziomie. Logowanie do systemu Pacemaker wymaga
VIEW SERVER STATE
do zapytania o stan zdrowia za pomocąsp_server_diagnostics
, setupadminoraz ALTER ANY LINKED SERVER, aby zaktualizować nazwę wystąpienia klastra trybu failover (FCI) przy użyciu nazwy zasobu, uruchamiającsp_dropserver
isp_addserver
.W węźle podstawowym zatrzymaj i wyłącz program SQL Server.
Konfigurowanie pliku hosts
W każdym węźle klastra skonfiguruj plik hosts. Plik hosts musi zawierać adres IP i nazwę każdego węzła klastra.
Sprawdź adres IP dla każdego węzła. Poniższy skrypt przedstawia adres IP bieżącego węzła.
sudo ip addr show
Ustaw nazwę komputera w każdym węźle. Nadaj każdemu węzłowi unikatową nazwę o 15 znaków lub mniej. 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 dwóch węzłów o nazwiesqlfcivm1
isqlfcivm2
.127.0.0.1 localhost localhost4 localhost4.localdomain4 ::1 localhost localhost6 localhost6.localdomain6 10.128.18.128 sqlfcivm1 10.128.16.77 sqlfcivm2
Skonfiguruj magazyn i przenieś pliki bazy danych
Musisz zapewnić magazyn, do którego mogą uzyskiwać dostęp oba węzły. Można użyć protokołu iSCSI, NFS lub SMB. Skonfiguruj magazyn, prezentuj magazyn do węzłów klastra, a następnie przenieś pliki bazy danych do nowego magazynu. W następujących artykułach opisano kroki dla każdego typu przechowywania:
- Konfigurowanie instancji klastra trybu awaryjnego — iSCSI — SQL Server w systemie Linux
- Konfigurowanie wystąpienia klastra awaryjnego — NFS — SQL Server na Linuksie
- Konfiguruj wystąpienie klastra trybu failover magazynu SMB — SQL Server w systemie Linux
Instalowanie i konfigurowanie programu Pacemaker w każdym węźle klastra
W obu węzłach klastra 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 sudo echo '<loginName>' >> /var/opt/mssql/secrets/passwd sudo echo '<loginPassword>' >> /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 600 /var/opt/mssql/secrets/passwd
W obu węzłach klastra 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 każdym 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 w obu węzłach.
sudo passwd hacluster
Włącz i uruchom usługę
pcsd
i program Pacemaker. Umożliwi to węzłom ponowne dołączenie do klastra po ponownym uruchomieniu. Uruchom następujące polecenie w obu węzłach.sudo systemctl enable pcsd sudo systemctl start pcsd sudo systemctl enable pacemaker
Zainstaluj agenta zasobów klastra awaryjnego dla SQL Server. Uruchom następujące polecenia w obu węzłach.
sudo yum install mssql-server-ha
Konfiguracja wystąpienia klastra failover
FCI zostanie utworzone w grupie zasobów. Jest to nieco łatwiejsze, ponieważ grupa zasobów złagodzi potrzebę ograniczeń. Dodaj jednak zasoby do grupy zasobów w kolejności, w której powinny zostać uruchomione. Kolejność, w jakiej należy rozpocząć, to:
- Zasób magazynu
- Zasób sieciowy
- Zasób aplikacji
W tym przykładzie tworzony jest FCI w grupie NewLinFCIGrp. Nazwa grupy zasobów musi być unikatowa z dowolnego zasobu utworzonego w narzędziu Pacemaker.
Utwórz zasób dysku. Nie otrzymasz odpowiedzi, jeśli nie wystąpi problem. Sposób tworzenia zasobu dysku zależy od typu magazynu. W poniższej sekcji przedstawiono przykłady dla każdego typu magazynu (iSCSI, NFS i SMB). Użyj przykładu, który ma zastosowanie do typu magazynu klastrowanego.
sudo pcs resource create <iSCSIDiskResourceName> Filesystem device="/dev/<VolumeGroupName>/<LogicalVolumeName>" directory="<FolderToMountiSCSIDisk>" fstype="<FileSystemType>" --group RGName
-
<iSCSIDIskResourceName>
jest nazwą zasobu skojarzonego z dyskiem iSCSI -
<VolumeGroupName>
jest nazwą grupy woluminów -
<LogicalVolumeName>
jest nazwą utworzonego woluminu logicznego -
<FolderToMountiSCSIDIsk>
to folder do zainstalowania dysku (w przypadku systemowych baz danych i lokalizacji domyślnej będzie to/var/opt/mssql/data
) -
<FileSystemType>
będzie EXT4 lub XFS, w zależności od sposobu formatowania elementów i obsługiwanej dystrybucji.
-
Utwórz adres IP, który będzie używany przez FCI. Jeśli nie wystąpi problem, nie otrzymasz żadnej odpowiedzi.
sudo pcs resource create <IPResourceName> ocf:heartbeat:IPaddr2 ip=<IPAddress> nic=<NetworkCard> cidr_netmask=<NetMask> --group <RGName>
-
<IPResourceName>
jest nazwą zasobu skojarzonego z adresem IP -
<IPAddress>
jest adresem IP dla instancji klastra przełączania awaryjnego -
<NetworkCard>
to karta sieciowa skojarzona z podsiecią (czyli eth0) -
<NetMask>
to maska sieci podsieci (czyli 24) -
<RGName>
jest nazwą grupy zasobów
-
Utwórz zasób FCI. Nie otrzymasz odpowiedzi, jeśli nie wystąpi problem.
sudo pcs resource create FCIResourceName ocf:mssql:fci op defaults timeout=60s --group RGName
-
<FCIResourceName>
to nie tylko nazwa zasobu, ale także przyjazna nazwa skojarzona z instancją klastra trybu failover (FCI). To właśnie użytkownicy i aplikacje używają do nawiązywania połączenia. -
<RGName>
jest nazwą grupy zasobów.
-
Uruchom polecenie
sudo pcs resource
. FCI powinny być w trybie online.Połącz się z FCI (wystąpieniem klastra trybu failover) za pomocą programu SSMS lub sqlcmd, używając nazwy DNS bądź zasobu FCI.
Wydaj oświadczenie
SELECT @@SERVERNAME
. Powinna zwrócić nazwę FCI.Wydaj oświadczenie
SELECT SERVERPROPERTY('ComputerNamePhysicalNetBIOS')
. To powinno zwrócić nazwę węzła, na którym działa FCI.Ręcznie uruchom proces przełączania klastra na inne węzły. Zapoznaj się z instrukcjami w Operowanie instancją klastra w trybie failover — SQL Server na Linux.
Na koniec przenieś z powrotem FCI do oryginalnego węzła i usuń ograniczenie kolokacji.
Streszczenie
W tym samouczku wykonałeś następujące zadania.
- Instalowanie i konfigurowanie systemu Linux
- Instalowanie i konfigurowanie programu SQL Server
- Konfigurowanie pliku hosts
- Konfigurowanie magazynu udostępnionego i przenoszenie plików bazy danych
- Instalowanie i konfigurowanie programu Pacemaker w każdym węźle klastra
- Konfigurowanie wystąpienia klastra przełączenia awaryjnego