Sdílet prostřednictvím


Nastavení instance clusteru s podporou přepojení služeb – SQL Server na Linuxu (RHEL)

platí pro:SQL Server – Linux

Instance dvouuzlového clusteru SQL Serveru se sdíleným diskem a podporou převzetí služeb při selhání poskytuje redundanci na úrovni serveru pro zajištění vysoké dostupnosti. V tomto kurzu se naučíte, jak vytvořit instanci clusteru pro převzetí služeb při selhání se dvěma uzly SQL Serveru na Linuxu. Mezi konkrétní kroky, které dokončíte, patří:

  • Nastavení a konfigurace Linuxu
  • Instalace a konfigurace SQL Serveru
  • Nakonfigurujte soubor hostitelů
  • Konfigurace sdíleného úložiště a přesunutí databázových souborů
  • Instalace a konfigurace Pacemakeru na každém uzlu clusteru
  • Nakonfigurujte instanci clusteru pro převzetí služeb při selhání

Tento článek vysvětluje, jak vytvořit instanci dvouuzlového clusteru pro převzetí služeb při selhání se sdíleným diskem pro SQL Server. Tento článek obsahuje pokyny a příklady skriptů pro Red Hat Enterprise Linux (RHEL). Distribuce Ubuntu jsou podobné RHEL, takže příklady skriptů budou normálně fungovat i na Ubuntu.

Informace o konceptech najdete v tématu instance clusteru pro převzetí služeb při selhání – SQL Server na Linuxu.

Požadavky

K dokončení následujícího kompletního scénáře potřebujete dva počítače pro nasazení clusteru se dvěma uzly a dalším serverem pro úložiště. Následující kroky popisují, jak budou tyto servery nakonfigurované.

Nastavení a konfigurace Linuxu

Prvním krokem je konfigurace operačního systému na uzlech clusteru. Na každém uzlu v clusteru nakonfigurujte linuxovou distribuci. Na obou uzlech použijte stejnou distribuci a verzi. Použijte jednu nebo druhou z následujících distribucí:

  • RHEL s platným předplatným rozšíření HA

Instalace a konfigurace SQL Serveru

  1. Instalace a nastavení SQL Serveru na obou uzlech Podrobné pokyny najdete v tématu Pokyny k instalaci SQL Serveru v Linuxu.

  2. Označte jeden uzel jako primární a druhý jako sekundární pro účely konfigurace. Používejte tyto výrazy podle tohoto průvodce.

  3. Na sekundárním uzlu zastavte a zakažte SQL Server. Následující příklad zastaví a zakáže SQL Server:

    sudo systemctl stop mssql-server
    sudo systemctl disable mssql-server
    

    Poznámka

    V době nastavení se pro instanci SQL Serveru vygeneruje hlavní klíč serveru a umístí se do var/opt/mssql/secrets/machine-key. V Linuxu SQL Server vždy běží jako místní účet s názvem mssql. Vzhledem k tomu, že se jedná o místní účet, jeho identita se nesdílí napříč uzly. Proto je potřeba zkopírovat šifrovací klíč z primárního uzlu do každého sekundárního uzlu, aby k němu každý místní mssql účet měl přístup k dešifrování hlavního klíče serveru.

  4. Na primárním uzlu vytvořte přihlášení k SQL Serveru pro Pacemaker a udělte přihlašovací oprávnění ke spuštění sp_server_diagnostics. Pacemaker používá tento účet k ověření, na kterém uzlu běží SQL Server.

    sudo systemctl start mssql-server
    

    Připojte se k databázi sql Serveru master pomocí účtu sa a spusťte následující příkaz:

    USE [master];
    GO
    
    CREATE LOGIN [<loginName>]
        WITH PASSWORD = N'<password>';
    
    ALTER SERVER ROLE [sysadmin] ADD MEMBER [<loginName>];
    

    Opatrnost

    Vaše heslo by mělo postupovat podle výchozích zásad hesel SQL Serveru . Ve výchozím nastavení musí heslo obsahovat alespoň osm znaků a musí obsahovat znaky ze tří z následujících čtyř sad: velká písmena, malá písmena, číslice se základem 10 a symboly. Hesla můžou mít délku až 128 znaků. Používejte hesla, která jsou co nejdéle a složitá.

    Případně můžete oprávnění nastavit na podrobnější úrovni. Přihlášení Pacemaker vyžaduje VIEW SERVER STATE, aby mohl dotazovat stav pomocí sp_server_diagnostics, setupadmina ALTER ANY LINKED SERVER ke spuštění nástroje pro aktualizaci názvu instance FCI názvem prostředku spuštěním sp_dropserver a sp_addserver.

  5. Na primárním uzlu zastavte a zakažte SQL Server.

