Dela via


Konfigurera redundansklusterinstans – iSCSI – SQL Server i Linux

gäller för:SQL Server – Linux

Den här artikeln beskriver hur du konfigurerar iSCSI-lagring för en redundansklusterinstans (FCI) i Linux.

Konfigurera iSCSI

iSCSI använder nätverk för att presentera diskar från en server, som kallas en målserver, till andra servrar. Servrarna som ansluter till iSCSI-målet kräver att en iSCSI-initierare har konfigurerats. Diskarna på målet får explicita behörigheter så att endast de initierare som ska kunna komma åt dem kan göra det. Själva målet bör vara mycket tillgängligt och tillförlitligt.

Viktig information om iSCSI-mål

Även om det här avsnittet inte beskriver hur du konfigurerar ett iSCSI-mål eftersom det är specifikt för den typ av källa som du använder, kontrollerar du att säkerheten för diskarna som ska användas av klusternoderna är konfigurerad.

Målet bör aldrig konfigureras på någon av FCI-noderna om du använder ett Linux-baserat iSCSI-mål. För prestanda och tillgänglighet bör iSCSI-nätverk vara åtskilda från nätverk som används av vanlig nätverkstrafik på både käll- och klientservrarna. Nätverk som används för iSCSI bör vara snabba. Kom ihåg att nätverket förbrukar en del processorbandbredd, så planera därefter om du använder en vanlig server.

Det viktigaste att se till att slutförs på målet är att de diskar som skapas tilldelas rätt behörigheter så att endast de servrar som deltar i FCI har åtkomst till dem. Ett exempel visas här från Microsoft iSCSI-målservern där linuxnodes1 är namnet som har skapats, och i det här fallet tilldelas IP-adresserna för noderna så att NewFCIDisk1.vhdx visas för dem.

Skärmbild av initieraren.

Instruktion

Det här avsnittet beskriver hur du konfigurerar en iSCSI-initierare på de servrar som fungerar som noder för FCI. Instruktionerna bör fungera som i Red Hat Enterprise Linux (RHEL) och Ubuntu.

