Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Si applica a:SQL Server in Linux
Questo articolo illustra come configurare la risorsa di archiviazione iSCSI per un'istanza di cluster di failover su Linux.
Configurare iSCSI
iSCSI usa la rete per presentare i dischi da un server noto come destinazione ad altri server. Per i server che si connettono alla destinazione iSCSI è necessario che sia configurato un iniziatore iSCSI. Ai dischi di destinazione vengono concesse autorizzazioni esplicite, in modo che solo gli iniziatori che devono poter accedervi possano farlo. La destinazione deve essere a disponibilità elevata e affidabile.
Informazioni importanti sul target iSCSI
Anche se in questa sezione non viene illustrato come configurare una destinazione iSCSI perché questa configurazione dipende dal tipo di origine che si usa, assicurarsi che sia configurata la sicurezza per i dischi che verranno usati dai nodi del cluster.
Se si utilizza una destinazione iSCSI basata su Linux, non si dovrebbe mai configurare la destinazione su nessuno dei nodi FCI. Per quanto riguarda prestazioni e disponibilità, le reti iSCSI devono essere separate dalle reti usate dal normale traffico di rete sia nel server di origine che in quello client. Le reti usate per iSCSI dovrebbero essere veloci. Tenere presente che la rete utilizza parte della larghezza di banda del processore. Se quindi si usa un server normale, pianificare di conseguenza.
La cosa più importante da garantire sul target è che ai dischi creati siano assegnate le autorizzazioni appropriate, in modo che solo i server che partecipano all'istanza del cluster di failover possano accedervi. Un esempio è quello della destinazione iSCSI Microsoft, qui illustrato, dove linuxnodes1 è il nome creato e, in questo caso, vengono assegnati gli indirizzi IP dei nodi in modo che possano visualizzare NewFCIDisk1.vhdx.
Istruzioni
In questa sezione viene illustrato come configurare un iniziatore iSCSI sui server che operano come nodi per l'istanza del cluster di failover. Le istruzioni dovrebbero essere valide così come sono in Red Hat Enterprise Linux (RHEL) e in Ubuntu.
Per altre informazioni sull'iniziatore iSCSI per le distribuzioni supportate, vedere i collegamenti seguenti:
Scegliere uno dei server che parteciperanno alla configurazione FCI. Non è rilevante quale. iSCSI deve trovarsi in una rete dedicata, quindi configurare iSCSI in modo che riconosca e usi tale rete. Eseguire
sudo iscsiadm -m iface -I <iSCSIIfaceName> -o newin cui<iSCSIIfaceName>è il nome univoco o descrittivo della rete. Nell'esempio seguente viene usatoiSCSINIC:sudo iscsiadm -m iface -I iSCSINIC -o newEcco l'output previsto:
New interface iSCSINIC addedModifica
/var/lib/iscsi/ifaces/iSCSIIfaceName. Assicurarsi che i valori seguenti siano completamente compilati:-
iface.net_ifacenameè il nome della scheda di rete, visualizzato nel sistema operativo. -
iface.hwaddressè l'indirizzo MAC del nome univoco che verrà creato per l'interfaccia seguente. iface.ipaddressiface.subnet_Mask
Vedere l'esempio seguente:
-
Trovare la destinazione iSCSI.
sudo iscsiadm -m discovery -t sendtargets -I <iSCSINetName> -p <TargetIPAddress>:<TargetPort><iSCSINetName>è il nome descrittivo/univoco della rete,<TargetIPAddress>è l'indirizzo IP della destinazione iSCSI e<TargetPort>è la porta della destinazione iSCSI.Ecco l'output previsto:
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-targetAccedi al target.
sudo iscsiadm -m node -I <iSCSIIfaceName> -p TargetIPAddress -l<iSCSIIfaceName>è il nome descrittivo/univoco della rete e<TargetIPAddress>è l'indirizzo IP della destinazione iSCSI.Ecco l'output previsto:
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.Verificare che sia presente una connessione alla destinazione iSCSI.
sudo iscsiadm -m sessionL'output è simile al seguente esempio:
tcp: [1] 10.105.16.7:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-target (non-flash)Controllare i dischi iSCSI collegati.
sudo grep "Attached SCSI" /var/log/messages
Creare un volume fisico sul disco iSCSI.
sudo pvcreate /dev/<devicename><devicename>è il nome del dispositivo del passaggio precedente.Creare un gruppo di volumi nel disco iSCSI. I dischi assegnati a un singolo gruppo di volumi vengono visualizzati come pool o come raccolta.
sudo vgcreate <VolumeGroupName> /dev/devicename<VolumeGroupName>è il nome del gruppo di volumi e<devicename>è il nome del dispositivo del passaggio 6.Creare e verificare il volume logico per il disco.
sudo lvcreate -Lsize -n <LogicalVolumeName> <VolumeGroupName><size>è la dimensione del volume da creare e può essere specificata in G (gigabyte), T (terabyte) e così via.<LogicalVolumeName>è il nome del volume logico e<VolumeGroupName>è il nome del gruppo di volumi del passaggio precedente.Ecco l'output previsto:
Logical volume "FCIDataLV1" created.Nell'esempio seguente viene creato un volume di 25 GB.
Eseguire
sudo lvsper visualizzare l'LVM creato.Formattare il volume logico con un file system supportato. Per ext4, usare l'esempio seguente:
sudo mkfs.ext4 /dev/<VolumeGroupName>/<LogicalVolumeName><VolumeGroupName>è il nome del gruppo di volumi del passaggio precedente.<LogicalVolumeName>è il nome del volume logico del passaggio precedente.Per i database di sistema o qualsiasi altro elemento archiviato nel percorso dati predefinito, seguire questa procedura. Altrimenti, vai al passaggio 13.
Verificare che SQL Server sia arrestato sul server su cui si sta lavorando.
sudo systemctl stop mssql-server sudo systemctl status mssql-serverPassare completamente ad essere il superutente. Se l'operazione ha esito positivo, non si riceve alcuna conferma.
sudo -iPassa all'utente
mssql. Se l'operazione ha esito positivo, non si riceve alcuna conferma.su mssqlCreare una directory temporanea per archiviare i file di dati e di log di SQL Server. Se l'operazione ha esito positivo, non si riceve alcuna conferma.
mkdir <TempDir><TempDir>è il nome della cartella. L'esempio seguente crea una cartella denominata /var/opt/mssql/TempDir.mkdir /var/opt/mssql/TempDirCopiare i file di dati e di log di SQL Server nella directory temporanea. Se l'operazione ha esito positivo, non si riceve alcuna conferma.
cp /var/opt/mssql/data/* <TempDir><TempDir>è il nome della cartella del passaggio precedente.Verificare che i file si trovino nella directory.
ls <TempDir><TempDir>è il nome della cartella dei passaggi precedenti.Eliminare i file dalla directory di dati di SQL Server esistente. Se l'operazione ha esito positivo, non si riceve alcuna conferma.
rm - f /var/opt/mssql/data/*Verificare che i file siano stati eliminati. Nell'immagine seguente viene illustrato un esempio dell'intera sequenza da c a h.
ls /var/opt/mssql/dataDigitare
exitper tornare all'utenteroot.Montare il volume logico iSCSI nella cartella di dati di SQL Server. Se l'operazione ha esito positivo, non si riceve alcuna conferma.
mount /dev/<VolumeGroupName>/<LogicalVolumeName> /var/opt/mssql/data<VolumeGroupName>è il nome del gruppo di volumi e<LogicalVolumeName>è il nome del volume logico creato. La sintassi di esempio seguente corrisponde al gruppo di volumi e al volume logico del comando precedente.mount /dev/FCIDataVG1/FCIDataLV1 /var/opt/mssql/dataModifica il proprietario del punto di montaggio a
mssql. Se l'operazione ha esito positivo, non si riceve alcuna conferma.chown mssql /var/opt/mssql/dataModificare la proprietà del gruppo del montaggio a
mssql. Se l'operazione ha esito positivo, non si riceve alcuna conferma.chgrp mssql /var/opt/mssql/dataPassare all'utente
mssql: Se l'operazione ha esito positivo, non si riceve alcuna conferma.su mssqlCopiare i file dalla directory temporanea
/var/opt/mssql/data. Se l'operazione ha esito positivo, non si riceve alcuna conferma.cp /var/opt/mssql/TempDir/* /var/opt/mssql/dataVerificare che i file siano presenti.
ls /var/opt/mssql/dataImmettere
exitper non esseremssql.Immettere
exitper non essereroot.Avviare SQL Server. Se tutti gli elementi sono stati copiati correttamente e la sicurezza è applicata correttamente, SQL Server deve risultare avviato.
sudo systemctl start mssql-server sudo systemctl status mssql-serverArrestare SQL Server e verificare che l'operazione sia stata eseguita.
sudo systemctl stop mssql-server sudo systemctl status mssql-server
Per elementi diversi dai database di sistema, ad esempio i database utente o i backup, seguire questa procedura. Se si usa solo il percorso predefinito, andare al passaggio 14.
Eseguire il comando per operare come utente con privilegi avanzati. Se l'operazione ha esito positivo, non si riceve alcuna conferma.
sudo -iCreare una cartella che verrà usata da SQL Server.
mkdir <FolderName><FolderName>è il nome della cartella. Se non si trova nella posizione corretta, è necessario specificare il percorso completo della cartella. L'esempio seguente crea una cartella denominata /var/opt/mssql/userdata.mkdir /var/opt/mssql/userdataMontare il volume logico iSCSI nella cartella creata nel passaggio precedente. Se l'operazione ha esito positivo, non si riceve alcuna conferma.
mount /dev/<VolumeGroupName>/<LogicalVolumeName> <FolderName><VolumeGroupName>è il nome del gruppo di volumi,<LogicalVolumeName>è il nome del volume logico creato e<FolderName>è il nome della cartella. Qui è riportata la sintassi di esempio.mount /dev/FCIDataVG2/FCIDataLV2 /var/opt/mssql/userdataModificare la proprietà della cartella creata impostandola su
mssql. Se l'operazione ha esito positivo, non si riceve alcuna conferma.chown mssql <FolderName><FolderName>è il nome della cartella creata. Un esempio è disponibile qui.chown mssql /var/opt/mssql/userdataModificare il gruppo della cartella creata impostandolo su
mssql. Se l'operazione ha esito positivo, non si riceve alcuna conferma.chown mssql <FolderName><FolderName>è il nome della cartella creata. Un esempio è disponibile qui.chown mssql /var/opt/mssql/userdataDigitare
exitper non operare più come utente con privilegi avanzati.Per eseguire il test, creare un database in tale cartella. Lo script seguente crea un database, cambia il contesto e verifica che i file esistano a livello di sistema operativo e quindi elimina il percorso temporaneo. È possibile usare SSMS o sqlcmd per eseguire questo script.
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; GOEseguire il comando seguente nella shell per visualizzare i nuovi file di database.
sudo ls /var/opt/mssal/userdataEcco l'output previsto:
lost+found TestDB_Data.mdf TestDB_Log.ldfElimina il database per ripulire.
DROP DATABASE TestDB; GOsudo ls /var/opt/mssal/userdataEcco l'output previsto:
lost+foundSmontare la condivisione
sudo umount /dev/<VolumeGroupName>/<LogicalVolumeName> <FolderName><VolumeGroupName>è il nome del gruppo di volumi,<LogicalVolumeName>è il nome del volume logico creato e<FolderName>è il nome della cartella. Qui è riportata la sintassi di esempio.sudo umount /dev/FCIDataVG2/FCIDataLV2 /var/opt/mssql/userdata
Configurare il server in modo che solo Pacemaker possa attivare il volume group.
sudo lvmconf --enable-halvm --services -startstopservicesGenerare un elenco dei gruppi di volumi nel server. Qualsiasi elemento elencato che non sia il disco iSCSI viene usato dal sistema, ad esempio il disco del sistema operativo.
sudo vgsModificare la sezione di configurazione dell'attivazione del file /etc/lvm/lvm.conf. Configurare la riga seguente:
volume_list = [ <ListOfVGsNotUsedByPacemaker> ]<ListOfVGsNotUsedByPacemaker>è l'elenco dei gruppi di volumi dal risultato del passaggio 20 che non sono utilizzati dall'istanza del cluster di failover. Inserirli ognuno tra virgolette e separarli con una virgola. Un esempio è disponibile qui.All'avvio di Linux, il file system viene montato. Per assicurarsi che solo Pacemaker possa montare il disco iSCSI, ricompilare l'immagine del file system radice.
Eseguire il comando seguente che potrebbe richiedere alcuni minuti per il completamento. Se l'operazione ha esito positivo, non viene restituito alcun messaggio.
sudo dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)Riavviare il server.
Su un altro server che parteciperà al FCI, eseguire i passaggi da 1 a 6. La destinazione iSCSI viene resa disponibile al server SQL.
Generare un elenco dei gruppi di volumi nel server. Verrà visualizzato il gruppo di volumi creato in precedenza.
sudo vgsAvviare SQL Server e verificare che possa essere avviato in questo server.
sudo systemctl start mssql-server sudo systemctl status mssql-serverArrestare SQL Server e verificare che l'operazione sia stata eseguita.
sudo systemctl stop mssql-server sudo systemctl status mssql-serverRipetere i passaggi da 1 a 6 sugli altri server che parteciperanno al FCI.
Ora sei pronto per configurare il FCI.