Tento článek popisuje, jak vytvořit cluster se třemi uzly v Linuxu pomocí Pacemakeru a přidat dříve vytvořenou skupinu dostupnosti jako prostředek v clusteru. Pro zajištění vysoké dostupnosti skupina dostupnosti v Linuxu vyžaduje tři uzly – viz Vysoká dostupnost a ochrana dat pro konfigurace skupin dostupnosti.
SQL Server není tak úzce integrovaný s Pacemakerem na Linuxu jako s Windows Server s podporou převzetí služeb při selhání (WSFC). Instance SQL Serveru není propojená s clusterem a veškerá orchestrace je řízena zvnějšku. Pacemaker poskytuje orchestraci prostředků clusteru. Název virtuální sítě je specifický pro clustering systému Windows Server s podporou převzetí služeb při selhání; ekvivalent v Pacemakeru neexistuje. Zobrazení dynamické správy skupin dostupnosti, která dotazují informace o clusteru, vrací prázdné řádky v clusterech Pacemaker. Pokud chcete vytvořit naslouchací službu pro transparentní znovupřipojení po přepnutí, ručně zaregistrujte název naslouchací služby v DNS s IP adresou použitou k vytvoření virtuálního prostředku IP adresy.
Následující části projdou postupem nastavení clusteru Pacemaker a přidání skupiny dostupnosti jako prostředku v clusteru pro zajištění vysoké dostupnosti pro každou podporovanou linuxovou distribuci.
Vrstva clusterování je založená na doplňku Red Hat Enterprise Linux (RHEL) HA, který byl vytvořen na základě Pacemaker.
Poznámka
Přístup k úplné dokumentaci k Red Hatu vyžaduje platné předplatné.
Další informace o konfiguraci clusteru, možnostech agentů prostředků a správě naleznete v referenční dokumentaci RHEL.
Plán
Postup vytvoření skupiny dostupnosti na linuxových serverech pro zajištění vysoké dostupnosti se liší od kroků v clusteru s podporou převzetí služeb při selhání Windows Serveru. Následující seznam popisuje základní kroky:
Konfigurace SQL Serveru na uzlech clusteru.
Vytvoření skupiny dostupnosti.
Nakonfigurujte správce prostředků clusteru, například Pacemaker. Tyto pokyny jsou v tomto článku.
Způsob konfigurace správce prostředků clusteru závisí na konkrétní distribuci Linuxu.
Důležitý
Produkční prostředí vyžadují fencing agenta pro zajištění vysoké dostupnosti. Ukázky v této dokumentaci nepoužívají ochranné prostředky. Ukázky slouží pouze k testování a ověřování.
Linuxový cluster používá mechanismus ohraničení k návratu clusteru do známého stavu. Způsob konfigurace ohraničení závisí na distribuci a prostředí. V současné době není v některých cloudových prostředích k dispozici ohraničení. Další informace najdete v tématu Zásady podpory pro clustery s vysokou dostupností RHEL – Virtualizační platformy.
Přidejte skupinu dostupnosti jako zdroj v clusteru.
Pokud chcete nakonfigurovat vysokou dostupnost pro RHEL, povolte předplatné s vysokou dostupností a nakonfigurujte Pacemaker.
Povolení předplatného s vysokou dostupností pro RHEL
Každý uzel v clusteru musí mít odpovídající předplatné pro RHEL a doplněk Vysoká dostupnost. Projděte si požadavky v oddílu , jak instalovat balíčky clusteru s vysokou dostupností v systému Red Hat Enterprise Linux. Při konfiguraci předplatného a úložišť postupujte takto:
Zaregistrujte systém.
sudo subscription-manager register
Zadejte svoje uživatelské jméno a heslo.
Zobrazí seznam dostupných fondů pro registraci.
sudo subscription-manager list --available
V seznamu dostupných fondů si poznamenejte ID fondu pro předplatné s vysokou dostupností.
Aktualizujte následující skript. Nahraďte <pool id>
ID fondu pro zajištění vysoké dostupnosti z předchozího kroku. Spuštěním skriptu připojte předplatné.
sudo subscription-manager attach --pool=<pool id>
Povolte úložiště.
RHEL 7
sudo subscription-manager repos --enable=rhel-ha-for-rhel-7-server-rpms
RHEL 8
sudo subscription-manager repos --enable=rhel-8-for-x86_64-highavailability-rpms
Další informace najdete v tématu Pacemaker – opensourcový cluster s vysokou dostupností.
Po nakonfigurování předplatného proveďte následující kroky a nakonfigurujte Pacemaker:
Po registraci předplatného proveďte následující kroky a nakonfigurujte Pacemaker:
Na všech 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 brána firewall nemá integrovanou konfiguraci vysoké dostupnosti, otevřete pro Pacemaker následující porty.
- TCP: Porty 2224, 3121, 21064
- UDP: Port 5405
Nainstalujte balíčky Pacemaker na všechny uzly.
sudo yum install pacemaker pcs fence-agents-all resource-agents
Nastavte heslo pro výchozího uživatele, který se vytvoří při instalaci balíčků Pacemaker a Corosync. Na všech uzlech použijte stejné heslo.
sudo passwd hacluster
Pokud chcete uzlům umožnit opětovné připojení clusteru po restartování, povolte a spusťte službu pcsd
a Pacemaker. Na všech uzlech spusťte následující příkaz.
sudo systemctl enable pcsd
sudo systemctl start pcsd
sudo systemctl enable pacemaker
Vytvořte cluster. Cluster vytvoříte spuštěním následujícího příkazu:
RHEL 7
sudo pcs cluster auth <node1> <node2> <node3> -u hacluster -p <password for hacluster>
sudo pcs cluster setup --name <clusterName> <node1> <node2> <node3>
sudo pcs cluster start --all
sudo pcs cluster enable --all
RHEL 8
V případě RHEL 8 je potřeba uzly ověřit samostatně. Po zobrazení výzvy ručně zadejte uživatelské jméno a heslo pro hacluster
.
sudo pcs host auth <node1> <node2> <node3>
sudo pcs cluster setup <clusterName> <node1> <node2> <node3>
sudo pcs cluster start --all
sudo pcs cluster enable --all
Poznámka
Pokud jste dříve nakonfigurovali cluster na stejných uzlech, musíte při spuštění pcs cluster setup
použít možnost --force
. Tato možnost je ekvivalentní spuštění pcs cluster destroy
. Pokud chcete znovu povolit Pacemaker, spusťte sudo systemctl enable pacemaker
.
Nainstalujte agenta prostředků SQL Serveru pro SQL Server. Na všech uzlech spusťte následující příkazy.
sudo yum install mssql-server-ha
Po nakonfigurování Pacemakeru použijte k interakci s clusterem pcs
. Z clusteru spusťte všechny příkazy na jednom uzlu.
Úvahy o několika síťových rozhraních
Při nastavování vysoké dostupnosti u serverů s více síťovými kartami postupujte podle těchto návrhů:
Ujistěte se, že je soubor hosts
nastavený tak, aby se IP adresy serveru pro více síťových adaptérů přeložily na název hostitele serveru s Linuxem na každém uzlu.
Při nastavování clusteru pomocí Pacemakeru by mělo použití názvů hostitelů serverů umožnit Corosyncu nakonfigurovat nastavení pro všechny síťové karty. Chceme jenom komunikaci Pacemaker/Corosync přes jednu síťovou kartu. Po nakonfigurování clusteru Pacemaker upravte konfiguraci v souboru corosync.conf
a aktualizujte IP adresu vyhrazené síťové karty, kterou chcete použít pro komunikaci Pacemaker/Corosync.
<hostname>
zadané v souboru corosync.conf
by měly být stejné jako výstup zadaný při zpětném vyhledávání (ping -a <ip_address>
) a měl by to být krátký název nakonfigurovaný na hostiteli. Ujistěte se, že soubor hosts
také představuje správnou IP adresu pro překlad názvů na IP adresy.
Změny v příkladu souboru corosync.conf
jsou zvýrazněné níže:
nodelist {
node {
ring0_addr: <ip_address_of_node1_NIC1>
name: <hostname_of_node1>
nodeid: 1
}
node {
ring0_addr: <ip_address_of_node2_NIC1>
name: <hostname_of_node2>
nodeid: 2
}
node {
ring0_addr: <ip_address_of_node3_NIC1>
name: <hostname_of_node3>
nodeid: 3
}
}
Dodavatelé clusteru Pacemaker vyžadují ohraničení uzlu, které selhalo, pomocí zařízení pro ohraničení nakonfigurované pro podporované nastavení clusteru. Pokud Správce prostředků clusteru nemůže určit stav uzlu nebo prostředku na uzlu, propojení cluster znovu přenese do známého stavu.
Šermovací zařízení poskytuje agenta šermování.
Nastavení Pacemakeru v Red Hat Enterprise Linuxu v Azure poskytuje příklad vytvoření zařízení pro ohraničení pro tento cluster v Azure. Upravte pokyny pro vaše prostředí.
Ohraničení na úrovni prostředků zajišťuje, aby nedošlo k poškození dat v výpadku konfigurací prostředku. K označení disku na uzlu jako zastaralého při výpadku komunikačního propojení můžete například použít ohraničení na úrovni prostředků.
Ohraničení na úrovni uzlu zajišťuje, že uzel nespouští žádné prostředky. To se provádí resetováním uzlu. Pacemaker podporuje širokou škálu zařízení pro šermování. Mezi příklady patří nerušitelný zdroj napájení nebo karty rozhraní pro správu pro servery.
Informace o ohraničení uzlu, který selhal, najdete v následujících článcích:
Poznámka
Vzhledem k tomu, že konfigurace ohraničení na úrovni uzlu závisí silně na vašem prostředí, zakažte ji pro účely tohoto kurzu (dá se nakonfigurovat později). Následující skript zakáže ohraničení na úrovni uzlů:
sudo pcs property set stonith-enabled=false
Zakázání oplocení je určené jenom pro účely testování. Pokud plánujete používat Pacemaker v produkčním prostředí, měli byste naplánovat implementaci ohraničení v závislosti na vašem prostředí a ponechat ji povolenou.
Nastavit vlastnost clusteru interval pro opětovnou kontrolu clusteru
cluster-recheck-interval
označuje interval dotazování, ve kterém cluster kontroluje změny parametrů prostředků, omezení nebo jiných možností clusteru. Pokud replika přestane fungovat, klastr se pokusí restartovat repliku v intervalu určeném hodnotami failure-timeout
a cluster-recheck-interval
. Pokud je například failure-timeout
nastaveno na 60 sekund a cluster-recheck-interval
nastaveno na 120 sekund, restartování proběhne v intervalu, který je větší než 60 sekund, ale menší než 120 sekund. Doporučujeme nastavit časový limit selhání na 60 sekund a cluster-recheck-interval
na hodnotu větší než 60 sekund. Nastavení cluster-recheck-interval
na malou hodnotu se nedoporučuje.
Chcete-li aktualizovat hodnotu vlastnosti na 2 minutes
, spusťte:
sudo pcs property set cluster-recheck-interval=2min
Pokud již máte prostředek skupiny dostupnosti spravovaný clusterem Pacemaker, balíček Pacemaker 1.1.18-11.el7 zavedl změnu chování pro nastavení clusteru start-failure-is-fatal
, když je jeho hodnota false
. Tato změna má vliv na pracovní postup převzetí služeb při selhání. Pokud dojde k výpadku primární repliky, očekává se, že cluster přepne na jednu z dostupných sekundárních replik. Místo toho si uživatelé všimnou, že se cluster neustále pokouší spustit neúspěšnou primární repliku. Pokud se primární replika nikdy nepřipojí online (kvůli trvalému výpadku), cluster neprovede převzetí služeb na jinou dostupnou sekundární repliku. Z důvodu této změny už není platná dříve doporučená konfigurace pro nastavení start-failure-is-fatal
a nastavení se musí vrátit zpět na výchozí hodnotu true
.
Kromě toho je třeba aktualizovat prostředek AG, aby zahrnoval vlastnost failure-timeout
.
Pro aktualizaci hodnoty vlastnosti na true
spusťte:
sudo pcs property set start-failure-is-fatal=true
Pokud chcete aktualizovat vlastnost prostředku ag_cluster
failure-timeout
na 60s
, spusťte:
pcs resource update ag_cluster meta failure-timeout=60s
Informace o vlastnostech clusteru Pacemaker naleznete v tématu Vlastnosti clusterů Pacemaker.
Vytvoření přihlášení k SQL Serveru pro Pacemaker
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 všech instancích SQL Serveru vytvořte přihlášení k serveru pro Pacemaker.
Následující Transact-SQL vytvoří přihlášení. Nahraďte <password>
vlastním složitým heslem.
USE [master];
GO
CREATE LOGIN [pacemakerLogin]
WITH PASSWORD = N'<password>';
ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
V době vytvoření skupiny dostupnosti vyžaduje uživatel Pacemaker ALTER
, CONTROL
a VIEW DEFINITION
oprávnění ke skupině dostupnosti po vytvoření, ale před tím, než se do ní přidají všechny uzly.
Na všech instancích SQL Serveru uložte přihlašovací údaje pro přihlášení do SQL Serveru.
Nahraďte <password>
vlastním složitým heslem.
echo 'pacemakerLogin' >> ~/pacemaker-passwd
echo '<password>' >> ~/pacemaker-passwd
sudo mv ~/pacemaker-passwd /var/opt/mssql/secrets/passwd
sudo chown root:root /var/opt/mssql/secrets/passwd
sudo chmod 400 /var/opt/mssql/secrets/passwd # Only readable by root
Vytvořte prostředek skupiny dostupnosti
K vytvoření prostředku skupiny dostupnosti použijte příkaz pcs resource create
a nastavte vlastnosti prostředku. Následující příkaz vytvoří prostředek typu hlavní/podřízený ocf:mssql:ag
pro skupinu dostupnosti s názvem ag1
.
RHEL 7
sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=60s master notify=true
RHEL 8
S dostupností RHEL 8se vytvářecí syntaxe změnila. Pokud používáte RHEL 8, terminologie master
se změnila na promotable
. Místo výše uvedeného příkazu použijte následující příkaz create:
sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=60s promotable notify=true
Poznámka
Když prostředek vytvoříte a poté pravidelně, agent prostředků Pacemaker automaticky nastaví hodnotu REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
ve skupině dostupnosti na základě konfigurace této skupiny. Pokud má například skupina dostupnosti tři synchronní repliky, agent nastaví REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
na 1
. Podrobnosti a další možnosti konfigurace najdete v tématu Vysoká dostupnost a ochrana dat pro konfigurace skupin dostupnosti.
Vytvoření prostředku virtuální IP adresy
Pokud chcete vytvořit prostředek virtuální IP adresy, spusťte na jednom uzlu následující příkaz. Použijte dostupnou statickou IP adresu ze sítě. Nahraďte IP adresu mezi <10.128.16.240>
platnou IP adresou.
sudo pcs resource create virtualip ocf:heartbeat:IPaddr2 ip=<10.128.16.240>
V Pacemakeru neexistuje žádný ekvivalent názvu virtuálního serveru. Pokud chcete použít připojovací řetězec odkazující na název řetězcového serveru místo IP adresy, zaregistrujte virtuální IP adresu a požadovaný název virtuálního serveru v DNS. V případě konfigurací zotavení po havárii zaregistrujte požadovaný název virtuálního serveru a IP adresu u serverů DNS v primární i lokalitě zotavení po havárii.
Přidání omezení kolokace
V téměř každém rozhodnutí v clusteru Pacemaker, například při výběru místa, kde by měl prostředek běžet, se postupuje na základě porovnání hodnocení. Skóre se vypočítává na každý zdroj. Správce prostředků clusteru zvolí uzel s nejvyšším skóre pro konkrétní prostředek. Pokud má uzel záporné skóre pro prostředek, nelze tento prostředek na daný uzel přiřadit.
V klastru Pacemaker můžete prostřednictvím omezení ovlivňovat rozhodnutí klastru. Omezení mají skóre. Pokud má omezení nižší skóre než INFINITY
, Pacemaker ho považuje za doporučení. Skóre INFINITY
je povinné.
Pokud chcete zajistit, aby primární replika a prostředky virtuální IP adresy běžely na stejném hostiteli, definujte omezení kolokace se skóre INFINITY. Pokud chcete přidat omezení kolokace, spusťte na jednom uzlu následující příkaz.
RHEL 7
Když vytvoříte prostředek ag_cluster
v RHEL 7, vytvoří prostředek jako ag_cluster-master
. Pro RHEL 7 použijte následující příkaz:
sudo pcs constraint colocation add virtualip ag_cluster-master INFINITY with-rsc-role=Master
RHEL 8
Když vytvoříte prostředek ag_cluster
v RHEL 8, vytvoří prostředek jako ag_cluster-clone
. Pro RHEL 8 použijte následující příkaz:
sudo pcs constraint colocation add virtualip with master ag_cluster-clone INFINITY with-rsc-role=Master
Přidání omezení řazení
Omezení kolokace má implicitní omezení řazení. Než přesune prostředek skupiny dostupnosti, přesune prostředek virtuální IP adresy. Ve výchozím nastavení je posloupnost událostí:
Uživatel přesune pcs resource move
na primární uzel skupiny dostupnosti z uzlu1 na uzel2.
Prostředek virtuální IP adresy se zastaví na uzlu 1.
Virtuální IP prostředek se spustí na uzlu 2.
Poznámka
V tomto okamžiku IP adresa dočasně odkazuje na uzel 2, zatímco uzel 2 je stále sekundární uzel před převzetím služeb při selhání.
Primární skupina dostupnosti na uzlu 1 se sníží na sekundární.
Sekundární skupina dostupnosti na uzlu 2 je povýšena na primární.
Aby se zabránilo dočasnému nasměrování IP adresy na uzel se sekundárním uzlem před přechodem na jiný uzel při selhání, přidejte omezující podmínku.
Pokud chcete přidat omezení řazení, spusťte na jednom uzlu následující příkaz:
RHEL 7
sudo pcs constraint order promote ag_cluster-master then start virtualip
RHEL 8
sudo pcs constraint order promote ag_cluster-clone then start virtualip
Důležitý
Po nakonfigurování clusteru a přidání skupiny dostupnosti jako prostředku clusteru nemůžete použít Transact-SQL k převzetí služeb při selhání prostředků skupiny dostupnosti. Prostředky clusteru SQL Serveru na Linuxu nejsou tak úzce propojené s operačním systémem jako na clusteru převzetí služeb při selhání Windows Serveru (WSFC). Služba SQL Serveru neví o přítomnosti clusteru. Veškerá orchestrace se provádí prostřednictvím nástrojů pro správu clusteru. V RHEL nebo Ubuntu používají pcs
a v SLES používají nástroje crm
.
Ruční selhání skupiny dostupnosti pomocí pcs
. Nezahajujte převzetí služeb při selhání pomocí jazyka Transact-SQL. Pokyny najdete v tématu převzetí služeb při selhání.
Související obsah
Vrstva clusteringu je založená na rozšíření SUSE s vysokou dostupností (HAE) postavené na Pacemakeru.
Další informace o konfiguraci clusteru, možnostech agenta prostředků, správě, osvědčených postupech a doporučeních najdete v SUSE Linux Enterprise High Availability Extension.
Plán
Postup vytvoření skupiny dostupnosti pro vysokou dostupnost se liší mezi linuxovými servery a clusterem s podporou převzetí služeb při selhání Windows Serveru. Následující seznam popisuje základní kroky:
Konfigurace SQL Serveru na uzlech clusteru.
Vytvoření skupiny dostupnosti.
Nakonfigurujte správce prostředků clusteru, například Pacemaker. Tyto pokyny jsou v tomto článku.
Způsob konfigurace správce prostředků clusteru závisí na konkrétní distribuci Linuxu.
Důležitý
Produkční prostředí vyžadují agenta zajišťujícího vysokou dostupnost. Příklady v tomto článku nepoužívají bariérové agenty. Slouží pouze k testování a ověřování.
Linuxový cluster používá metodu zvanou "fencing", aby vrátil cluster do známého stavu. Způsob konfigurace ohraničení závisí na distribuci a prostředí. V současné době není v některých cloudových prostředích k dispozici ohraničení. Další informace najdete v tématu SUSE Linux Enterprise High Availability Extension.
Přidejte skupinu dostupnosti jako prostředek do clusteru
Požadavky
K dokončení následujícího kompletního scénáře potřebujete tři počítače pro nasazení clusteru se třemi uzly. Následující kroky popisují, jak tyto servery nakonfigurovat.
Prvním krokem je konfigurace operačního systému na uzlech clusteru. Pro účely tohoto návodu použijte SLES 12 SP3 s platným předplatným doplňku HA.
Nainstalujte a nastavte službu SQL Serveru na všech uzlech. Podrobné pokyny najdete v tématu Pokyny k instalaci SQL Serveru v Linuxu.
Označte jeden uzel jako primární a druhý uzel jako sekundární. V tomto průvodci používejte tyto termíny.
Ujistěte se, že uzly, které budou součástí clusteru, spolu můžou komunikovat.
Následující příklad ukazuje /etc/hosts
s dodatky pro tři uzly pojmenované SLES1, SLES2 a SLES3.
127.0.0.1 localhost
10.128.16.33 SLES1
10.128.16.77 SLES2
10.128.16.22 SLES3
Všechny uzly clusteru musí mít k sobě přístup přes SSH. Nástroje, jako jsou hb_report
nebo crm_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 man
stránku). Pokud je například port SSH 3479, vyvolejte crm_report
s:
sudo crm_report -X "-p 3479" [...]
Další informace najdete v příručce ke správě SLES – sekce Různé.
Vytvoření přihlášení k SQL Serveru pro Pacemaker
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 všech instancích SQL Serveru vytvořte přihlášení k serveru pro Pacemaker.
Následující Transact-SQL vytvoří přihlášení. Nahraďte <password>
vlastním složitým heslem.
USE [master];
GO
CREATE LOGIN [pacemakerLogin]
WITH PASSWORD = N'<password>';
ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
V době vytvoření skupiny dostupnosti vyžaduje uživatel Pacemaker ALTER
, CONTROL
a VIEW DEFINITION
oprávnění ke skupině dostupnosti po vytvoření, ale před tím, než se do ní přidají všechny uzly.
Na všech instancích SQL Serveru uložte přihlašovací údaje pro SQL Server login.
Nahraďte <password>
vlastním složitým heslem.
echo 'pacemakerLogin' >> ~/pacemaker-passwd
echo '<password>' >> ~/pacemaker-passwd
sudo mv ~/pacemaker-passwd /var/opt/mssql/secrets/passwd
sudo chown root:root /var/opt/mssql/secrets/passwd
sudo chmod 400 /var/opt/mssql/secrets/passwd # Only readable by root
Na serverech s Linuxem nakonfigurujte skupinu dostupnosti a pak nakonfigurujte prostředky clusteru. Informace o konfiguraci skupiny dostupnosti najdete v tématu Konfigurace skupiny dostupnosti SQL Server Always On pro zabezpečení vysoké dostupnosti na Linuxu
Nainstalujte rozšíření pro vysokou dostupnost
Referenční informace najdete v tématu Instalace SUSE Linux Enterprise Serveru a rozšíření s vysokou dostupností.
Nainstalujte balíček agenta prostředků SQL Serveru na oba uzly.
sudo zypper install mssql-server-ha
Nastavení prvního uzlu
Najdete pokyny k instalaci SLES .
Přihlaste se jako root
k fyzickému nebo virtuálnímu počítači, který chcete použít jako uzel clusteru.
Spusťte inicializační skript pomocí:
sudo ha-cluster-init
Pokud protokol NTP není nakonfigurovaný tak, aby se spustil při spuštění, zobrazí se zpráva.
Pokud se přesto rozhodnete pokračovat, skript automaticky vygeneruje klíče pro přístup SSH a synchronizační nástroj Csync2 a spustí služby potřebné pro obojí.
Konfigurace komunikační vrstvy clusteru (Corosync):
Zadejte síťovou adresu, ke které chcete vytvořit vazbu. Skript ve výchozím nastavení navrhuje síťovou adresu eth0. Případně zadejte jinou síťovou adresu, například adresu bond0.
Zadejte adresu vícesměrového vysílání. Skript navrhuje náhodnou adresu, kterou můžete použít jako výchozí.
Zadejte port vícesměrového vysílání. Skript navrhuje jako výchozí hodnotu 5405.
Pokud chcete nakonfigurovat SBD ()
, zadejte trvalou cestu k oddílu blokového zařízení, které chcete použít pro SBD. Cesta musí být konzistentní ve všech uzlech v clusteru.
Nakonec skript spustí službu Pacemaker, která přenese cluster s jedním uzlem do režimu online a povolí rozhraní pro správu webu Hawk2. Na obrazovce se zobrazí adresa URL, která se má použít pro Hawk2.
V případě jakýchkoli podrobností o procesu nastavení zkontrolujte /var/log/sleha-bootstrap.log
. Teď máte spuštěný cluster s jedním uzlem. Zkontrolujte stav clusteru pomocí příkazu crm status:
sudo crm status
Můžete také zobrazit konfiguraci clusteru pomocí crm configure show xml
nebo crm configure show
.
Procedura bootstrap vytvoří uživatele Linuxu s názvem hacluster
s heslem linux
. Co nejdříve nahraďte výchozí heslo zabezpečeným heslem:
sudo passwd hacluster
Přidání uzlů do existujícího clusteru
Pokud máte cluster spuštěný s jedním nebo více uzly, přidejte další uzly clusteru pomocí skriptu bootstrap pro připojení ke clusteru ha-cluster. Skript potřebuje přístup jenom k existujícímu uzlu clusteru a dokončí základní nastavení na aktuálním počítači automaticky. Použijte následující kroky:
Pokud jste nakonfigurovali existující uzly clusteru pomocí modulu clusteru YaST
, před spuštěním ha-cluster-join
se ujistěte, že jsou splněné následující požadavky:
Přihlaste se jako root
k fyzickému nebo virtuálnímu počítači, který se má připojit ke clusteru.
Spusťte bootstrap skript pomocí:
sudo ha-cluster-join
Pokud protokol NTP není nakonfigurovaný tak, aby se spustil při spuštění, zobrazí se zpráva.
Pokud se přesto rozhodnete pokračovat, zobrazí se výzva k zadání IP adresy existujícího uzlu. Zadejte IP adresu.
Pokud jste ještě nenakonfigurovali přístup SSH bez hesla mezi oběma počítači, zobrazí se také výzva k zadání kořenového hesla existujícího uzlu.
Po přihlášení k zadanému uzlu skript zkopíruje konfiguraci Corosync, nakonfiguruje SSH a Csync2
a přenese aktuální počítač do režimu online jako nový uzel clusteru. Kromě toho spustí službu potřebnou pro Hawk. Pokud jste nakonfigurovali sdílené úložiště s OCFS2
, vytvoří se také automaticky adresář přípojných bodů pro systém souborů OCFS2
.
Opakujte předchozí kroky pro všechny počítače, které chcete přidat do clusteru.
Podrobnosti o procesu najdete v /var/log/ha-cluster-bootstrap.log
.
Zkontrolujte stav clusteru pomocí sudo crm status
. Pokud jste úspěšně přidali druhý uzel, výstup je podobný následujícímu:
sudo crm status
Zobrazí se výstup podobný následujícímu příkladu.
3 nodes configured
1 resource configured
Online: [ SLES1 SLES2 SLES3]
Full list of resources:
admin_addr (ocf::heartbeat:IPaddr2): Started node1
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.
Po přidání všech uzlů zkontrolujte, jestli potřebujete upravit zásady bez kvoru v globálních možnostech clusteru. To je zvlášť důležité pro clustery se dvěma uzly.
Nastavte vlastnost clusteru interval opětovné kontroly
cluster-recheck-interval
označuje interval dotazování, ve kterém cluster kontroluje změny parametrů prostředků, omezení nebo jiných možností clusteru. Pokud replika přestane fungovat, cluster se pokusí repliku restartovat v intervalu vázaném hodnotou failure-timeout
a cluster-recheck-interval
. Pokud je například failure-timeout
nastaveno na 60 sekund a cluster-recheck-interval
nastaveno na 120 sekund, k restartu dochází v intervalu, který je větší než 60 sekund, ale menší než 120 sekund. Doporučujeme nastavit časový limit selhání na 60 sekund a cluster-recheck-interval
na hodnotu větší než 60 sekund. Nastavení cluster-recheck-interval
na malou hodnotu se nedoporučuje.
Chcete-li aktualizovat hodnotu vlastnosti na 2 minutes
, spusťte:
crm configure property cluster-recheck-interval=2min
Pokud již máte prostředek skupiny dostupnosti spravovaný clusterem Pacemaker, balíček Pacemaker 1.1.18-11.el7 zavedl změnu chování pro nastavení clusteru start-failure-is-fatal
, když je jeho hodnota false
. Tato změna má vliv na pracovní postup převzetí služeb při selhání. Pokud dojde k výpadku primární repliky, očekává se, že cluster převezme jednu z dostupných sekundárních replik. Místo toho si uživatelé všimnou, že se cluster neustále pokouší spustit neúspěšnou primární repliku. Pokud se tento primární server nikdy neaktivuje online (kvůli trvalému výpadku), cluster se nikdy nepřepne na další dostupnou sekundární repliku. Z důvodu této změny už není platná dříve doporučená konfigurace pro nastavení start-failure-is-fatal
a nastavení se musí vrátit zpět na výchozí hodnotu true
.
Kromě toho je potřeba aktualizovat prostředek AG tak, aby zahrnoval vlastnost failure-timeout
.
Pro aktualizaci hodnoty vlastnosti na true
spusťte:
crm configure property start-failure-is-fatal=true
Aktualizujte stávající vlastnost prostředku skupiny dostupnosti failure-timeout
tak, aby se spustila 60s
(nahraďte ag1
názvem prostředku skupiny dostupnosti):
crm configure edit ag1
V textovém editoru přidejte meta failure-timeout=60s
za libovolné param
a před libovolné op
.
Další informace o vlastnostech clusteru Pacemaker naleznete v tématu Konfigurace prostředků clusteru.
Úvahy o použití více síťových rozhraní (NIC)
Při nastavování vysoké dostupnosti u serverů s více síťovými kartami postupujte podle těchto návrhů:
Ujistěte se, že je soubor hosts
nastavený tak, aby se IP adresy serveru pro více síťových adaptérů přeložily na název hostitele serveru s Linuxem na každém uzlu.
Při nastavování clusteru pomocí Pacemakeru by mělo použití názvu hostitele serverů nakonfigurovat Corosync tak, aby nastavila konfiguraci pro všechny síťové karty. Chceme jenom komunikaci Pacemaker/Corosync přes jednu síťovou kartu. Po nakonfigurování clusteru Pacemaker upravte konfiguraci v souboru corosync.conf
a aktualizujte IP adresu vyhrazené síťové karty, kterou chcete použít pro komunikaci Pacemaker/Corosync.
<hostname>
zadané v souboru corosync.conf
by měly být stejné jako výstup zadaný při zpětném vyhledávání (ping -a <ip_address>
) a měl by to být krátký název nakonfigurovaný na hostiteli. Ujistěte se, že soubor hosts
také představuje správnou IP adresu pro mapování názvů.
Změny v příkladu souboru corosync.conf
jsou zvýrazněné níže:
nodelist {
node {
ring0_addr: <ip_address_of_node1_NIC1>
name: <hostname_of_node1>
nodeid: 1
}
node {
ring0_addr: <ip_address_of_node2_NIC1>
name: <hostname_of_node2>
nodeid: 2
}
node {
ring0_addr: <ip_address_of_node3_NIC1>
name: <hostname_of_node3>
nodeid: 3
}
}
Dodavatelé clusteru Pacemaker vyžadují ohraničení uzlu, které selhalo, pomocí zařízení pro ohraničení nakonfigurované pro podporované nastavení clusteru. Pokud Správce prostředků clusteru nemůže určit stav uzlu nebo prostředku na uzlu, fencování znovu přenese cluster do známého stavu.
Ohraničení na úrovni prostředků zajišťuje hlavně to, že během výpadku nedojde k poškození dat tím, že nakonfigurujete prostředek. K označení disku na uzlu jako zastaralého v případě výpadku komunikačního odkazu můžete použít například fencing na úrovni prostředků s DRBD (distribuované replikované blokové zařízení).
Ohraničení na úrovni uzlu zajišťuje, že uzel nespouští žádné prostředky. To se provádí resetováním uzlu a implementace Pacemakeru se nazývá STONITH. Pacemaker podporuje širokou škálu zařízení, jako je nerušitelný napájecí zdroj nebo karty rozhraní pro správu serverů.
Další informace najdete tady:
Během inicializace clusteru je fencing zakázán, pokud není detekována žádná konfigurace. Později ho můžete povolit spuštěním následujícího příkazu:
sudo crm configure property stonith-enabled=true
Důležitý
Zakázání oplocení je určené jenom pro účely testování. Pokud plánujete používat Pacemaker v produkčním prostředí, měli byste naplánovat implementaci ohraničení v závislosti na vašem prostředí a ponechat ji povolenou. SUSE neposkytuje agenty pro ohraničení pro žádná cloudová prostředí (včetně Azure) ani Hyper-V. Dodavatel clusteru proto nenabízí podporu pro spouštění produkčních clusterů v těchto prostředích. Pracujeme na řešení této mezery, která bude k dispozici v budoucích verzích.
Projděte si příručku pro správu SLES.
Povolení Pacemakeru
Povolte Pacemaker, aby se automaticky spouštěl.
Na každém uzlu v clusteru spusťte následující příkaz.
systemctl enable pacemaker
Vytvořit prostředek skupiny dostupnosti
Následující příkaz vytvoří a nakonfiguruje prostředek skupiny dostupnosti pro tři repliky skupiny dostupnosti [ag1]. Operace monitorování a časové limity musí být explicitně specifikovány v SLES na základě skutečnosti, že časové limity jsou vysoce závislé na úlohách a je potřeba pečlivě upravit pro každé nasazení.
Spusťte příkaz na jednom z uzlů v clusteru:
Spuštěním crm configure
otevřete příkazový řádek crm:
sudo crm configure
Na příkazovém řádku crm spusťte následující příkaz a nakonfigurujte vlastnosti prostředku.
primitive ag_cluster \
ocf:mssql:ag \
params ag_name="ag1" \
meta failure-timeout=60s \
op start timeout=60s \
op stop timeout=60s \
op promote timeout=60s \
op demote timeout=10s \
op monitor timeout=60s interval=10s \
op monitor timeout=60s interval=11s role="Master" \
op monitor timeout=60s interval=12s role="Slave" \
op notify timeout=60s
ms ms-ag_cluster ag_cluster \
meta master-max="1" master-node-max="1" clone-max="3" \
clone-node-max="1" notify="true" \
commit
Poznámka
Když prostředek vytvoříte a poté pravidelně, agent prostředků Pacemaker automaticky nastaví hodnotu REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
ve skupině dostupnosti na základě konfigurace této skupiny. Pokud má například skupina dostupnosti tři synchronní repliky, agent nastaví REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
na 1
. Podrobnosti a další možnosti konfigurace najdete v tématu Vysoká dostupnost a ochrana dat pro konfigurace skupin dostupnosti.
Vytvoření prostředku virtuální IP adresy
Pokud jste při spuštění ha-cluster-init
nevytvořili prostředek virtuální IP adresy, můžete tento prostředek vytvořit nyní. Následující příkaz vytvoří virtuální IP prostředek. Nahraďte <0.0.0.0>
dostupnou adresou z vaší sítě a <24>
počtem bitů v masce podsítě CIDR. Spusťte ho na jednom uzlu.
crm configure \
primitive admin_addr \
ocf:heartbeat:IPaddr2 \
params ip=<0.0.0.0> \
cidr_netmask=<24>
Přidání omezení kolokace
Téměř každé rozhodnutí v clusteru Pacemaker, jako je volba místa, kde má být prostředek spuštěn, se provádí porovnáním skóre. Skóre se počítají na prostředek a správce prostředků clusteru zvolí uzel s nejvyšším skóre pro konkrétní prostředek. (Pokud má uzel záporné skóre pro prostředek, nemůže se na daném uzlu spustit.) S rozhodnutími clusteru můžeme manipulovat s omezeními. Omezení mají skóre. Pokud má omezení nižší skóre než NEKONEČNO, jedná se pouze o doporučení. Skóre NEKONEČNA znamená, že je to nutné. Chceme zajistit, aby primární skupina dostupnosti a prostředek virtuální IP adresy běžely na stejném hostiteli, takže definujeme omezení kolokace se skóre NEKONEČNA.
Pokud chcete nastavit omezení kolokace pro virtuální IP adresu, která se má spustit na stejném uzlu jako primární uzel, spusťte na jednom uzlu následující příkaz:
crm configure
colocation vip_on_master inf: \
admin_addr ms-ag_cluster:Master
commit
Přidání omezení řazení
Omezení kolokace má implicitní omezení řazení. Přesune prostředek virtuální IP adresy dříve, než přesune prostředek skupiny dostupnosti. Ve výchozím nastavení je posloupnost událostí:
- Uživatel předá
resource migrate
primární skupině dostupnosti z uzlu1 na uzel2.
- Prostředek virtuální IP adresy se zastaví na uzlu 1.
- Prostředek virtuální IP adresy se spustí na uzlu 2. V tomto okamžiku dočasně IP adresa odkazuje na uzel 2, zatímco je stále sekundární před převzetím funkcí.
- Hlavní uzel skupiny dostupnosti na uzlu 1 je degradován.
- Skupina dostupnosti na uzlu 2 je povýšena na primární.
Aby se zabránilo dočasnému nasměrování IP adresy na uzel se sekundárním před havárií, přidejte pořadí.
Pokud chcete přidat omezení řazení, spusťte na jednom uzlu následující příkaz:
sudo crm configure \
order ag_first inf: ms-ag_cluster:promote admin_addr:start
Důležitý
Po nakonfigurování clusteru a přidání dostupnostní skupiny jako prostředku clusteru nemůžete použít Transact-SQL k přepnutí při selhání prostředků této skupiny. Prostředky clusteru SQL Serveru na Linuxu nejsou tak úzce propojené s operačním systémem, jako jsou na Windows Server Failover Cluster (WSFC). Služba SQL Serveru neví o přítomnosti clusteru. Veškerá orchestrace se provádí prostřednictvím nástrojů pro správu clusteru. V SLES použijte crm
.
Ruční převzetí skupiny dostupnosti pomocí crm
. Nezahajujte převzetí služeb při selhání pomocí jazyka Transact-SQL. Další informace najdete v tématu záložní režim.
Další informace najdete tady:
Související obsah
Plán
Postup vytvoření skupiny dostupnosti na linuxových serverech pro zajištění vysoké dostupnosti se liší od kroků v clusteru s podporou převzetí služeb při selhání Windows Serveru. Následující seznam popisuje základní kroky:
Pokyny k instalaci SQL Serveru v linuxovém.
Konfigurace skupiny vysoké dostupnosti SQL Server Always On pro zajištění vysoké dostupnosti na Linuxu.
Nakonfigurujte správce prostředků clusteru, například Pacemaker. Tyto pokyny jsou v tomto článku.
Způsob konfigurace správce prostředků clusteru závisí na konkrétní distribuci Linuxu.
Důležitý
Produkční prostředí vyžadují agenta zajišťujícího vysokou dostupnost. Příklady v tomto článku nepoužívají omezovací agenty. Slouží pouze k testování a ověřování.
Klastrový systém Linux používá tzv. 'fencing' k navrácení klastru do známého stavu. Způsob konfigurace ohraničení závisí na distribuci a prostředí. V současné době není v některých cloudových prostředích k dispozici ohraničení.
Ohraničení se obvykle implementuje v operačním systému a závisí na prostředí. Pokyny pro ohrazení najdete v dokumentaci distributora operačního systému.
Přidejte skupinu dostupnosti jako prostředek do clusteru.
Na všech uzlech otevřete porty brány firewall. Otevřete port pro službu vysoké dostupnosti Pacemakeru, instanci SQL Serveru a koncový bod skupiny dostupnosti. Výchozí port TCP pro server s SQL Serverem je 1433
.
sudo ufw allow 2224/tcp
sudo ufw allow 3121/tcp
sudo ufw allow 21064/tcp
sudo ufw allow 5405/udp
sudo ufw allow 1433/tcp # Replace with TDS endpoint
sudo ufw allow 5022/tcp # Replace with DATA_MIRRORING endpoint
sudo ufw reload
Případně můžete bránu firewall zakázat, ale nedoporučuje se v produkčním prostředí:
sudo ufw disable
Nainstalujte balíčky Pacemaker. Na všech uzlech spusťte následující příkazy pro Ubuntu 20.04. Další informace o instalaci na předchozí verze najdete v tématu Ubuntu HA – MS SQL Server v Azure.
sudo apt-get install -y pacemaker pacemaker-cli-utils crmsh resource-agents fence-agents corosync python3-azure
Nastavte heslo pro výchozího uživatele, který se vytvoří při instalaci balíčků Pacemaker a Corosync. Na všech uzlech použijte stejné heslo.
sudo passwd hacluster
Vytvoření clusteru
Před vytvořením clusteru musíte na primárním serveru vytvořit ověřovací klíč a zkopírovat ho na ostatní servery, které se účastní skupiny dostupnosti (AG).
Pomocí následujícího skriptu vytvořte na primárním serveru ověřovací klíč:
sudo corosync-keygen
Pomocí scp
můžete zkopírovat vygenerovaný klíč na jiné servery:
sudo scp /etc/corosync/authkey dbadmin@server-02:/etc/corosync
sudo scp /etc/corosync/authkey dbadmin@server-03:/etc/corosync
Pokud chcete vytvořit cluster, upravte soubor /etc/corosync/corosync.conf
na primárním serveru:
sudo vim /etc/corosync/corosync.conf
Soubor corosync.conf
by měl vypadat podobně jako v následujícím příkladu:
totem {
version: 2
cluster_name: agclustername
transport: udpu
crypto_cipher: none
crypto_hash: none
}
logging {
fileline: off
to_stderr: yes
to_logfile: yes
logfile: /var/log/corosync/corosync.log
to_syslog: yes
debug: off
logger_subsys {
subsys: QUORUM
debug: off
}
}
quorum {
provider: corosync_votequorum
}
nodelist {
node {
name: server-01
nodeid: 1
ring0_addr: 10.0.0.4
}
node {
name: server-02
nodeid: 2
ring0_addr: 10.0.0.5
}
node {
name: server-03
nodeid: 3
ring0_addr: 10.0.0.6
}
}
Nahraďte soubor corosync.conf
na jiných uzlech:
sudo scp /etc/corosync/corosync.conf dbadmin@server-02:/etc/corosync
sudo scp /etc/corosync/corosync.conf dbadmin@server-03:/etc/corosync
Restartujte služby pacemaker
a corosync
:
sudo systemctl restart pacemaker corosync
Zkontrolujte stav clusteru a ověřte konfiguraci:
sudo crm status
Zvážení pro více síťových rozhraní (NICs)
Při nastavování vysoké dostupnosti u serverů s více síťovými kartami postupujte podle těchto návrhů:
Ujistěte se, že je soubor hosts
nastavený tak, aby se IP adresy serveru pro více síťových adaptérů přeložily na název hostitele serveru s Linuxem na každém uzlu.
Při nastavování clusteru pomocí Pacemakeru by mělo použití názvu hostitele serverů nakonfigurovat Corosync tak, aby nastavila konfiguraci pro všechny síťové karty. Chceme jenom komunikaci Pacemaker/Corosync přes jednu síťovou kartu. Po nakonfigurování clusteru Pacemaker upravte konfiguraci v souboru corosync.conf
a aktualizujte IP adresu vyhrazené síťové karty, kterou chcete použít pro komunikaci Pacemaker/Corosync.
<hostname>
zadané v souboru corosync.conf
by měly být stejné jako výstup zadaný při zpětném vyhledávání (ping -a <ip_address>
) a měl by to být krátký název nakonfigurovaný na hostiteli. Ujistěte se, že soubor hosts
také představuje správnou IP adresu pro překlad IP adres.
Změny v příkladu souboru corosync.conf
jsou zvýrazněné níže:
nodelist {
node {
ring0_addr: <ip_address_of_node1_NIC1>
name: <hostname_of_node1>
nodeid: 1
}
node {
ring0_addr: <ip_address_of_node2_NIC1>
name: <hostname_of_node2>
nodeid: 2
}
node {
ring0_addr: <ip_address_of_node3_NIC1>
name: <hostname_of_node3>
nodeid: 3
}
}
Dodavatelé clusteru Pacemaker vyžadují ohraničení uzlu, které selhalo, pomocí zařízení pro ohraničení nakonfigurované pro podporované nastavení clusteru. Pokud Správce prostředků clusteru nemůže určit stav uzlu nebo prostředku na uzlu, propojení cluster znovu přenese do známého stavu.
Ohraničení na úrovni prostředků zajišťuje, aby nedošlo k poškození dat, pokud dojde k výpadku. K označení disku na uzlu jako zastaralého v případě výpadku komunikačního odkazu můžete použít například ohraničení na úrovni prostředků s drBD (distribuované replikované blokové zařízení).
Ohraničení na úrovni uzlu zajišťuje, že uzel nespouští žádné prostředky. To se provádí resetováním uzlu a implementace Pacemakeru se nazývá STONITH. Pacemaker podporuje širokou škálu zařízení, například nerušitelný napájecí zdroj nebo karty rozhraní pro správu serverů.
Další informace naleznete v tématu Pacemaker Clusters from Scratch a Fencing and Stonith.
Vzhledem k tomu, že konfigurace ohraničení na úrovni uzlu závisí hodně na vašem prostředí, zakážeme ji pro účely tohoto kurzu (dá se nakonfigurovat později). Na primárním uzlu spusťte následující skript:
sudo crm configure property stonith-enabled=false
V tomto příkladu je zakázání šermu pouze pro účely testování. Pokud plánujete používat Pacemaker v produkčním prostředí, měli byste naplánovat implementaci ohraničení v závislosti na vašem prostředí a ponechat ji povolenou. Obraťte se na dodavatele operačního systému pro informace o agenta fence pro jakoukoli konkrétní distribuci.
Nastavte vlastnost clusteru cluster-recheck-interval
Vlastnost cluster-recheck-interval
označuje interval dotazování, ve kterém cluster kontroluje změny parametrů prostředků, omezení nebo jiných možností clusteru. Pokud replika vypadne, cluster se pokusí repliku restartovat v intervalu vázaném hodnotami failure-timeout
a cluster-recheck-interval
. Pokud je například failure-timeout
nastaveno na 60 sekund a cluster-recheck-interval
nastaveno na 120 sekund, pokouší se o restart v intervalu, který je větší než 60 sekund, ale menší než 120 sekund. Měli byste nastavit failure-timeout
na 60 sekund a cluster-recheck-interval
na hodnotu větší než 60 sekund. Nastavení cluster-recheck-interval
na menší hodnotu se nedoporučuje.
Pro aktualizaci hodnoty vlastnosti na 2 minutes
spustit příkaz:
sudo crm configure property cluster-recheck-interval=2min
Pokud již máte prostředek skupiny dostupnosti spravovaný clusterem Pacemaker, balíček Pacemaker 1.1.18-11.el7 zavedl změnu chování pro nastavení clusteru start-failure-is-fatal
, když je jeho hodnota false
. Tato změna má vliv na pracovní postup převzetí služeb při selhání. Pokud dojde k výpadku primární repliky, očekává se, že cluster přepne na jednu z dostupných sekundárních replik. Místo toho si uživatelé všimnou, že se cluster neustále pokouší spustit neúspěšnou primární repliku. Pokud se ten primární nikdy nedostane do provozu (kvůli trvalému výpadku), cluster neprovede přepnutí na jinou dostupnou sekundární repliku. Z důvodu této změny už není platná dříve doporučená konfigurace pro nastavení start-failure-is-fatal
a nastavení se musí vrátit zpět na výchozí hodnotu true
.
Kromě toho je potřeba aktualizovat prostředek AG tak, aby zahrnoval vlastnost failure-timeout
.
Hodnotu vlastnosti nastavte na true
následovně:
sudo crm configure property start-failure-is-fatal=true
Aktualizujte stávající vlastnost prostředku skupiny dostupnosti failure-timeout
na 60s
(nahraďte ag1
konkrétním názvem prostředku vaší skupiny dostupnosti):
sudo crm configure meta failure-timeout=60s
Instalace agenta prostředků SQL Serveru pro integraci s Pacemakerem
Na všech uzlech spusťte následující příkazy.
sudo apt-get install mssql-server-ha
Vytvoření přihlášení k SQL Serveru pro Pacemaker
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 všech instancích SQL Serveru vytvořte přihlášení k serveru pro Pacemaker.
Následující Transact-SQL vytvoří přihlášení. Nahraďte <password>
vlastním složitým heslem.
USE [master];
GO
CREATE LOGIN [pacemakerLogin]
WITH PASSWORD = N'<password>';
ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
V době vytvoření skupiny dostupnosti vyžaduje uživatel Pacemaker ALTER
, CONTROL
a VIEW DEFINITION
oprávnění ke skupině dostupnosti po vytvoření, ale před tím, než se do ní přidají všechny uzly.
Na všech instancích SQL Serveru uložte přihlašovací údaje pro loginSQL Serveru.
Nahraďte <password>
vlastním složitým heslem.
echo 'pacemakerLogin' >> ~/pacemaker-passwd
echo '<password>' >> ~/pacemaker-passwd
sudo mv ~/pacemaker-passwd /var/opt/mssql/secrets/passwd
sudo chown root:root /var/opt/mssql/secrets/passwd
sudo chmod 400 /var/opt/mssql/secrets/passwd # Only readable by root
Vytvořit prostředek skupiny dostupnosti
K vytvoření prostředku skupiny dostupnosti použijte příkaz sudo crm configure
k nastavení vlastností prostředku. Následující příklad vytvoří prostředek typu primární/replika ocf:mssql:ag
pro skupinu dostupnosti s názvem ag1
.
~$ sudo crm
configure
primitive ag1_cluster \
ocf:mssql:ag \
params ag_name="ag1" \
meta failure-timeout=60s \
op start timeout=60s \
op stop timeout=60s \
op promote timeout=60s \
op demote timeout=10s \
op monitor timeout=60s interval=10s \
op monitor timeout=60s on-fail=demote interval=11s role="Master" \
op monitor timeout=60s interval=12s role="Slave" \
op notify timeout=60s
ms ms-ag1 ag1_cluster \
meta master-max="1" master-node-max="1" clone-max="3" \
clone-node-max="1" notify="true"
commit
Poznámka
Když prostředek vytvoříte a poté pravidelně, agent prostředků Pacemaker automaticky nastavuje hodnotu REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
pro skupinu dostupnosti na základě konfigurace skupiny dostupnosti. Pokud má například skupina dostupnosti tři synchronní repliky, agent nastaví REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
na 1
. Podrobnosti a další možnosti konfigurace najdete v tématu Vysoká dostupnost a ochrana dat pro konfigurace skupin dostupnosti.
Vytvořte virtuální IP prostředek
Pokud chcete vytvořit prostředek virtuální IP adresy, spusťte na jednom uzlu následující příkaz. Použijte dostupnou statickou IP adresu ze sítě. Před spuštěním skriptu nahraďte hodnoty mezi < ... >
platnou IP adresou.
sudo crm configure primitive virtualip \
ocf:heartbeat:IPaddr2 \
params ip=10.128.16.240
V Pacemakeru neexistuje žádný ekvivalent názvu virtuálního serveru. Pokud chcete použít připojovací řetězec, který odkazuje na název řetězcového serveru a nepoužívá IP adresu, zaregistrujte IP adresu prostředku a požadovaný název virtuálního serveru v DNS. U konfigurací DR zaregistrujte požadovaný název virtuálního serveru a IP adresu u serverů DNS v primární i DR lokalitě.
Přidání omezení kolokace
Téměř každé rozhodnutí v clusteru Pacemaker, například volba místa, kde by měl být prostředek spuštěn, se provádí porovnáním skóre. Skóre se počítají na prostředek a správce prostředků clusteru zvolí uzel s nejvyšším skóre pro konkrétní prostředek. Pokud má uzel záporné skóre u nějakého prostředku, daný prostředek nemůže běžet na tomto uzlu.
Ke konfiguraci rozhodnutí clusteru použijte omezení. Omezení mají skóre. Pokud má omezení nižší skóre než NEKONEČNO, jedná se pouze o doporučení. Skóre "INFINITY" znamená, že je to povinné.
Pokud chcete zajistit, aby primární replika a prostředek virtuální IP adresy byly na stejném hostiteli, definujte omezení kolokace se skóre INFINITY. Pokud chcete přidat omezení kolokace, spusťte na jednom uzlu následující příkaz.
sudo crm configure colocation ag-with-listener INFINITY: virtualip-group ms-ag1:Master
Přidání omezení řazení
Omezení kolokace má implicitní omezení řazení. Než přesune prostředek skupiny dostupnosti, nejprve přesune prostředek virtuální IP adresy. Ve výchozím nastavení je posloupnost událostí:
Uživatel vydává pcs resource move
na primární server skupiny dostupnosti z node1
do node2
.
Virtuální IP prostředek se zastaví na node1
.
Virtuální IP prostředek se spustí na node2
.
V tomto okamžiku IP adresa dočasně směřuje k node2
, zatímco node2
je stále sekundární před selháním.
Primární skupina dostupnosti v node1
se sníží na sekundární.
Sekundární skupina dostupnosti v node2
je povýšena na primární.
Pokud chcete zabránit dočasnému nasměrování IP adresy na uzel se sekundárním uzlem před převzetím při selhání, přidejte omezení pořadí.
Pokud chcete přidat omezení řazení, spusťte na jednom uzlu následující příkaz:
sudo crm configure order ag-before-listener Mandatory: ms-ag1:promote virtualip-group:start
Po nakonfigurování clusteru a přidání skupiny dostupnosti jako prostředku clusteru nemůžete použít Transact-SQL k převzetí prostředků skupiny dostupnosti. Prostředky clusteru SQL Serveru v Linuxu nejsou tak úzce svázané s operačním systémem jako v případě Windows Server Failover Clusteru (WSFC). Služba SQL Serveru neví o přítomnosti clusteru. Veškerá orchestrace se provádí prostřednictvím nástrojů pro správu clusteru.
Související obsah