Failoverclustereenheid configureren - iSCSI - SQL Server op Linux
van toepassing op:SQL Server- - Linux
In dit artikel wordt uitgelegd hoe u iSCSI-opslag configureert voor een failoverclusterexemplaar (FCI) in Linux.
iSCSI configureren
iSCSI gebruikt netwerken om schijven van een server, bekend als een target, aan andere servers te presenteren. De servers die verbinding maken met het iSCSI-doel vereisen dat een iSCSI-initiator is geconfigureerd. De schijven op het doel krijgen expliciete machtigingen, zodat alleen de initiators waartoe ze toegang moeten kunnen krijgen, dit kunnen doen. Het doel zelf moet maximaal beschikbaar en betrouwbaar zijn.
Belangrijke informatie over iSCSI-doelwit
Hoewel in deze sectie niet wordt beschreven hoe u een iSCSI-doel configureert, omdat dit specifiek is voor het type bron dat u gebruikt, moet u ervoor zorgen dat de beveiliging voor de schijven die door de clusterknooppunten worden gebruikt, is geconfigureerd.
Het doel mag nooit worden geconfigureerd op een van de FCI-knooppunten als u een iSCSI-doel op basis van Linux gebruikt. Voor prestaties en beschikbaarheid moeten iSCSI-netwerken gescheiden zijn van netwerken die worden gebruikt door normaal netwerkverkeer op zowel de bron- als de clientservers. Netwerken die worden gebruikt voor iSCSI, moeten snel zijn. Houd er rekening mee dat het netwerk wel enige processorbandbreedte verbruikt, dus plan dienovereenkomstig als u een gewone server gebruikt.
Het belangrijkste om ervoor te zorgen dat het doel is voltooid, is dat aan de schijven die worden gemaakt, de juiste machtigingen worden toegewezen, zodat alleen de servers die deelnemen aan de FCI toegang hebben. Hier ziet u een voorbeeld van het Microsoft iSCSI-doel waarin linuxnodes1
de naam is die is gemaakt. In dit geval worden de IP-adressen van de knooppunten toegewezen zodat NewFCIDisk1.vhdx
aan hen wordt weergegeven.
Aanwijzingen
In deze sectie wordt beschreven hoe u een iSCSI-initiator configureert op de servers die fungeren als knooppunten voor de FCI. De instructies moeten werken zoals in Red Hat Enterprise Linux (RHEL) en Ubuntu.
Zie de volgende koppelingen voor meer informatie over iSCSI-initiator voor de ondersteunde distributies:
Kies een van de servers die deelnemen aan de FCI-configuratie. Het maakt niet uit welke. iSCSI moet zich in een toegewezen netwerk bevinden, dus configureer iSCSI om dat netwerk te herkennen en te gebruiken. Voer
sudo iscsiadm -m iface -I <iSCSIIfaceName> -o new
uit waar<iSCSIIfaceName>
de unieke of vriendelijke naam voor het netwerk is. In het volgende voorbeeld wordtiSCSINIC
gebruikt:sudo iscsiadm -m iface -I iSCSINIC -o new
Dit is het verwachte resultaat.
New interface iSCSINIC added
/var/lib/iscsi/ifaces/iSCSIIfaceName
bewerken. Zorg ervoor dat de volgende waarden volledig zijn ingevuld:-
iface.net_ifacename
is de naam van de netwerkkaart, zoals te zien is in het besturingssysteem. -
iface.hwaddress
is het MAC-adres van de unieke naam die voor de volgende interface wordt gemaakt. iface.ipaddress
iface.subnet_Mask
Zie het volgende voorbeeld:
-
Zoek het iSCSI-doel.
sudo iscsiadm -m discovery -t sendtargets -I <iSCSINetName> -p <TargetIPAddress>:<TargetPort>
<iSCSINetName>
is de unieke/beschrijvende naam voor het netwerk,<TargetIPAddress>
het IP-adres van het iSCSI-doel is en<TargetPort>
de poort van het iSCSI-doel is.Dit is het verwachte resultaat.
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
Meld u aan bij het doelwit.
sudo iscsiadm -m node -I <iSCSIIfaceName> -p TargetIPAddress -l
<iSCSIIfaceName>
is de unieke/beschrijvende naam voor het netwerk en<TargetIPAddress>
het IP-adres van het iSCSI-doel is.Dit is de verwachte uitvoer.
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.
Controleer of er een verbinding is met het iSCSI-doel.
sudo iscsiadm -m session
De uitvoer ziet er ongeveer als volgt uit:
tcp: [1] 10.105.16.7:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-target (non-flash)
Controleer de iSCSI-gekoppelde schijven.
sudo grep "Attached SCSI" /var/log/messages
Maak een fysiek volume op de iSCSI-schijf.
sudo pvcreate /dev/<devicename>
<devicename>
is de naam van het apparaat uit de vorige stap.Maak een volumegroep op de iSCSI-schijf. Schijven die zijn toegewezen aan één volumegroep, worden gezien als een groep of verzameling.
sudo vgcreate <VolumeGroupName> /dev/devicename
<VolumeGroupName>
is de naam van de volumegroep en<devicename>
de naam van het apparaat is uit stap 6.Maak en controleer het logische volume voor de schijf.
sudo lvcreate -Lsize -n <LogicalVolumeName> <VolumeGroupName>
<size>
is de grootte van het volume dat moet worden gemaakt en kan worden opgegeven met G (gigabytes), T (terabytes), enzovoort,<LogicalVolumeName>
de naam van het logische volume is en<VolumeGroupName>
de naam is van de volumegroep uit de vorige stap.Dit is de verwachte uitvoer.
Logical volume "FCIDataLV1" created.
In het volgende voorbeeld wordt een volume van 25 GB gemaakt.
Voer
sudo lvs
uit om de LVM te zien die is gemaakt.Maak het logische volume op met een ondersteund bestandssysteem. Gebruik voor EXT4 het volgende voorbeeld:
sudo mkfs.ext4 /dev/<VolumeGroupName>/<LogicalVolumeName>
<VolumeGroupName>
is de naam van de volumegroep uit de vorige stap.<LogicalVolumeName>
is de naam van het logische volume uit de vorige stap.Volg deze stappen voor systeemdatabases of alles wat is opgeslagen op de standaardgegevenslocatie. Ga anders verder met stap 13.
Zorg ervoor dat SQL Server is gestopt op de server waaraan u werkt.
sudo systemctl stop mssql-server sudo systemctl status mssql-server
Schakel volledig over naar de superuser. U ontvangt geen bevestiging als dit lukt.
sudo -i
Schakel over naar de
mssql
gebruiker. U ontvangt geen bevestiging als dit lukt.su mssql
Maak een tijdelijke map om de SQL Server-gegevens en logboekbestanden op te slaan. U ontvangt geen bevestiging als dit lukt.
mkdir <TempDir>
<TempDir>
is de naam van de map. In het volgende voorbeeld wordt een map gemaakt met de naam /var/opt/mssql/TempDir.mkdir /var/opt/mssql/TempDir
Kopieer de SQL Server-gegevens en logboekbestanden naar de tijdelijke map. U ontvangt geen bevestiging als dit lukt.
cp /var/opt/mssql/data/* <TempDir>
<TempDir>
is de naam van de map uit de vorige stap.Controleer of de bestanden zich in de map bevinden.
ls <TempDir>
<TempDir>
is de naam van de map uit de vorige stappen.Verwijder de bestanden uit de bestaande SQL Server-gegevensmap. U ontvangt geen bevestiging als dit lukt.
rm - f /var/opt/mssql/data/*
Controleer of de bestanden zijn verwijderd. In de volgende afbeelding ziet u een voorbeeld van de hele reeks van c tot en met h.
ls /var/opt/mssql/data
Typ
exit
om terug te schakelen naar deroot
gebruiker.Koppel het logische iSCSI-volume in de gegevensmap van SQL Server. U ontvangt geen bevestiging als dit lukt.
mount /dev/<VolumeGroupName>/<LogicalVolumeName> /var/opt/mssql/data
<VolumeGroupName>
is de naam van de volumegroep en<LogicalVolumeName>
de naam is van het logische volume dat is gemaakt. De volgende voorbeeldsyntaxis komt overeen met de volumegroep en het logische volume van de vorige opdracht.mount /dev/FCIDataVG1/FCIDataLV1 /var/opt/mssql/data
Wijzig de eigenaar van de koppeling in
mssql
. U ontvangt geen bevestiging als dit lukt.chown mssql /var/opt/mssql/data
Wijzig het eigendom van de groep van de koppeling in
mssql
. U ontvangt geen bevestiging als dit lukt.chgrp mssql /var/opt/mssql/data
Schakel over naar de
mssql
gebruiker. U ontvangt geen bevestiging als dit lukt.su mssql
Kopieer de bestanden uit de tijdelijke map
/var/opt/mssql/data
. U ontvangt geen bevestiging als dit lukt.cp /var/opt/mssql/TempDir/* /var/opt/mssql/data
Controleer of de bestanden er zijn.
ls /var/opt/mssql/data
Voer
exit
in om nietmssql
te zijn.Voer
exit
in om niet te wordenroot
.Start SQL Server. Als alles correct is gekopieerd en de beveiliging correct is toegepast, moet SQL Server worden weergegeven als gestart.
sudo systemctl start mssql-server sudo systemctl status mssql-server
Stop SQL Server en controleer of deze is afgesloten.
sudo systemctl stop mssql-server sudo systemctl status mssql-server
Volg deze stappen voor andere zaken dan systeemdatabases, zoals gebruikersdatabases of back-ups. Als u alleen de standaardlocatie gebruikt, gaat u verder met stap 14.
Schakel over naar de supergebruiker. U ontvangt geen bevestiging als dit lukt.
sudo -i
Maak een map die moet worden gebruikt door SQL Server.
mkdir <FolderName>
<FolderName>
is de naam van de map. Het volledige pad van de map moet worden opgegeven als dit niet op de juiste locatie staat. In het volgende voorbeeld wordt een map gemaakt met de naam /var/opt/mssql/userdata.mkdir /var/opt/mssql/userdata
Koppel het logische iSCSI-volume in de map die in de vorige stap is gemaakt. U ontvangt geen bevestiging als dit lukt.
mount /dev/<VolumeGroupName>/<LogicalVolumeName> <FolderName>
<VolumeGroupName>
is de naam van de volumegroep,<LogicalVolumeName>
is de naam van het logische volume dat is gemaakt, en<FolderName>
is de naam van de map. Hier ziet u een voorbeeldsyntaxis.mount /dev/FCIDataVG2/FCIDataLV2 /var/opt/mssql/userdata
Wijzig het eigendom van de aangemaakte map naar
mssql
. U ontvangt geen bevestiging als dit lukt.chown mssql <FolderName>
<FolderName>
is de naam van de map die is gemaakt. Hier ziet u een voorbeeld.chown mssql /var/opt/mssql/userdata
Wijzig de groep van de aangemaakte map in
mssql
. U ontvangt geen bevestiging als dit lukt.chown mssql <FolderName>
<FolderName>
is de naam van de map die is gemaakt. Hier ziet u een voorbeeld.chown mssql /var/opt/mssql/userdata
Typ
exit
om niet langer de superuser te zijn.Als u wilt testen, maakt u een database in die map. Met het volgende script maakt u een database, schakelt u de context naar deze database, controleert u of de bestanden bestaan op besturingssysteemniveau en verwijdert u vervolgens de tijdelijke locatie. U kunt SSMS of sqlcmd- gebruiken om dit script uit te voeren.
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
Voer de volgende opdracht uit in de shell om de nieuwe databasebestanden weer te geven.
sudo ls /var/opt/mssal/userdata
Dit is de verwachte uitvoer.
lost+found TestDB_Data.mdf TestDB_Log.ldf
Verwijder de database om op te schonen.
DROP DATABASE TestDB; GO
sudo ls /var/opt/mssal/userdata
Dit is het verwachte resultaat.
lost+found
Ontkoppel de gedeelde map
sudo umount /dev/<VolumeGroupName>/<LogicalVolumeName> <FolderName>
De naam van de volumegroep is
<VolumeGroupName>
, de naam van het logische volume dat is gemaakt is<LogicalVolumeName>
, en de naam van de map is<FolderName>
. Hier ziet u een voorbeeldsyntaxis.sudo umount /dev/FCIDataVG2/FCIDataLV2 /var/opt/mssql/userdata
Configureer de server zodat alleen Pacemaker de volumegroep kan activeren.
sudo lvmconf --enable-halvm --services -startstopservices
Genereer een lijst met de volumegroepen op de server. Alles wat wordt vermeld dat niet de iSCSI-schijf is, wordt gebruikt door het systeem, zoals voor de besturingssysteemschijf.
sudo vgs
Wijzig de sectie activeringsconfiguratie van het bestand /etc/lvm/lvm.conf. Configureer de volgende regel:
volume_list = [ <ListOfVGsNotUsedByPacemaker> ]
<ListOfVGsNotUsedByPacemaker>
is de lijst met volumegroepen uit de uitvoer van stap 20 die niet worden gebruikt door de FCI. Plaats elk tussen aanhalingstekens en gescheiden door een komma. Hier ziet u een voorbeeld.Wanneer Linux wordt gestart, koppelt het het bestandssysteem. Om ervoor te zorgen dat alleen Pacemaker de iSCSI-schijf kan koppelen, bouwt u de installatiekopieën van het hoofdbestandssysteem opnieuw op.
Voer de volgende opdracht uit. Dit kan even duren. U krijgt geen bericht terug als dit lukt.
sudo dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)
Start de server opnieuw op.
Voer stap 1 tot en met 6 uit op een andere server die deelneemt aan de FCI. Hiermee wordt het iSCSI-doel aan de SQL Server gepresenteerd.
Genereer een lijst met de volumegroepen op de server. Hier moet de volumegroep worden weergegeven die u eerder hebt gemaakt.
sudo vgs
Start SQL Server en controleer of deze kan worden gestart op deze server.
sudo systemctl start mssql-server sudo systemctl status mssql-server
Stop SQL Server en controleer of deze is afgesloten.
sudo systemctl stop mssql-server sudo systemctl status mssql-server
Herhaal stap 1 - 6 op andere servers die deelnemen aan de FCI.
U bent nu klaar om de FCI te configureren.