Konfigurace sdíleného diskového clusteru SLES pro SQL Server
platí pro:SQL Server – Linux
Tato příručka obsahuje pokyny k vytvoření clusteru sdílených disků 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.
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 budou tyto servery nakonfigurované.
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 průvodce použijte SLES s platným předplatným doplňku HA.
Instalace a konfigurace SQL Serveru na každém uzlu clusteru
Instalace a nastavení SQL Serveru na obou uzlech Podrobné pokyny najdete v tématu Pokyny k instalaci SQL Serveru v Linuxu.
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.
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 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 měl každý místní účet mssql přístup k dešifrování hlavního klíče serveru.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í účtusa
a spusťte následující příkaz: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á.
Na primárním uzlu zastavte a zakažte SQL Server.
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
aSLES2
.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 přes SSH. Nástroje, jako jsou
hb_report
nebocrm_report
(pro řešení potíží) a Průzkumník historie Hawku vyžadují přístup SSH bez hesla mezi uzly, jinak můžou shromažďovat jenom data z aktuálního uzlu. Pokud používáte nestandardní port SSH, použijte možnost-X
(viz Další požadavky a doporučení). Pokud je například port SSH 3479, vyvolejtecrm_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 do úložiště soubory databáze.
Konfigurace sdíleného úložiště a přesun databázových souborů
Existují různá řešení pro poskytování sdíleného úložiště. Tento návod ukazuje konfiguraci sdíleného úložiště se systémem souborů NFS. Doporučujeme postupovat podle osvědčených postupů a pomocí protokolu Kerberos zabezpečit systém souborů NFS:
Pokud nebudete dodržovat tyto pokyny, každý, kdo má přístup k vaší síti a dokáže falšovat IP adresu SQL uzlu, bude mít přístup k vašim datovým souborům. Jako vždy se ujistěte, že systém před použitím v produkčním prostředí modelujete.
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í klientského systému souborů NFS pro připojení cesty k souborům databáze SQL Server tak, aby ukazovaly na sdílené úložiště, nezapomeňte uložit soubory databáze do dočasného umístění, abyste je mohli později zkopírovat na sdílené úložiště.
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é databázové soubory. 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 pro čtení i zápis ke sdílené složce.
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
Měli byste dodržovat osvědčené postupy a doporučení SUSE týkající se vysoce dostupného úložiště NFS: vysoce dostupné úložiště NFS s DRBD a Pacemakerem.
Ověřte, že se SQL Server úspěšně spustí s novou cestou k souboru. Udělejte to na každém uzlu. V tuto chvíli by měl SQL Server běžet vždy pouze na jednom uzlu. Oba nemůžou běžet současně, protože se oba pokusí získat přístup k datovým souborům současně (aby se zabránilo náhodnému spuštění SQL Serveru na obou uzlech, použijte prostředek clusteru systému souborů, abyste měli jistotu, že sdílená složka není dvakrát připojená různými uzly). 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
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á.
Všechny uzly clusteru musí mít k sobě přístup přesSSH. Nástroje, jako jsou 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 jenom data z aktuálního uzlu. Pokud používáte nestandardní port SSH, použijte možnost -X (viz stránka man). Pokud je například port SSH 3479, vyvolejte hb_report s:
crm_report -X "-p 3479" [...]
Další informace naleznete v tématu Požadavky na systém a doporučení v dokumentaci SUSE.
Nainstalovat rozšíření pro vysokou dostupnost. Pokud chcete rozšíření nainstalovat, postupujte podle kroků v následujícím článku SUSE:
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
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
Mělo by se zobrazit, že je nakonfigurovaný jeden uzel SLES1.
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 jste úspěšně přidali druhý uzel, výstup je podobný následujícímu:
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 prostředek clusteru virtuálníCH IP adres nakonfigurovaný během počátečního nastavení clusteru s jedním uzlem.
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. Musíte přizpůsobit 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 je to doba, kterou očekáváte, že sql Server bude trvat, než bude databáze
master
online.
Aktualizujte hodnoty z následujícího skriptu pro vaše prostředí. Spuštěním na jednom uzlu nakonfigurujte a spusťte klastrovou 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 prostředek.
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ž byl Pacemaker úspěšně spuštěn jako clusterovaný 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í
Přestože jsou prostředky nakonfigurované tak, aby automaticky převzaly služby při selhání (nebo migrovaly) do jiných uzlů clusteru v případě selhání hardwaru nebo softwaru, můžete také ručně přesunout prostředek do jiného uzlu v clusteru pomocí grafického uživatelského rozhraní Pacemaker nebo příkazového řádku.
Pro tuto úlohu použijte příkaz migrate. Pokud například chcete migrovat prostředek SQL na uzel clusteru s názvem SLES2, spusťte:
crm resource
migrate mssqlha SLES2