Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:Program SQL Server w systemie 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.
Notatka
Począwszy od programu SQL Server 2025 (17.x), system SUSE Linux Enterprise Server (SLES) nie jest obsługiwany.
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. W poniższych krokach opisano 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 tym przewodniku użyj SLES z prawidłową subskrypcją 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-serverNotatka
W czasie instalacji klucz główny serwera (SMK) jest generowany dla wystąpienia programu SQL Server i umieszczany w katalogu
/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. Należy skopiować klucz szyfrowania z węzła podstawowego do każdego węzła pomocniczego, aby każde konto lokalnemssqlmógł uzyskać do niego dostęp w celu odszyfrowania klucza SMK.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-serverPołącz się z bazą danych SQL Server
masterza pomocą kontasai uruchom następujący skrypt: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
hostsmusi 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 showUstaw 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/hostnameprzy użyciu YAST lub ręcznie .W poniższym przykładzie przedstawiono
/etc/hostsz dodatkami dla dwóch węzłów o nazwieSLES1iSLES2.127.0.0.1 localhost 10.128.18.128 SLES1 10.128.16.77 SLES2Wszystkie węzły klastra muszą mieć dostęp do siebie bez hasła za pomocą protokołu SSH. W przeciwnym razie narzędzia, takie jak
hb_report,crm_reporti Hawk's History Explorer, mogą zbierać dane tylko z węzła lokalnego. Jeśli używasz niestandardowego portu SSH, użyj-Xopcji (zobacz Inne wymagania i zalecenia). Jeśli na przykład port SSH to 3479, wywołajcrm_reportza 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
Można użyć różnych rozwiązań do zapewnienia wspólnej pamięci masowej. Ten instruktaż przedstawia konfigurowanie magazynu udostępnionego za pomocą NFS. Postępuj zgodnie z najlepszymi rozwiązaniami i używaj protokołu Kerberos do zabezpieczania systemu plików NFS:
Jeśli nie przestrzegasz tych wskazówek, każdy, kto może uzyskać dostęp do sieci i sfałszować adres IP węzła SQL, może uzyskać dostęp do plików danych. Tak jak zawsze należy wykonywać modelowanie zagrożeń w systemie przed użyciem go 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 klienta NFS, aby zamontować ścieżkę plików bazy danych programu SQL Server tak, żeby wskazywały na lokalizację magazynu udostępnionego, upewnij się, że zapisałeś pliki bazy danych w lokalizacji tymczasowej, co umożliwi późniejsze skopiowanie ich do udziału.
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 udziału użytkownik lokalny ma dostęp do odczytu i zapisu udziału.su mssql mkdir /var/opt/mssql/tmp cp /var/opt/mssql/data/* /var/opt/mssql/tmp rm /var/opt/mssql/data/* exitSkonfiguruj klienta NFS na wszystkich węzłach klastra:
Notatka
Aby uzyskać najlepsze praktyki i zalecenia dotyczące magazynu NFS o wysokiej dostępności, zobacz Magazyn NFS o wysokiej dostępności z DRBD i Pacemaker.
W każdym węźle sprawdź, czy program SQL Server rozpoczyna się pomyślnie od nowej ścieżki pliku. W tym momencie program SQL Server powinien być uruchomiony tylko w jednym węźle. Oba te elementy nie mogą być uruchamiane jednocześnie, ponieważ obie próbują jednocześnie uzyskać dostęp do plików danych.
Aby zapobiec uruchamianiu programu SQL Server w obu węzłach, użyj zasobu klastra systemu plików, aby upewnić się, że udział jest zainstalowany tylko przez jeden węzeł naraz.
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/passwdOstroż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ą uzyskiwać dostęp do siebie za pośrednictwem protokołu SSH. Narzędzia takie jak
hb_reportlubcrm_report(w celu 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-Xopcji (zobaczmanstronę). Jeśli na przykład port SSH to 3479, wywołaj elementhb_reportz: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-haAutomatycznie 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 statusPokazuje, ż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 dodasz drugi węzeł, dane wyjściowe wyglądają podobnie do następującego przykładu:
2 nodes configured 1 resource configured Online: [ SLES1 SLES2 ] Full list of resources: admin_addr (ocf::heartbeat:IPaddr2): Started SLES1Notatka
admin_addr to zasób klastra wirtualnego adresu IP skonfigurowany podczas początkowej konfiguracji 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. Dostosuj następujące dwa ustawienia:
- 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 ta wartość reprezentuje czas potrzebny na przełączenie bazy danych do
mastertrybu online przez program SQL Server.
Zaktualizuj wartości w poniższym skrypcie dla Twojego środowiska. Uruchom skrypt w jednym węźle, aby skonfigurować i uruchomić usługę klastrowaną.
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 je również przenieść ręcznie przy użyciu graficznego interfejsu użytkownika programu Pacemaker lub wiersza polecenia.
Użyj polecenia migrate dla tego zadania. Aby na przykład przeprowadzić migrację zasobu SQL do węzła klastra o nazwie SLES2, uruchom polecenie:
crm resource
migrate mssqlha SLES2
Powiązana zawartość
- rozszerzenie wysokiej dostępności systemu SUSE Linux Enterprise — przewodnik administracyjny