Sdílet prostřednictvím


Konfigurace sdíleného diskového clusteru SLES pro SQL Server

Platí pro:SQL Server v Linuxu

Tato příručka obsahuje pokyny k vytvoření sdíleného diskového clusteru se dvěma uzly pro SQL Server na SUSE Linux Enterprise Serveru (SLES). Vrstva clusteringu je založená na rozšíření SUSE s vysokou dostupností (HAE) postavené na Pacemakeru.

Poznámka

Počínaje SQL Serverem 2025 (17.x) se nepodporuje SUSE Linux Enterprise Server (SLES).

Další informace o konfiguraci clusteru, možnostech agentů prostředků, správě, osvědčených postupech a doporučeních najdete v SUSE Linux Enterprise High Availability Extension 12 SP5 ().

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 konfiguraci sdílené složky NFS. Následující kroky popisují, jak tyto servery nakonfigurovat.

Nastavení a konfigurace operačního systému na každém uzlu clusteru

Prvním krokem je konfigurace operačního systému na uzlech clusteru. Pro účely tohoto postupu použijte SLES s platným předplatným doplňku HA.

Instalace a konfigurace SQL Serveru na každém uzlu clusteru

  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. Tyto podmínky použijte a následujte tento návod.

  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ě instalace se pro instanci SQL Serveru vygeneruje hlavní klíč serveru (SMK) 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. Šifrovací klíč musíte zkopírovat z primárního uzlu do každého sekundárního uzlu, aby k němu měl každý místní mssql účet přístup, aby mohl dešifrovat sadu SMK.

  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í sa účtu a spusťte následující skript:

    USE [master];
    GO
    
    CREATE LOGIN [<loginName>] with PASSWORD = N'<password>';
    GRANT VIEW SERVER STATE TO <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á.

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

  6. Postupujte podle pokynů v dokumentaci SUSE ke konfiguraci a aktualizaci souboru hostitelů pro každý uzel clusteru. Soubor hosts musí obsahovat IP adresu a název každého uzlu clusteru.

    Pokud chcete zkontrolovat IP adresu aktuálního uzlu, spusťte:

    sudo ip addr show
    

    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/hostname pomocí YAST nebo ručně.

    Následující příklad ukazuje /etc/hosts s přidáním pro dva uzly pojmenované SLES1 a SLES2.

    127.0.0.1      localhost
    10.128.18.128  SLES1
    10.128.16.77   SLES2
    

    Všechny uzly clusteru musí mít k sobě přístup SSH bez hesla. V opačném případě můžou nástroje jako hb_report, crm_report a Průzkumník historie Hawku shromažďovat data pouze z místního uzlu. Pokud používáte nestandardní port SSH, použijte -X tuto možnost (viz Další požadavky a doporučení). Pokud je například port SSH 3479, vyvolejte crm_report pomocí:

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

    Další informace naleznete v Příručka pro správu.

V další části nakonfigurujete sdílené úložiště a přesunete soubory databáze do úložiště.

Konfigurace sdíleného úložiště a přesun databázových souborů

Pro poskytování sdíleného úložiště můžete použít různá řešení. Tento návod ukazuje konfiguraci sdíleného úložiště se systémem souborů NFS. Postupujte podle osvědčených postupů a zabezpečte systém souborů NFS pomocí protokolu Kerberos:

Pokud se těmito pokyny neřídíte, může každý, kdo má přístup k vaší síti a falšuje IP adresu SQL uzlu, získat přístup k vašim datovým souborům. Jako vždy proveďte modelování hrozeb ve vašem systému předtím, než ho použijete v produkčním prostředí.

Další možností úložiště je použití sdílené složky SMB:

Konfigurace serveru NFS

Pokud chcete nakonfigurovat server NFS, přečtěte si následující kroky v dokumentaci k SUSE: Konfigurace serveru NFS.

Konfigurace všech uzlů clusteru pro připojení ke sdílenému úložišti NFS

