Konfigurowanie klastra dysków udostępnionych SLES dla programu SQL Server
Dotyczy:programu SQL Server — Linux
Ten przewodnik zawiera instrukcje dotyczące tworzenia klastra dysków udostępnionych z dwoma węzłami dla programu SQL Server w systemie SUSE Linux Enterprise Server (SLES). Warstwa klastrowania jest oparta na systemie SUSE high availability extension (HAE) opartym na Pacemaker.
Aby uzyskać więcej informacji na temat konfiguracji klastra, opcji agenta zasobów, zarządzania, najlepszych rozwiązań i zaleceń, zobacz SUSE Linux Enterprise High Availability Extension 12 SP5.
Warunki wstępne
Aby zrealizować poniższy scenariusz end-to-end, potrzebujesz dwóch maszyn do wdrożenia klastra dwóch węzłów oraz trzeciego serwera do skonfigurowania udziału NFS. Poniżej przedstawiono sposób konfigurowania tych serwerów.
Skonfiguruj i ustaw system operacyjny na każdym węźle klastra.
Pierwszym krokiem jest skonfigurowanie systemu operacyjnego w węzłach klastra. W tej instrukcji krok po kroku użyj systemu SLES z prawidłową subskrypcją dla dodatku HA.
Instalowanie i konfigurowanie programu SQL Server w każdym węźle klastra
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 postępować według 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 instalacji klucz główny serwera jest generowany dla wystąpienia programu SQL Server i umieszczany w
/var/opt/mssql/secrets/machine-key
. W systemie Linux program SQL Server zawsze działa jako konto lokalne o nazwie mssql. 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 konto mssql mógł uzyskać do niego dostęp w celu odszyfrowania klucza głównego serwera.W węźle podstawowym utwórz login SQL Server dla programu Pacemaker i przyznaj loginowi 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>' GRANT VIEW SERVER STATE TO <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.
W węźle podstawowym zatrzymaj i wyłącz program SQL Server.
Postępuj zgodnie z instrukcjami w dokumentacji systemu SUSE, aby skonfigurować i zaktualizować plik hostów dla każdego węzła klastra. Plik
hosts
musi zawierać adres IP i nazwę każdego węzła klastra.Aby sprawdzić adres IP bieżącego węzła, uruchom polecenie:
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/hostname
przy użyciu YAST lub ręcznie .W poniższym przykładzie przedstawiono
/etc/hosts
z dodatkami dla dwóch węzłów o nazwieSLES1
iSLES2
.127.0.0.1 localhost 10.128.18.128 SLES1 10.128.16.77 SLES2
Wszystkie węzły klastra muszą mieć dostęp do siebie za pośrednictwem protokołu SSH. Narzędzia takie jak
hb_report
lubcrm_report
(na potrzeby rozwiązywania problemów) i Eksplorator historii Hawk's wymagają bez hasła dostępu SSH między węzłami. W przeciwnym razie mogą zbierać tylko dane z bieżącego węzła. Jeśli używasz niestandardowego portu SSH, użyj opcji-X
(zobacz Inne wymagania i zalecenia). Jeśli na przykład port SSH to 3479, wywołajcrm_report
za pomocą polecenia:crm_report -X "-p 3479" [...]
Aby uzyskać więcej informacji, zobacz Podręcznik administrowania.
W następnej sekcji skonfigurujesz magazyn udostępniony i przeniesiesz pliki bazy danych do tego magazynu.
Konfigurowanie udostępnionego magazynu i przenoszenie plików bazy danych
Istnieją różne rozwiązania do udostępniania magazynu współdzielonego. Ten instruktaż przedstawia konfigurowanie magazynu udostępnionego za pomocą NFS. Zalecamy stosowanie najlepszych rozwiązań i używanie protokołu Kerberos do zabezpieczania systemu plików NFS:
Jeśli nie zastosujesz się do tych wskazówek, każdy, kto może uzyskać dostęp do sieci i sfałszować adres IP węzła SQL, będzie mógł uzyskać dostęp do plików danych. Jak zawsze upewnij się, że przygotowałeś model zagrożeń dla swojego systemu przed jego wdrożeniem w środowisku produkcyjnym.
Inną opcją przechowywania jest użycie udostępniania plików SMB.
Konfigurowanie serwera NFS
Aby skonfigurować serwer NFS, zobacz następujące kroki w dokumentacji systemu SUSE: Konfigurowanie serwera NFS.
Skonfiguruj wszystkie węzły klastra do połączenia z udostępnionym magazynem NFS.
Przed skonfigurowaniem systemu plików NFS klienta w celu zainstalowania ścieżki plików bazy danych programu SQL Server w celu wskazania lokalizacji magazynu udostępnionego upewnij się, że pliki bazy danych są zapisywane w lokalizacji tymczasowej, aby móc skopiować je później w udziale:
Tylko w węźle podstawowymzapisz pliki bazy danych w lokalizacji tymczasowej. Poniższy skrypt tworzy nowy katalog tymczasowy, kopiuje pliki bazy danych do nowego katalogu i usuwa stare pliki bazy danych. Ponieważ program SQL Server działa jako użytkownik lokalny mssql, musisz upewnić się, że po przeniesieniu danych do zamontowanego udostępnionego zasobu użytkownik lokalny ma dostęp do odczytu i zapisu do tego zasobu.
su mssql mkdir /var/opt/mssql/tmp cp /var/opt/mssql/data/* /var/opt/mssql/tmp rm /var/opt/mssql/data/* exit
Skonfiguruj klienta NFS na wszystkich węzłach klastra:
Nota
Należy postępować zgodnie z najlepszymi praktykami i zaleceniami dotyczącymi wysoko dostępnego magazynu NFS: Wysoko dostępny magazyn NFS z DRBD i Pacemaker.
Sprawdź, czy program SQL Server rozpoczyna się pomyślnie od nowej ścieżki pliku. Zrób to w każdym węźle. W tym momencie tylko jeden węzeł powinien uruchamiać program SQL Server naraz. Oba węzły nie mogą być uruchamiane jednocześnie, ponieważ oba będą próbowały uzyskać dostęp do plików danych równocześnie. Aby uniknąć przypadkowego uruchomienia SQL Server na obu węzłach, użyj zasobu klastra systemu plików, aby upewnić się, że zasób współdzielony nie jest zamontowany podwójnie przez różne węzły. Następujące polecenia uruchamiają program SQL Server, sprawdzają stan, a następnie zatrzymują program SQL Server.
sudo systemctl start mssql-server sudo systemctl status mssql-server sudo systemctl stop mssql-server
W tym momencie oba wystąpienia programu SQL Server są skonfigurowane do uruchamiania z plikami bazy danych w magazynie udostępnionym. Następnym krokiem jest skonfigurowanie programu SQL Server dla programu Pacemaker.
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 dla logowania do 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 '<password>' >> /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 600 /var/opt/mssql/secrets/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.
Wszystkie węzły klastra muszą mieć dostęp do siebie za pośrednictwem protokołu SSH. Narzędzia takie jak hb_report lub crm_report (na potrzeby rozwiązywania problemów) i Eksplorator historii Hawk's wymagają bez hasła dostępu SSH między węzłami. W przeciwnym razie mogą zbierać tylko dane z bieżącego węzła. Jeśli używasz niestandardowego portu SSH, użyj opcji -X (zobacz stronę man). Jeśli na przykład port SSH to 3479, wywołaj hb_report za pomocą polecenia:
crm_report -X "-p 3479" [...]
Aby uzyskać więcej informacji, zobacz Wymagania systemowe i zalecenia w dokumentacji systemu SUSE.
Zainstaluj rozszerzenie wysokiej dostępności. Aby zainstalować rozszerzenie, wykonaj kroki opisane w następującym artykule SUSE:
Zainstaluj agenta zasobów FCI dla programu SQL Server. Uruchom następujące polecenia w obu węzłach:
sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/12/mssql-server-2017.repo sudo zypper --gpg-auto-import-keys refresh sudo zypper install mssql-server-ha
Automatycznie skonfiguruj pierwszy węzeł. Następnym krokiem jest skonfigurowanie uruchomionego klastra z jednym węzłem przez skonfigurowanie pierwszego węzła SLES1. Postępuj zgodnie z instrukcjami w artykule SUSE, Konfigurowanie pierwszego węzła.
Po zakończeniu sprawdź stan klastra przy użyciu
crm status
:crm status
Powinien on pokazać, że jeden węzeł, SLES1, jest skonfigurowany.
Dodaj węzły do istniejącego klastra. Następnie dołącz węzeł SLES2 do klastra. Postępuj zgodnie z instrukcjami w artykule SUSE, Dodawanie drugiego węzła.
Po zakończeniu sprawdź stan klastra za pomocą crm status. Jeśli pomyślnie dodano drugi węzeł, dane wyjściowe są podobne do następujących:
2 nodes configured 1 resource configured Online: [ SLES1 SLES2 ] Full list of resources: admin_addr (ocf::heartbeat:IPaddr2): Started SLES1
Notatka
admin_addr to zasób klastra wirtualnego IP, który jest konfigurowany podczas początkowego ustawienia klastra z jednym węzłem.
Procedury usuwania. Jeśli musisz usunąć węzeł z klastra, użyj skryptu ha-cluster-remove bootstrap. Aby uzyskać więcej informacji, zobacz Overview of the Bootstrap Scripts.
Konfigurowanie zasobów klastra dla programu SQL Server
W poniższych krokach wyjaśniono, jak skonfigurować zasób klastra dla programu SQL Server. Istnieją dwa ustawienia, które należy dostosować.
- nazwa zasobu programu SQL Server: nazwa zasobu klastrowanego programu SQL Server.
-
limit czasowy: Limit czasowy to czas, przez jaki klaster oczekuje na uruchomienie zasobu. W przypadku programu SQL Server jest to czas potrzebny na przełączenie bazy danych
master
do trybu online przez program SQL Server.
Zaktualizuj wartości z następującego skryptu dla danego środowiska. Uruchom na jednym węźle, aby skonfigurować i uruchomić usługę sklasteryzowaną.
sudo crm configure
primitive <sqlServerResourceName> ocf:mssql:fci op start timeout=<timeout_in_seconds>
colocation <constraintName> inf: <virtualIPResourceName> <sqlServerResourceName>
show
commit
exit
Na przykład poniższy skrypt tworzy zasób klastrowany programu SQL Server o nazwie mssqlha
.
sudo crm configure
primitive mssqlha ocf:mssql:fci op start timeout=60s
colocation admin_addr_mssqlha inf: admin_addr mssqlha
show
commit
exit
Po zatwierdzeniu konfiguracji program SQL Server zostanie uruchomiony w tym samym węźle co zasób wirtualnego adresu IP.
Aby uzyskać więcej informacji, zobacz Konfigurowanie zasobów klastra i zarządzanie nimi (wiersz polecenia).
Sprawdź, czy program SQL Server został uruchomiony
Aby sprawdzić, czy program SQL Server został uruchomiony, uruchom polecenie crm status.
crm status
W poniższym przykładzie przedstawiono wyniki pomyślnego uruchomienia programu Pacemaker jako zasobu klastrowanego.
2 nodes configured
2 resources configured
Online: [ SLES1 SLES2 ]
Full list of resources:
admin_addr (ocf::heartbeat:IPaddr2): Started SLES1
mssqlha (ocf::mssql:fci): Started SLES1
Zarządzanie zasobami klastra
Aby zarządzać zasobami klastra, zobacz następujący artykuł z systemem SUSE: Zarządzanie zasobami klastra
Ręczne przechodzenie w tryb failover
Mimo że zasoby są skonfigurowane do automatycznego przełączania w tryb failover (lub migracji) do innych węzłów klastra w przypadku awarii sprzętu lub oprogramowania, można również ręcznie przenieść zasób do innego węzła w klastrze przy użyciu graficznego interfejsu użytkownika programu Pacemaker lub wiersza polecenia.
Użyj polecenia migracji dla tego zadania. Aby na przykład przeprowadzić migrację zasobu SQL do nazw węzłów klastra SLES2, wykonaj następujące polecenie:
crm resource
migrate mssqlha SLES2
Powiązana zawartość
- rozszerzenie wysokiej dostępności systemu SUSE Linux Enterprise — przewodnik administracyjny