Sdílet prostřednictvím


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.

snímek obrazovky iniciátoru

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:

  1. 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
    
  2. 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:

    snímek obrazovky souboru s vyplněnými hodnotami

  3. 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
    
  4. 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.
    
  5. 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)
    
  6. Zkontrolujte připojené disky iSCSI.

    sudo grep "Attached SCSI" /var/log/messages
    

    snímek obrazovky s příkazem grep a odpovědí na příkaz zobrazující připojené disky SCSI

  7. Na disku iSCSI vytvořte fyzický svazek.

    sudo pvcreate /dev/<devicename>
    

    <devicename> je název zařízení z předchozího kroku.

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

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

  10. Spuštěním sudo lvs zobrazíte vytvořený LVM.

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

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

    1. Ujistěte se, že je SQL Server na serveru, na kterém pracujete, zastavený.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    2. Přepněte úplně na superuživatele. V případě úspěchu neobdržíte žádné potvrzení.

      sudo -i
      
    3. Přepněte na uživatele mssql. V případě úspěchu neobdržíte žádné potvrzení.

      su mssql
      
    4. 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
      
    5. 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.

    6. Ověřte, že jsou soubory v adresáři.

      ls <TempDir>
      

      <TempDir> je název složky z předchozích kroků.

    7. 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/*
      
    8. 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
      

      snímek obrazovky s příkazem ls a odpovědí na příkaz.

    9. Zadáním exit přepněte zpět na uživatele root.

    10. 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
      
    11. Změňte vlastníka připojení na mssql. V případě úspěchu neobdržíte žádné potvrzení.

      chown mssql /var/opt/mssql/data
      
    12. Změňte vlastnictví skupiny přípoje na mssql. V případě úspěchu neobdržíte žádné potvrzení.

      chgrp mssql /var/opt/mssql/data
      
    13. Přepněte na uživatele mssql. V případě úspěchu neobdržíte žádné potvrzení.

      su mssql
      
    14. 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
      
    15. Ověřte, že jsou soubory k dispozici.

      ls /var/opt/mssql/data
      
    16. Zadejte exit, aby nebyl mssql.

    17. Zadejte exit, aby nebyl root.

    18. 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
      
    19. Zastavte SQL Server a ověřte, že je vypnutý.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
  13. 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.

    1. Přepněte na superuživatele. V případě úspěchu neobdržíte žádné potvrzení.

      sudo -i
      
    2. 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
      
    3. 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
      
    4. 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
      
    5. 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
      
    6. Zadejte exit, aby už nebyl superuživatelem.

    7. 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
      
    8. 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
      
  14. Nakonfigurujte server tak, aby skupinu svazků mohl aktivovat pouze nástroj Pacemaker.

    sudo lvmconf --enable-halvm --services -startstopservices
    
  15. 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
    
  16. 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.

    Snímek obrazovky s příkladem hodnoty volume_list

  17. 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)
    
  18. Restartujte server.

  19. Na jiném serveru, který se bude účastnit FCI, proveďte kroky 1 až 6. Představí cíl iSCSI pro SQL Server.

  20. Vygenerujte seznam skupin svazků na serveru. Měla by se zobrazit objemová skupina vytvořená dříve.

    sudo vgs
    
  21. 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
    
  22. Zastavte SQL Server a ověřte, že je vypnutý.

    sudo systemctl stop mssql-server
    sudo systemctl status mssql-server
    
  23. Opakujte kroky 1 až 6 na všech ostatních serverech, které se budou účastnit FCI.

Teď jste připraveni nakonfigurovat FCI.