Nakonfigurujte soubor hostitelů

Na každém uzlu clusteru nakonfigurujte soubor hostitelů. Soubor hostitelů musí obsahovat IP adresu a název každého uzlu clusteru.

  1. Zkontrolujte IP adresu pro každý uzel. Následující skript ukazuje IP adresu vašeho aktuálního uzlu.

    sudo ip addr show
    
  2. Nastavte název počítače na každém uzlu. Dejte každému uzlu jedinečný název, který je 15 znaků nebo méně. Nastavte název počítače tak, že ho přidáte do /etc/hosts. Následující skript umožňuje upravovat /etc/hosts pomocí vi.

    sudo vi /etc/hosts
    

    Následující příklad ukazuje /etc/hosts s doplňky pro dva uzly pojmenované sqlfcivm1 a sqlfcivm2.

    127.0.0.1        localhost localhost4 localhost4.localdomain4
    ::1              localhost localhost6 localhost6.localdomain6
    10.128.18.128    sqlfcivm1
    10.128.16.77     sqlfcivm2
    

Konfigurace úložiště a přesouvání databázových souborů

Potřebujete poskytnout úložiště, ke kterému mají oba uzly přístup. Můžete použít iSCSI, NFS nebo SMB. Nakonfigurujte úložiště, předložte úložiště uzlům clusteru a přesuňte soubory databáze do nového úložiště. Následující články popisují postup pro každý typ úložiště:

Instalace a konfigurace Pacemakeru na každém uzlu clusteru

  1. Na obou uzlech clusteru vytvořte soubor pro uložení uživatelského jména a hesla SQL Serveru pro přihlášení Pacemaker.

    Následující příkaz vytvoří a naplní tento soubor:

    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. Na obou uzlech clusteru otevřete porty firewallu pro Pacemaker. Pokud chcete tyto porty otevřít pomocí firewalld, spusťte následující příkaz:

    sudo firewall-cmd --permanent --add-service=high-availability
    sudo firewall-cmd --reload
    

    Pokud používáte jinou bránu firewall, která nemá integrovanou konfiguraci s vysokou dostupností, je potřeba otevřít následující porty, aby Pacemaker mohl komunikovat s jinými uzly v clusteru:

    • TCP: porty 2224, 3121, 21064
    • UDP: port 5405
  3. Nainstalujte balíčky Pacemaker na každý uzel.

    sudo yum install pacemaker pcs fence-agents-all resource-agents
    
  4. Nastavte heslo pro výchozího uživatele, který se vytvoří při instalaci balíčků Pacemaker a Corosync. Na obou uzlech použijte stejné heslo.

    sudo passwd hacluster
    
  5. Povolte a spusťte službu pcsd a Pacemaker. Uzly se tak po restartování znovu připojí ke clusteru. Na obou uzlech spusťte následující příkaz.

    sudo systemctl enable pcsd
    sudo systemctl start pcsd
    sudo systemctl enable pacemaker
    
  6. Nainstalujte zdrojového agenta FCI pro SQL Server. Na obou uzlech spusťte následující příkazy.

    sudo yum install mssql-server-ha
    

Konfigurujte instanci clusteru pro převzetí služeb při selhání