Mer information om iSCSI-initieraren för de distributioner som stöds finns i följande länkar:

  1. Välj en av servrarna som ska delta i FCI-konfigurationen. Det spelar ingen roll vilken. iSCSI ska finnas i ett dedikerat nätverk, så konfigurera iSCSI för att identifiera och använda nätverket. Kör sudo iscsiadm -m iface -I <iSCSIIfaceName> -o new där <iSCSIIfaceName> är nätverkets unika eller vänliga namn. I följande exempel används iSCSINIC:

    sudo iscsiadm -m iface -I iSCSINIC -o new
    

    Här är de förväntade resultaten.

    New interface iSCSINIC added
    
  2. Redigera /var/lib/iscsi/ifaces/iSCSIIfaceName. Kontrollera att följande värden är helt ifyllda:

    • iface.net_ifacename är namnet på nätverkskortet enligt operativsystemet.
    • iface.hwaddress är MAC-adressen för det unika namn som skapas för följande gränssnitt.
    • iface.ipaddress
    • iface.subnet_Mask

    Se följande exempel:

    Skärmbild av filen med värdena helt ifyllda.

  3. Hitta iSCSI-målet.

    sudo iscsiadm -m discovery -t sendtargets -I <iSCSINetName> -p <TargetIPAddress>:<TargetPort>
    

    <iSCSINetName> är det unika/egna namnet för nätverket, <TargetIPAddress> är IP-adressen för iSCSI-målet och <TargetPort> är porten för iSCSI-målet.

    Här är de förväntade resultaten.

    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. Logga in på målet.

    sudo iscsiadm -m node -I <iSCSIIfaceName> -p TargetIPAddress -l
    

    <iSCSIIfaceName> är det unika/egna namnet för nätverket och <TargetIPAddress> är IP-adressen för iSCSI-målet.

    Här är de förväntade resultaten.

    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. Kontrollera att det finns en anslutning till iSCSI-målet.

    sudo iscsiadm -m session
    

    Utdata ser ut ungefär som i följande exempel:

    tcp: [1] 10.105.16.7:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-target (non-flash)
    
  6. Kontrollera iSCSI-anslutna diskar.

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

    Skärmbild av grep-kommandot och svaret på kommandot som visar de anslutna SCSI-diskarna.

  7. Skapa en fysisk volym på iSCSI-disken.

    sudo pvcreate /dev/<devicename>
    

    <devicename> är namnet på enheten från föregående steg.

  8. Skapa en volymgrupp på iSCSI-disken. Diskar som tilldelats en enskild volymgrupp ses som en pool eller samling.

    sudo vgcreate <VolumeGroupName> /dev/devicename
    

    <VolumeGroupName> är namnet på volymgruppen och <devicename> är namnet på enheten från steg 6.

  9. Skapa och verifiera den logiska volymen för disken.

    sudo lvcreate -Lsize -n <LogicalVolumeName> <VolumeGroupName>
    

    <size> är storleken på volymen som ska skapas och kan anges med G (gigabyte), T (terabyte) osv., <LogicalVolumeName> är namnet på den logiska volymen och <VolumeGroupName> är namnet på volymgruppen från föregående steg.

    Här är de förväntade resultaten.

    Logical volume "FCIDataLV1" created.
    

    I följande exempel skapas en volym på 25 GB.

  10. Kör sudo lvs för att se den LVM som skapades.

  11. Formatera den logiska volymen med ett filsystem som stöds. För ext4 använder du följande exempel:

    sudo mkfs.ext4 /dev/<VolumeGroupName>/<LogicalVolumeName>
    

    <VolumeGroupName> är namnet på volymgruppen från föregående steg. <LogicalVolumeName> är namnet på den logiska volymen från föregående steg.

  12. Följ dessa steg för systemdatabaser eller något som lagras på standarddataplatsen. Annars går du vidare till Steg 13.

    1. Kontrollera att SQL Server har stoppats på den server som du arbetar med.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    2. Byt helt till superanvändare. Du får ingen bekräftelse om det lyckas.

      sudo -i
      
    3. Växla till användaren mssql. Du får ingen bekräftelse om det lyckas.

      su mssql
      
    4. Skapa en tillfällig katalog för att lagra SQL Server-data och loggfiler. Du får ingen bekräftelse om det lyckas.

      mkdir <TempDir>
      

      <TempDir> är namnet på mappen. I följande exempel skapas en mapp med namnet /var/opt/mssql/TempDir.

      mkdir /var/opt/mssql/TempDir
      
    5. Kopiera SQL Server-data och loggfiler till den tillfälliga katalogen. Du får ingen bekräftelse om det lyckas.

      cp /var/opt/mssql/data/* <TempDir>
      

      <TempDir> är namnet på mappen från föregående steg.

    6. Kontrollera att filerna finns i katalogen.

      ls <TempDir>
      

      <TempDir> är namnet på mappen från föregående steg.

    7. Ta bort filerna från den befintliga SQL Server-datakatalogen. Du får ingen bekräftelse om det lyckas.

      rm - f /var/opt/mssql/data/*
      
    8. Kontrollera att filerna har tagits bort. Följande bild visar ett exempel på hela sekvensen från c till h.

      ls /var/opt/mssql/data
      

      Skärmbild av kommandot ls och svaret på kommandot.

    9. Skriv exit för att växla tillbaka till root användaren.

    10. Montera den logiska iSCSI-volymen i datamappen för SQL Server. Du får ingen bekräftelse om det lyckas.

      mount /dev/<VolumeGroupName>/<LogicalVolumeName> /var/opt/mssql/data
      

      <VolumeGroupName> är namnet på volymgruppen och <LogicalVolumeName> är namnet på den logiska volym som skapades. Följande exempelsyntax matchar volymgruppen och den logiska volymen från föregående kommando.

      mount /dev/FCIDataVG1/FCIDataLV1 /var/opt/mssql/data
      
    11. Ändra monteringens ägare till mssql. Du får ingen bekräftelse om det lyckas.

      chown mssql /var/opt/mssql/data
      
    12. Ändra ägarskapet för gruppen för monteringen till mssql. Du får ingen bekräftelse om det lyckas.

      chgrp mssql /var/opt/mssql/data
      
    13. Växla till användaren mssql. Du får ingen bekräftelse om det lyckas.

      su mssql
      
    14. Kopiera filerna från den tillfälliga katalogen /var/opt/mssql/data. Du får ingen bekräftelse om det lyckas.

      cp /var/opt/mssql/TempDir/* /var/opt/mssql/data
      
    15. Kontrollera att filerna finns där.

      ls /var/opt/mssql/data
      
    16. Ange exit för att inte vara mssql.

    17. Ange exit för att inte vara root.

    18. Starta SQL Server. Om allt kopierades korrekt och säkerheten tillämpades korrekt bör SQL Server visas som igång.

      sudo systemctl start mssql-server
      sudo systemctl status mssql-server
      
    19. Stoppa SQL Server och kontrollera att den har stängts av.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
  13. Följ dessa steg för andra saker än systemdatabaser, till exempel användardatabaser eller säkerhetskopior. Om du bara använder standardplatsen går du vidare till Steg 14.

    1. Byt till superanvändare. Du får ingen bekräftelse om det lyckas.

      sudo -i
      
    2. Skapa en mapp som ska användas av SQL Server.

      mkdir <FolderName>
      

      <FolderName> är namnet på mappen. Den fullständiga sökvägen till mappen måste anges om den inte är på rätt plats. I följande exempel skapas en mapp med namnet /var/opt/mssql/userdata.

      mkdir /var/opt/mssql/userdata
      
    3. Montera den logiska iSCSI-volymen i mappen som skapades i föregående steg. Du får ingen bekräftelse om det lyckas.

      mount /dev/<VolumeGroupName>/<LogicalVolumeName> <FolderName>
      

      <VolumeGroupName> är namnet på volymgruppen, <LogicalVolumeName> är namnet på den logiska volym som skapades och <FolderName> är namnet på mappen. Exempelsyntax visas här.

      mount /dev/FCIDataVG2/FCIDataLV2 /var/opt/mssql/userdata
      
    4. Ändra ägarskapet för mappen som skapats till mssql. Du får ingen bekräftelse om det lyckas.

      chown mssql <FolderName>
      

      <FolderName> är namnet på mappen som skapades. Ett exempel visas här.

      chown mssql /var/opt/mssql/userdata
      
    5. Ändra gruppen för mappen som skapats till mssql. Du får ingen bekräftelse om det lyckas.

      chown mssql <FolderName>
      

      <FolderName> är namnet på mappen som skapades. Ett exempel visas här.

      chown mssql /var/opt/mssql/userdata
      
    6. Skriv exit för att inte längre vara superanvändare.

    7. Om du vill testa skapar du en databas i den mappen. Följande skript skapar en databas, växlar kontext till den, verifierar att filerna finns på OS-nivå och tar sedan bort den tillfälliga platsen. Du kan använda SSMS eller sqlcmd för att köra det här skriptet.

      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
      

      Kör följande kommando i gränssnittet för att se de nya databasfilerna.

      sudo ls /var/opt/mssal/userdata
      

      Här är de förväntade resultaten.

      lost+found TestDB_Data.mdf
      TestDB_Log.ldf
      

      Ta bort databasen för att rensa.

      DROP DATABASE TestDB;
      GO
      
      sudo ls /var/opt/mssal/userdata
      

      Här är de förväntade resultaten.

      lost+found
      
    8. Avmontera delningen

      sudo umount /dev/<VolumeGroupName>/<LogicalVolumeName> <FolderName>
      

      <VolumeGroupName> är namnet på volymgruppen, <LogicalVolumeName> är namnet på den logiska volym som skapades och <FolderName> är namnet på mappen. Exempelsyntax visas här.

      sudo umount /dev/FCIDataVG2/FCIDataLV2 /var/opt/mssql/userdata
      
  14. Konfigurera servern så att endast Pacemaker kan aktivera volymgruppen.

    sudo lvmconf --enable-halvm --services -startstopservices
    
  15. Generera en lista över volymgrupperna på servern. Allt som anges som inte är iSCSI-disken används av systemet, till exempel för OS-disken.

    sudo vgs
    
  16. Ändra aktiveringskonfigurationsavsnittet i filen /etc/lvm/lvm.conf. Konfigurera följande rad:

    volume_list = [ <ListOfVGsNotUsedByPacemaker> ]
    

    <ListOfVGsNotUsedByPacemaker> är listan över volymgrupper från utdata från steg 20 som inte används av FCI. Placera var och en inom citattecken och avgränsa med ett kommatecken. Ett exempel visas här.

    Skärmbild som visar ett exempel på ett volume_list värde.

  17. När Linux startar monteras filsystemet. För att säkerställa att endast Pacemaker kan montera iSCSI-disken återskapar du rotfilsystemsbilden.

    Kör följande kommando, vilket kan ta en stund att slutföra. Du får inget meddelande tillbaka om det lyckas.

    sudo dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)
    
  18. Starta om servern.

  19. På en annan server som kommer att delta i FCI utför du steg 1–6. Detta visar iSCSI-målet för SQL Server.

  20. Generera en lista över volymgrupperna på servern. Den bör visa den volymgrupp som skapades tidigare.

    sudo vgs
    
  21. Starta SQL Server och kontrollera att den kan startas på den här servern.

    sudo systemctl start mssql-server
    sudo systemctl status mssql-server
    
  22. Stoppa SQL Server och kontrollera att den har stängts av.

    sudo systemctl stop mssql-server
    sudo systemctl status mssql-server
    
  23. Upprepa steg 1–6 på andra servrar som kommer att delta i FCI:n.

Nu är du redo att konfigurera FCI.