Udostępnij przez


Konfigurowanie klastra dysków udostępnionych SLES dla programu SQL Server

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

  1. 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.

  2. 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.

  3. 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 (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 nazwie mssql. 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 lokalne mssql mógł uzyskać do niego dostęp w celu odszyfrowania klucza SMK.

  4. 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 SQL Server master za pomocą konta sa i 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.

  5. W węźle podstawowym zatrzymaj i wyłącz program SQL Server.

  6. 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 nazwie SLES1 i SLES2.

    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 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 -X opcji (zobacz Inne wymagania i zalecenia). Jeśli na przykład port SSH to 3479, wywołaj crm_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

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.

  1. 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/*
    exit
    

    Skonfiguruj 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.

  2. 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

  1. 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.

  2. Wszystkie węzły klastra muszą uzyskiwać dostęp do siebie za pośrednictwem protokołu SSH. Narzędzia takie jak hb_report lub crm_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 -X opcji (zobacz man stronę). Jeśli na przykład port SSH to 3479, wywołaj element hb_report z:

    crm_report -X "-p 3479" [...]
    

    Aby uzyskać więcej informacji, zobacz Wymagania systemowe i zalecenia w dokumentacji systemu SUSE.

  3. Zainstaluj rozszerzenie wysokiej dostępności. Aby zainstalować rozszerzenie, wykonaj kroki opisane w następującym artykule SUSE:

    Instalacja i konfiguracja — szybki przewodnik

  4. 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
    
  5. 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
    

    Pokazuje, że jeden węzeł, SLES1, jest skonfigurowany.

  6. 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 SLES1
    

    Notatka

    admin_addr to zasób klastra wirtualnego adresu IP skonfigurowany podczas początkowej konfiguracji klastra z jednym węzłem.

  7. 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 master trybu 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