Udostępnij za pośrednictwem


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

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

  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 master programu SQL Server przy użyciu konta sa 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.

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

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:

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

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

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

  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
    

    Powinien on pokazać, ż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 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.

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