Před konfigurací systému souborů NFS klienta pro připojení cesty k souborům databáze SQL Serveru tak, aby odkazovaly na umístění sdíleného úložiště, nezapomeňte uložit soubory databáze do dočasného umístění, abyste je mohli později zkopírovat do sdílené složky:

  1. Pouze na primárním uzluuložte soubory databáze do dočasného umístění. Následující skript vytvoří nový dočasný adresář, zkopíruje soubory databáze do nového adresáře a odebere staré soubory databáze. Vzhledem k tomu, že SQL Server běží jako místní uživatel mssql, musíte se ujistit, že po přenosu dat do připojené sdílené složky má místní uživatel přístup ke sdílené složce pro čtení i zápis.

    su mssql
    mkdir /var/opt/mssql/tmp
    cp /var/opt/mssql/data/* /var/opt/mssql/tmp
    rm /var/opt/mssql/data/*
    exit
    

    Nakonfigurujte klienta NFS na všech uzlech clusteru:

    Poznámka

    Osvědčené postupy a doporučení pro SUSE týkající se vysoce dostupného úložiště NFS najdete v tématu Vysoce dostupné úložiště NFS s DRBD a Pacemakerem.

  2. Na každém uzlu ověřte, že SQL Server úspěšně spustí novou cestu k souboru. V tuto chvíli může SQL Server běžet pouze na jediném uzlu. Oba nemůžou běžet současně, protože se oba snaží získat přístup k datovým souborům současně.

    Pokud chcete zabránit spuštění SQL Serveru na obou uzlech, použijte prostředek clusteru systému souborů, abyste zajistili, že je sdílená složka připojená jenom jedním uzlem najednou.

    Následující příkazy spustí SQL Server, zkontrolují stav a pak zastaví SQL Server.

    sudo systemctl start mssql-server
    sudo systemctl status mssql-server
    sudo systemctl stop mssql-server
    

V tomto okamžiku jsou obě instance SQL Serveru nakonfigurované tak, aby běžely se soubory databáze ve sdíleném úložišti. Dalším krokem je konfigurace SQL Serveru pro Pacemaker.

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

  1. Na obou uzlech klastru vytvořte soubor pro uložení uživatelského jména a hesla SQL Serveru pro přihlašování Pacemakeru. 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 '<password>' >> /var/opt/mssql/secrets/passwd
    sudo chown root:root /var/opt/mssql/secrets/passwd
    sudo chmod 600 /var/opt/mssql/secrets/passwd
    

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

  2. Všechny uzly clusteru se musí vzájemně přistupovat přes SSH. Nástroje jako hb_report nebo crm_report (pro řešení potíží) a Průzkumník historie Hawku vyžadují mezi uzly přístup SSH bez hesla. Jinak můžou shromažďovat data pouze z aktuálního uzlu. Pokud používáte nestandardní port SSH, použijte -X možnost (viz man stránka). Pokud je například port SSH 3479, použijte následující příkaz hb_report:

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

    Další informace naleznete v tématu Požadavky na systém a doporučení v dokumentaci SUSE.

  3. Nainstalovat rozšíření pro vysokou dostupnost. Pokud chcete rozšíření nainstalovat, postupujte podle kroků v následujícím článku SUSE:

    Rychlý začátek instalace a nastavení

  4. Nainstalujte agenta prostředků FCI pro SQL Server. Na obou uzlech spusťte následující příkazy:

    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. automaticky nastavit první uzel. Dalším krokem je nastavení spuštěného clusteru s jedním uzlem konfigurací prvního uzlu SLES1. Postupujte podle pokynů v článku SUSE Nastavení prvního uzlu.

    Po dokončení zkontrolujte stav clusteru pomocí crm status:

    crm status
    

    Ukazuje, že je nakonfigurovaný jeden uzel SLES1.

  6. Přidání uzlů do existujícího clusteru. Dále připojte uzel SLES2 ke clusteru. Postupujte podle pokynů v článku SUSE Přidání druhého uzlu.

    Po dokončení zkontrolujte stav klastru pomocí příkazu crm status. Pokud úspěšně přidáte druhý uzel, výstup vypadá podobně jako v následujícím příkladu:

    2 nodes configured
    1 resource configured
    Online: [ SLES1 SLES2 ]
    Full list of resources:
    admin_addr     (ocf::heartbeat:IPaddr2):       Started SLES1
    

    Poznámka

    admin_addr je virtuální IP prostředek clusteru, který konfigurujete po počátečním nastavení clusteru s jedním uzlem.

  7. Postupy odstranění. Pokud potřebujete odebrat uzel z clusteru, použijte skript ha-cluster-remove bootstrap. Další informace naleznete v tématu Přehled skriptů bootstrap.

Konfigurace prostředků clusteru pro SQL Server

Následující kroky vysvětlují, jak nakonfigurovat prostředek clusteru pro SQL Server. Přizpůsobte následující dvě nastavení:

  • Název prostředku clusterovaného SQL Serveru: Název pro prostředek clusterovaného SQL Serveru.
  • hodnota časového limitu: Hodnota časového limitu je doba, po kterou cluster čeká, když se prostředek uvede do režimu online. U SQL Serveru představuje tato hodnota dobu, kterou očekáváte, že sql Server bude trvat, než databázi přenese do master režimu online.

Aktualizujte hodnoty v následujícím skriptu pro vaše prostředí. Spuštěním skriptu na jednom uzlu nakonfigurujte a spusťte clusterovou službu.

sudo crm configure
primitive <sqlServerResourceName> ocf:mssql:fci op start timeout=<timeout_in_seconds>
colocation <constraintName> inf: <virtualIPResourceName> <sqlServerResourceName>
show
commit
exit

Například následující skript vytvoří clusterovaný prostředek SQL Serveru s názvem 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 potvrzení konfigurace se SQL Server spustí na stejném uzlu jako virtuální IP zdroj.

Další informace najdete v tématu Konfigurace a správa prostředků clusteru (příkazový řádek).

Ověřte, že je sql Server spuštěný.

Pokud chcete ověřit, že je SQL Server spuštěný, spusťte příkaz crm status:

crm status

Následující příklad ukazuje výsledky, když se Pacemaker úspěšně spustí jako klastrový prostředek.

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

Správa prostředků clusteru

Informace o správě prostředků clusteru najdete v následujícím článku SUSE: Správa prostředků clusteru

Ruční převzetí služeb při selhání

I když jsou prostředky nakonfigurované tak, aby automaticky převzaly funkce nebo migrovaly do jiných uzlů clusteru při selhání hardwaru nebo softwaru, je také můžete přesunout ručně pomocí grafického uživatelského rozhraní Pacemaker nebo příkazového řádku.

migrate Použijte příkaz pro tento úkol. Pokud chcete například migrovat prostředek SQL na uzel clusteru s názvem SLES2, spusťte:

crm resource
migrate mssqlha SLES2