Konfigurace instance clusteru s podporou převzetí služeb při selhání – iSCSI – SQL Server v Linuxu
platí pro:SQL Server – Linux
Tento článek vysvětluje, jak nakonfigurovat úložiště iSCSI pro instanci failover clusteru (FCI) na Linuxu.
Konfigurace iSCSI
iSCSI používá síť k zpřístupnění disků ze serveru označovaného jako cíl na jiné servery. Servery, které se připojují k cíli iSCSI, vyžadují konfiguraci iniciátoru iSCSI. Disky v cíli mají explicitní oprávnění, aby k nim měli přístup pouze iniciátoři, kteří by k nim měli mít přístup. Samotný cíl by měl být vysoce dostupný a spolehlivý.
Důležité informace o cíli iSCSI
I když tato část nepopisuje, jak nakonfigurovat cíl iSCSI, protože je specifický pro typ používaného zdroje, ujistěte se, že je nakonfigurované zabezpečení disků, které budou uzly clusteru používat.
Cíl by se nikdy neměl konfigurovat na žádném z uzlů FCI, pokud používáte cíl iSCSI založený na Linuxu. Pro zajištění výkonu a dostupnosti by sítě iSCSI měly být oddělené od sítí používaných pravidelným síťovým provozem na zdrojovém i klientském serveru. Sítě používané pro iSCSI by měly být rychlé. Mějte na paměti, že síť spotřebovávají určitou šířku pásma procesoru, takže pokud používáte běžný server, naplánujte to odpovídajícím způsobem.
Nejdůležitější věcí, kterou je potřeba zajistit na cílovém systému, je, aby vytvořené disky byla přiřazena správná oprávnění, aby k nim měli přístup jen ty servery, které se účastní FCI. Tady je příklad z cíle iSCSI Microsoftu, kde linuxnodes1
je vytvořený název, a v tomto případě jsou IP adresy uzlů přiřazeny tak, aby se jim NewFCIDisk1.vhdx
zobrazily.
Instrukce
Tato část popisuje, jak nakonfigurovat iniciátor iSCSI na serverech, které slouží jako uzly pro FCI. Pokyny by měly fungovat stejně jako na Red Hat Enterprise Linuxu (RHEL) a Ubuntu.
Další informace o iniciátoru iSCSI pro podporované distribuce najdete na následujících odkazech:
Vyberte jeden ze serverů, které se budou účastnit konfigurace FCI. Nezáleží na tom, který z nich. ISCSI by měla být ve vyhrazené síti, takže nakonfigurujte iSCSI tak, aby tuto síť rozpoznala a používala. Spusťte
sudo iscsiadm -m iface -I <iSCSIIfaceName> -o new
, kde<iSCSIIfaceName>
je jedinečný nebo přívětivý název sítě. Následující příklad používáiSCSINIC
:sudo iscsiadm -m iface -I iSCSINIC -o new
Tady je očekávaný výstup.
New interface iSCSINIC added
Upravit
/var/lib/iscsi/ifaces/iSCSIIfaceName
. Ujistěte se, že obsahuje úplně vyplněné následující hodnoty:-
iface.net_ifacename
je název síťové karty, jak je vidět v operačním systému. -
iface.hwaddress
je adresa MAC jedinečného názvu, který se vytvoří pro následující rozhraní. iface.ipaddress
iface.subnet_Mask
Podívejte se na následující příklad:
-
Vyhledejte cíl iSCSI.
sudo iscsiadm -m discovery -t sendtargets -I <iSCSINetName> -p <TargetIPAddress>:<TargetPort>
<iSCSINetName>
je jedinečný/popisný název sítě,<TargetIPAddress>
je IP adresa cíle iSCSI a<TargetPort>
je port cíle iSCSI.Tady je očekávaný výstup.
10.181.182.1:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-target 10.201.202.1:3260,1 iqn.1991-05.com.contoso:dc1-linuxnodes1-target [2002:b4b5:b601::b4b5:b601]:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-target [2002:8c9:ca01::c8c9:ca01]:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-target
Přihlaste se k cíli.
sudo iscsiadm -m node -I <iSCSIIfaceName> -p TargetIPAddress -l
<iSCSIIfaceName>
je jedinečný/popisný název sítě a<TargetIPAddress>
je IP adresa cíle iSCSI.Tady je očekávaný výstup.
Logging in to [iface: iSCSINIC, target: ian.1991-05.com.contoso:dcl-linuxnodesl-tar get, portal: 10.181.182.1,3260] (multiple) Login to [iface: iSCSINIC, target: ian.1991-05.com.contoso:dcl-linuxnodesl-tar get, portal: 10.181.182.1,3260] successful.
Zkontrolujte, jestli existuje připojení k cíli iSCSI.
sudo iscsiadm -m session
Výstup vypadá podobně jako v následujícím příkladu:
tcp: [1] 10.105.16.7:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-target (non-flash)
Zkontrolujte připojené disky iSCSI.
sudo grep "Attached SCSI" /var/log/messages
Na disku iSCSI vytvořte fyzický svazek.
sudo pvcreate /dev/<devicename>
<devicename>
je název zařízení z předchozího kroku.Vytvořte skupinu svazků na disku iSCSI. Disky přiřazené jedné skupině svazků se považují za fond nebo kolekci.
sudo vgcreate <VolumeGroupName> /dev/devicename
<VolumeGroupName>
je název skupiny svazků a<devicename>
je název zařízení z kroku 6.Vytvořte a ověřte logický svazek disku.
sudo lvcreate -Lsize -n <LogicalVolumeName> <VolumeGroupName>
<size>
je velikost svazku, který se má vytvořit, a dá se zadat pomocí G (gigabajtů), T (terabajtů) atd.,<LogicalVolumeName>
je název logického svazku a<VolumeGroupName>
je název skupiny svazků z předchozího kroku.Tady je očekávaný výstup.
Logical volume "FCIDataLV1" created.
Následující příklad vytvoří svazek o velikosti 25 GB.
Spuštěním
sudo lvs
zobrazíte vytvořený LVM.Naformátujte logický svazek s podporovaným systémem souborů. Pro EXT4 použijte následující příklad:
sudo mkfs.ext4 /dev/<VolumeGroupName>/<LogicalVolumeName>
<VolumeGroupName>
je název skupiny svazků z předchozího kroku.<LogicalVolumeName>
je název logického svazku z předchozího kroku.V případě systémových databází nebo čehokoli uloženého ve výchozím umístění dat postupujte takto. V opačném případě přejděte ke kroku 13.
Ujistěte se, že je SQL Server na serveru, na kterém pracujete, zastavený.
sudo systemctl stop mssql-server sudo systemctl status mssql-server
Přepněte úplně na superuživatele. V případě úspěchu neobdržíte žádné potvrzení.
sudo -i
Přepněte na uživatele
mssql
. V případě úspěchu neobdržíte žádné potvrzení.su mssql
Vytvořte dočasný adresář pro ukládání dat a souborů protokolu SQL Serveru. V případě úspěchu neobdržíte žádné potvrzení.
mkdir <TempDir>
<TempDir>
je název složky. Následující příklad vytvoří složku s názvem /var/opt/mssql/TempDir.mkdir /var/opt/mssql/TempDir
Zkopírujte data a soubory protokolu SQL Serveru do dočasného adresáře. V případě úspěchu neobdržíte žádné potvrzení.
cp /var/opt/mssql/data/* <TempDir>
<TempDir>
je název složky z předchozího kroku.Ověřte, že jsou soubory v adresáři.
ls <TempDir>
<TempDir>
je název složky z předchozích kroků.Odstraňte soubory z existujícího datového adresáře SQL Serveru. V případě úspěchu neobdržíte žádné potvrzení.
rm - f /var/opt/mssql/data/*
Ověřte, že byly soubory odstraněny. Následující obrázek ukazuje příklad celé sekvence z c až h.
ls /var/opt/mssql/data
Zadáním
exit
přepněte zpět na uživateleroot
.Připojte logický svazek iSCSI do složky dat SQL Serveru. V případě úspěchu neobdržíte žádné potvrzení.
mount /dev/<VolumeGroupName>/<LogicalVolumeName> /var/opt/mssql/data
<VolumeGroupName>
je název skupiny svazků a<LogicalVolumeName>
je název vytvořeného logického svazku. Následující příklad syntaxe odpovídá skupině svazků a logickému svazku z předchozího příkazu.mount /dev/FCIDataVG1/FCIDataLV1 /var/opt/mssql/data
Změňte vlastníka připojení na
mssql
. V případě úspěchu neobdržíte žádné potvrzení.chown mssql /var/opt/mssql/data
Změňte vlastnictví skupiny přípoje na
mssql
. V případě úspěchu neobdržíte žádné potvrzení.chgrp mssql /var/opt/mssql/data
Přepněte na uživatele
mssql
. V případě úspěchu neobdržíte žádné potvrzení.su mssql
Zkopírujte soubory z dočasného adresáře
/var/opt/mssql/data
. V případě úspěchu neobdržíte žádné potvrzení.cp /var/opt/mssql/TempDir/* /var/opt/mssql/data
Ověřte, že jsou soubory k dispozici.
ls /var/opt/mssql/data
Zadejte
exit
, aby nebylmssql
.Zadejte
exit
, aby nebylroot
.Spusťte SQL Server. Pokud se všechno zkopírovalo správně a správně se použilo zabezpečení, měl by se SQL Server zobrazit jako spuštěný.
sudo systemctl start mssql-server sudo systemctl status mssql-server
Zastavte SQL Server a ověřte, že je vypnutý.
sudo systemctl stop mssql-server sudo systemctl status mssql-server
V případě jiných než systémových databází, jako jsou uživatelské databáze nebo zálohy, postupujte takto. Pokud používáte pouze výchozí umístění, přejděte ke kroku 14.
Přepněte na superuživatele. V případě úspěchu neobdržíte žádné potvrzení.
sudo -i
Vytvořte složku, kterou bude používat SQL Server.
mkdir <FolderName>
<FolderName>
je název složky. Úplná cesta ke složce musí být zadána, pokud není ve správném umístění. Následující příklad vytvoří složku s názvem /var/opt/mssql/userdata.mkdir /var/opt/mssql/userdata
Připojte logický svazek iSCSI do složky vytvořené v předchozím kroku. V případě úspěchu neobdržíte žádné potvrzení.
mount /dev/<VolumeGroupName>/<LogicalVolumeName> <FolderName>
<VolumeGroupName>
je název skupiny svazků,<LogicalVolumeName>
je název vytvořeného logického svazku a<FolderName>
je název složky. Tady je uvedena příklad syntaxe.mount /dev/FCIDataVG2/FCIDataLV2 /var/opt/mssql/userdata
Změňte vlastnictví složky vytvořené na
mssql
. V případě úspěchu neobdržíte žádné potvrzení.chown mssql <FolderName>
<FolderName>
je název vytvořené složky. Tady je uvedený příklad.chown mssql /var/opt/mssql/userdata
Změňte skupinu vytvořené složky na
mssql
. V případě úspěchu neobdržíte žádné potvrzení.chown mssql <FolderName>
<FolderName>
je název vytvořené složky. Tady je uvedený příklad.chown mssql /var/opt/mssql/userdata
Zadejte
exit
, aby už nebyl superuživatelem.Pokud chcete testovat, vytvořte v této složce databázi. Následující skript vytvoří databázi, přepne do ní kontext, ověří, jestli soubory existují na úrovni operačního systému, a pak odstraní dočasné umístění. Ke spuštění tohoto skriptu můžete použít SSMS nebo sqlcmd.
DROP DATABASE TestDB; GO CREATE DATABASE TestDB ON (NAME = TestDB_Data, FILENAME = '/var/opt/mssql/userdata/TestDB_Data.mdf') LOG ON (NAME = TestDB_Log, FILENAME = '/var/opt/mssql/userdata/TestDB_Log.ldf'); GO USE TestDB; GO
Spuštěním následujícího příkazu v prostředí zobrazte nové soubory databáze.
sudo ls /var/opt/mssal/userdata
Tady je očekávaný výstup.
lost+found TestDB_Data.mdf TestDB_Log.ldf
Odstraňte databázi, abyste ji vyčistili.
DROP DATABASE TestDB; GO
sudo ls /var/opt/mssal/userdata
Tady je očekávaný výstup.
lost+found
Odpojit sdílení
sudo umount /dev/<VolumeGroupName>/<LogicalVolumeName> <FolderName>
<VolumeGroupName>
je název skupiny svazků,<LogicalVolumeName>
je název vytvořeného logického svazku a<FolderName>
je název složky. Tady je uvedena příklad syntaxe.sudo umount /dev/FCIDataVG2/FCIDataLV2 /var/opt/mssql/userdata
Nakonfigurujte server tak, aby skupinu svazků mohl aktivovat pouze nástroj Pacemaker.
sudo lvmconf --enable-halvm --services -startstopservices
Vygenerujte seznam skupin svazků na serveru. Systém používá cokoli, co není diskem iSCSI, například pro disk s operačním systémem.
sudo vgs
Upravte část konfigurace aktivace souboru /etc/lvm/lvm.conf. Nakonfigurujte následující řádek:
volume_list = [ <ListOfVGsNotUsedByPacemaker> ]
<ListOfVGsNotUsedByPacemaker>
je seznam skupin svazků z výstupu kroku 20, které nejsou používány FCI. Každou z nich vložte do uvozovek a oddělte čárkou. Tady je uvedený příklad.Při startu Linuxu se namontuje systém souborů. Pokud chcete zajistit, aby disk iSCSI mohl připojit pouze Pacemaker, znovu sestavte image kořenového systému souborů.
Spusťte následující příkaz, který může chvíli trvat. V případě úspěchu se žádná zpráva nevrátí.
sudo dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)
Restartujte server.
Na jiném serveru, který se bude účastnit FCI, proveďte kroky 1 až 6. Představí cíl iSCSI pro SQL Server.
Vygenerujte seznam skupin svazků na serveru. Měla by se zobrazit objemová skupina vytvořená dříve.
sudo vgs
Spusťte SQL Server a ověřte, že je možné ho spustit na tomto serveru.
sudo systemctl start mssql-server sudo systemctl status mssql-server
Zastavte SQL Server a ověřte, že je vypnutý.
sudo systemctl stop mssql-server sudo systemctl status mssql-server
Opakujte kroky 1 až 6 na všech ostatních serverech, které se budou účastnit FCI.
Teď jste připraveni nakonfigurovat FCI.