FCI se vytvoří ve skupině prostředků. To je trochu jednodušší, protože skupina prostředků snižuje potřebu omezení. Prostředky však přidejte do skupiny prostředků v pořadí, v jakém se mají spustit. Pořadí, ve které by měly začít, je:

  1. Zdroj úložiště
  2. Síťový prostředek
  3. Prostředek aplikace

Tento příklad vytvoří FCI ve skupině NewLinFCIGrp. Název skupiny prostředků musí být jedinečný z jakéhokoli prostředku vytvořeného v Pacemakeru.

  1. Vytvořte prostředek disku. Pokud se nejedná o problém, nedostanete zpět žádnou odpověď. Způsob vytvoření prostředku disku závisí na typu úložiště. Následující část ukazuje příklady pro každý typ úložiště (iSCSI, NFS a SMB). Použijte příklad, který se vztahuje na typ úložiště pro clusterované úložiště.

    sudo pcs resource create <iSCSIDiskResourceName> Filesystem device="/dev/<VolumeGroupName>/<LogicalVolumeName>" directory="<FolderToMountiSCSIDisk>" fstype="<FileSystemType>" --group RGName
    
    • <iSCSIDIskResourceName> je název prostředku přidruženého k disku iSCSI.
    • <VolumeGroupName> je název skupiny svazků.
    • <LogicalVolumeName> je název vytvořeného logického svazku.
    • <FolderToMountiSCSIDIsk> je složka pro připojení disku (pro systémové databáze a výchozí umístění by to bylo /var/opt/mssql/data)
    • <FileSystemType> by bylo EXT4 nebo XFS v závislosti na tom, jak byly věci formátovány a jaké distribuce podporuje.

  1. Vytvořte IP adresu, kterou bude používat FCI. Pokud se nejedná o problém, nedostanete zpět žádnou odpověď.

    sudo pcs resource create <IPResourceName> ocf:heartbeat:IPaddr2 ip=<IPAddress> nic=<NetworkCard> cidr_netmask=<NetMask> --group <RGName>
    
    • <IPResourceName> je název prostředku přidruženého k IP adrese.
    • <IPAddress> je IP adresa FCI.
    • <NetworkCard> je síťová karta přidružená k podsíti (to znamená eth0).
    • <NetMask> je maska podsítě (tj. 24).
    • <RGName> je název skupiny prostředků.
  2. Vytvořte prostředek FCI. Pokud se nejedná o problém, nedostanete zpět žádnou odpověď.

    sudo pcs resource create FCIResourceName ocf:mssql:fci op defaults timeout=60s --group RGName
    
    • <FCIResourceName> není pouze název prostředku, ale také uživatelsky přívětivý název spojený s FCI. Toto je to, co uživatelé a aplikace používají k připojení.
    • <RGName> je název skupiny prostředků.
  3. Spusťte příkaz sudo pcs resource. FCI by měl být online.

  4. Připojte se k FCI přes SSMS nebo sqlcmd pomocí názvu DNS/prostředku FCI.

  5. Vydat prohlášení SELECT @@SERVERNAME. Mělo by se vrátit jméno FCI.

  6. Vydej prohlášení SELECT SERVERPROPERTY('ComputerNamePhysicalNetBIOS'). Mělo by vrátit název uzlu, na kterém FCI běží.

  7. Ručně přepněte FCI na ostatní uzly. Pokyny najdete v části Provozu instance clusteru pro převzetí služeb při selhání - SQL Server na Linuxu.

  8. Nakonec nastavte FCI zpět do původního uzlu a odeberte omezení kolokace.

Shrnutí

V tomto kurzu jste dokončili následující úlohy.

  • Nastavení a konfigurace Linuxu
  • Instalace a konfigurace SQL Serveru
  • Nakonfigurujte soubor hosts
  • Konfigurace sdíleného úložiště a přesunutí databázových souborů
  • Instalace a konfigurace Pacemakeru na každém uzlu clusteru
  • Konfigurace instance clusteru s funkcí převzetí služeb při selhání