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
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. Používejte tyto výrazy podle tohoto průvodce.
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ázvemmssql
. 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.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>'; 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ímsp_dropserver
asp_addserver
.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.
Zkontrolujte IP adresu pro každý uzel. Následující skript ukazuje IP adresu vašeho aktuálního uzlu.
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/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
asqlfcivm2
.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ě:
- Konfigurace instance clusteru s podporou převzetí služeb při selhání – iSCSI – SQL Server v Linuxu
- Konfigurace instance failover clusteru – NFS – SQL Server na Linuxu
- Konfigurace instance clusteru s podporou převzetí služeb při selhání úložiště SMB – SQL Server v Linuxu
Instalace a konfigurace Pacemakeru na každém uzlu clusteru
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
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
Nainstalujte balíčky Pacemaker na každý uzel.
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 obou uzlech použijte stejné heslo.
sudo passwd hacluster
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
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:
- Zdroj úložiště
- Síťový prostředek
- 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.
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.
-
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ů.
-
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ů.
-
Spusťte příkaz
sudo pcs resource
. FCI by měl být online.Připojte se k FCI přes SSMS nebo sqlcmd pomocí názvu DNS/prostředku FCI.
Vydat prohlášení
SELECT @@SERVERNAME
. Mělo by se vrátit jméno FCI.Vydej prohlášení
SELECT SERVERPROPERTY('ComputerNamePhysicalNetBIOS')
. Mělo by vrátit název uzlu, na kterém FCI běží.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.
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í