Udostępnij za pośrednictwem


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

  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 skorzystać z 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 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 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ć dostęp do niego w celu odszyfrowania klucza głównego serwera.

  4. 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 konta sa 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ąc sp_dropserver i sp_addserver.

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

  1. Sprawdź adres IP dla każdego węzła. Poniższy skrypt przedstawia adres IP bieżącego węzła.

    sudo ip addr show
    
  2. 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życiu vi.

    sudo vi /etc/hosts
    

    W poniższym przykładzie przedstawiono /etc/hosts z dodatkami dla dwóch węzłów o nazwie sqlfcivm1 i sqlfcivm2.

    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:

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 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
    
  2. 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
  3. Zainstaluj pakiety Pacemaker w każdym węźle.

    sudo yum install pacemaker pcs fence-agents-all resource-agents
    
  4. 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
    
  5. 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
    
  6. 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:

  1. Zasób magazynu
  2. Zasób sieciowy
  3. 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.

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

  1. 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
  2. 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.
  3. Uruchom polecenie sudo pcs resource. FCI powinny być w trybie online.

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

  5. Wydaj oświadczenie SELECT @@SERVERNAME. Powinna zwrócić nazwę FCI.

  6. Wydaj oświadczenie SELECT SERVERPROPERTY('ComputerNamePhysicalNetBIOS'). To powinno zwrócić nazwę węzła, na którym działa FCI.

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

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