Share via


SQL Server für Linux: Konfigurieren einer Failoverclusterinstanz mit iSCSI

Gilt für:SQL Server – Linux

In diesem Artikel wird erklärt, wie Sie einen iSCSI-Speicher für eine Failoverclusterinstanz (FCI) unter Linux konfigurieren.

Konfigurieren von iSCSI

iSCSI verwendet Netzwerke, um Datenträger von einem Server darzustellen, der für andere Server als Zielserver gilt. Die Server, die eine Verbindung mit dem iSCSI-Ziel herstellen, erfordern einen konfigurierten iSCSI-Initiator. Die Datenträger auf dem Ziel erhalten explizite Berechtigungen, sodass nur die Initiatoren auf die Datenträger zugreifen können, die dies können sollen. Das Ziel selbst sollte hochverfügbar und zuverlässig sein.

Wichtige Informationen zum iSCSI-Ziel

In diesem Abschnitt wird zwar nicht beschrieben, wie das iSCSI-Ziel konfiguriert wird, da dies von dem Typ der Quelle abhängt, die Sie verwenden möchten, jedoch wird sichergestellt, dass die Sicherheit für die von den Clusterknoten verwendeten Datenträger konfiguriert wird.

Das Ziel sollte nie für FCI-Knoten konfiguriert werden, wenn ein auf Linux basierendes iSCSI-Ziel verwendet wird. iSCSI-Netzwerke sollten separat von denen sein, die vom regulären Netzwerkdatenverkehr der Quell- und Clientserver verwendet werden, um die Leistung und Verfügbarkeit zu verbessern. Die Netzwerke, die für iSCSI verwendet werden, sollten schnell sein. Denken daran, dass Netzwerke eine gewisse Prozessorbandbreite beanspruchen. Planen Sie daher entsprechend, wenn Sie einen herkömmlichen Server verwenden. Das Wichtigste, was Sie auf dem Ziel sicherstellen sollten, ist, dass den erstellten Datenträgern die richtigen Berechtigungen zugewiesen werden, sodass nur die Server über Zugriffsberechtigungen verfügen, die an der Failoverclusterinstanz beteiligt sind. Im Folgenden wird ein Beispiel des iSCSI-Ziels von Microsoft gezeigt, in dem der Name „linuxnodes1“ erstellt wird, und (in diesem Fall) die IP-Adressen der Knoten so zugewiesen werden, dass „NewFCIDisk1.vhdx“ für sie angezeigt wird.

Initiator

Anweisungen

In diesem Abschnitt wird beschrieben, wie ein iSCSI-Initiator für die Server konfiguriert wird, die der Failoverclusterinstanz als Knoten dienen. Die Anweisungen sollten sowohl für RHEL als auch für Ubuntu funktionieren.

Weitere Informationen zum iSCSI-Initiator für die unterstützten Verteilungen finden Sie unter folgenden Links:

  1. Wählen Sie einen der Server aus, der an der FCI-Konfiguration beteiligt sein wird. Es spielt keine Rolle, welchen Sie auswählen. iSCSI sollte sich auf einem dedizierten Netzwerk befinden, konfigurieren Sie iSCSI also so, dass das Netzwerk erkannt und verwendet wird. Führen Sie sudo iscsiadm -m iface -I <iSCSIIfaceName> -o new aus, wobei <iSCSIIfaceName> dem eindeutigen oder dem Anzeigenamen des Netzwerks entspricht. Im folgenden Beispiel wird iSCSINIC verwendet:

    sudo iscsiadm -m iface -I iSCSINIC -o new
    

    Screenshot of the iface command and the response to the command.

  2. Bearbeiten Sie /var/lib/iscsi/ifaces/iSCSIIfaceName. Stellen Sie sicher, dass die folgenden Werte vollständig ausgefüllt sind:

    • iface.net_ifacename entspricht dem Namen der Netzwerkkarte, die im Betriebssystem angezeigt wird.
    • iface.hwaddress entspricht der MAC-Adresse des eindeutigen Namens, der unten für diese Schnittstelle erstellt wird.
    • iface.ipaddress
    • iface.subnet_Mask

    Sehen Sie sich folgendes Beispiel an:

    Screenshot of the file with the values completely filled out.

  3. Suchen Sie das iSCSI-Ziel.

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

    <iSCSINetName> ist der eindeutige Name bzw. Anzeigename des Netzwerks, <TargetIPAddress> ist die IP-Adresse des iSCSI-Ziels, und <TargetPort> ist der Port des iSCSI-Ziels.

    Screenshot of the discovery command and the response to the command.

  4. Melden Sie sich beim Zielserver an.

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

    <iSCSIIfaceName> ist der eindeutige Name bzw. Anzeigename des Netzwerks, und <TargetIPAddress> ist die IP-Adresse des iSCSI-Ziels.

    iSCSITargetLogin

  5. Überprüfen Sie, ob eine Verbindumg mit dem iSCSI-Ziel besteht.

    sudo iscsiadm -m session
    

    iSCSIVerify

  6. Überprüfen Sie die angefügten iSCSI-Datenträger.

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

    Screenshot of the grep command and the response to the command showing the attached SCSI disks.

  7. Erstellen Sie ein physisches Volume auf dem iSCSI-Datenträger.

    sudo pvcreate /dev/<devicename>
    

    <devicename> ist der Name des Geräts aus dem vorherigen Schritt.

  8. Erstellen Sie eine Volumegruppe auf dem iSCSI-Datenträger. Datenträger, die einer einzelnen Volumegruppe zugewiesen werden, werden als Pool oder Sammlung angezeigt.

    sudo vgcreate <VolumeGroupName> /dev/devicename
    

    <VolumeGroupName> ist der Name der Volumegruppe, und <devicename> ist der Name des Geräts aus Schritt 6.

  9. Erstellen und überprüfen Sie das logische Volume für den Datenträger.

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

    <size> ist die Größe des zu erstellenden Volumes und kann in G (Gigabyte), T (Terabyte) usw. angegeben werden. <LogicalVolumeName> ist der Name des logischen Volumes, und <VolumeGroupName> ist der Name der Volumegruppe aus dem vorherigen Schritt.

    Im folgenden Beispiel wird ein Volume mit 25 GB erstellt.

    Create25GBVol

  10. Führen Sie sudo lvs aus, um den erstellten LVM anzuzeigen.

  11. Formatieren Sie das logische Volume mit einem unterstützten Dateisystem. Verwenden Sie das folgende Beispiel für EXT4:

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

    <VolumeGroupName> ist der Name der Volumegruppe aus dem vorherigen Schritt. <LogicalVolumeName> ist der Name des logischen Volumes aus dem vorherigen Schritt.

  12. Befolgen Sie für Systemdatenbanken oder Daten, die am Standardspeicherort gespeichert sind, die folgenden Schritte. Fahren Sie andernfalls mit Schritt 13 fort.

  • Stellen Sie sicher, dass SQL Server auf dem Server beendet wurde, auf dem Sie arbeiten.

    sudo systemctl stop mssql-server
    sudo systemctl status mssql-server
    
  • Wechseln Sie vollständig zum Superuser. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.

    sudo -i
    
  • Wechseln Sie zum mssql-Benutzer. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.

    su mssql
    
  • Erstellen Sie ein temporäres Verzeichnis, in dem Sie die SQL Server-Daten und -Protokolldateien speichern. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.

    mkdir <TempDir>
    

    <TempDir> ist der Name des Ordners. Im folgenden Beispiel wird ein Ordner mit dem Namen „/var/opt/mssql/TempDir“ erstellt.

    mkdir /var/opt/mssql/TempDir
    
  • Kopieren Sie die SQL Server-Daten und -Protokolldateien in das temporäre Verzeichnis. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.

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

    <TempDir> ist der Name des Ordners aus dem vorherigen Schritt.

  • Stellen Sie sicher, dass sich die Dateien im Verzeichnis befinden.

    ls \<TempDir>
    

    <TempDir> ist der Name des Ordners aus Schritt d.

  • Löschen Sie die Dateien aus dem vorhandenen SQL Server-Datenverzeichnis. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.

    rm - f /var/opt/mssql/data/*
    
  • Stellen Sie sicher, dass die Dateien gelöscht wurden. Im folgenden Beispiel wird die gesamte Sequenz von Schritt c bis h veranschaulicht.

    ls /var/opt/mssql/data
    

    Screenshot of the ls command and the response to the command.

  • Geben Sie exit ein, um zum Root-Benutzer zurück zu wechseln.

  • Binden Sie das logische iSCSI-Volume in den SQL Server-Datenordner ein. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.

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

    <VolumeGroupName> ist der Name der Volumegruppe, und <LogicalVolumeName> ist der Name des erstellten logischen Volumes. Die folgende Beispielsyntax entspricht der Volumegruppe und dem logischen Volume aus dem vorherigen Befehl.

    mount /dev/FCIDataVG1/FCIDataLV1 /var/opt/mssql/data
    
  • Ändern Sie den Besitzer der Einbindung in mssql. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.

    chown mssql /var/opt/mssql/data
    
  • Ändern Sie den Besitz der Gruppe der Einbindung in mssql. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.

    chgrp mssql /var/opt/mssql/data
    
  • Wechseln Sie zum mssql-Benutzer. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.

    su mssql
    
  • Kopieren Sie die Dateien aus dem temporären Verzeichnis „/var/opt/mssql/data“. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.

    cp /var/opt/mssql/TempDir/* /var/opt/mssql/data
    
  • Stellen Sie sicher, dass die Dateien vorhanden sind.

    ls /var/opt/mssql/data
    
  • Geben Sie für exit nicht „mssql“ ein.

  • Geben Sie für exit nicht „root“ ein.

  • Starten Sie SQL Server. Wenn alles richtig kopiert wurde und die Sicherheitsmaßnahmen ordnungsgemäß angewendet wurden, sollte SQL Server als gestartet angezeigt werden.

    sudo systemctl start mssql-server
    sudo systemctl status mssql-server
    
  • Beenden Sie SQL Server, und vergewissern Sie sich, dass die Serverinstanz heruntergefahren wurde.

    sudo systemctl stop mssql-server
    sudo systemctl status mssql-server
    
  1. Führen Sie folgende Schritte aus, wenn es nicht um Systemdatenbanken, sondern um Benutzerdatenbanken oder Sicherungen geht. Wenn nur der Standardspeicherort verwendet wird, können Sie mit Schritt 14 fortfahren.
  • Wechseln Sie zum Superuser. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.

    sudo -i
    
  • Erstellen Sie einen Ordner, der von SQL Server verwendet wird.

    mkdir <FolderName>
    

    <FolderName> ist der Name des Ordners. Wenn sich der Ordner nicht am richtigen Speicherort befindet, muss der vollständige Pfad angegeben werden. Im folgenden Beispiel wird ein Ordner mit dem Namen „/var/opt/mssql/userdata“ erstellt.

    mkdir /var/opt/mssql/userdata
    
  • Binden Sie das logische iSCSI-Volume in den Ordner ein, der im vorherigen Schritt erstellt wurde. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.

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

    <VolumeGroupName> ist der Name der Volumegruppe, <LogicalVolumeName> ist der Name des erstellten logischen Volumes, und <FolderName> ist der Name des Ordners. Die Beispielsyntax wird unten gezeigt.

    mount /dev/FCIDataVG2/FCIDataLV2 /var/opt/mssql/userdata 
    
  • Ändern Sie den Besitzer des Ordners, der in mssql erstellt wurde. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.

    chown mssql <FolderName>
    

    <FolderName> ist der Name des erstellten Ordners. Ein entsprechendes Beispiel ist nachfolgend dargestellt.

    chown mssql /var/opt/mssql/userdata
    
  • Ändern Sie die Gruppe des Ordners, der in mssql erstellt wurde. Wenn dies erfolgreich war, erhalten Sie keine Bestätigung.

    chown mssql <FolderName>
    

    <FolderName> ist der Name des erstellten Ordners. Ein entsprechendes Beispiel ist nachfolgend dargestellt.

    chown mssql /var/opt/mssql/userdata
    
  • Geben Sie exit ein, um nicht mehr der Superuser zu sein.

  • Erstellen Sie eine Datenbank in diesem Ordner, um dies zu testen. Im folgenden Beispiel wird „sqlcmd“ verwendet, um eine Datenbank zu erstellen, den Kontext zu wechseln und zu überprüfen, ob die Dateien auf der Betriebssystemebene vorhanden sind. Anschließend wird der temporäre Speicherort gelöscht. Sie können SSMS verwenden.

    Screenshot of the sqlcmd command and the response to the command.

  • Heben Sie die Einbindung der Freigabe auf.

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

    <VolumeGroupName> ist der Name der Volumegruppe, <LogicalVolumeName> ist der Name des erstellten logischen Volumes, und <FolderName> ist der Name des Ordners. Die Beispielsyntax wird unten gezeigt.

    sudo umount /dev/FCIDataVG2/FCIDataLV2 /var/opt/mssql/userdata 
    
  1. Konfigurieren Sie den Server so, dass die Volumegruppe nur mit Pacemaker aktiviert werden kann.

    sudo lvmconf --enable-halvm --services -startstopservices
    
  2. Generieren Sie eine Liste der Volumegruppen auf dem Server. Alle aufgeführten Gruppen, die nicht zum iSCSI-Datenträger gehören, werden vom System verwendet, z. B. für den Betriebssystemdatenträger.

    sudo vgs
    
  3. Ändern Sie den Aktivierungskonfigurationsabschnitt der Datei unter /etc/lvm/lvm.conf. Konfigurieren Sie die folgende Zeile:

    volume_list = [ <ListOfVGsNotUsedByPacemaker> ]
    

    <ListOfVGsNotUsedByPacemaker> ist die Liste der Volumegruppen aus der Ausgabe von Schritt 20, die nicht von der Failoverclusterinstanz verwendet werden. Setzen Sie sie in Anführungszeichen, und trennen Sie sie durch Kommas. Ein entsprechendes Beispiel ist nachfolgend dargestellt.

    Screenshot showing an example of a volume_list value.

  4. Wenn Linux gestartet wird, wird das Dateisystem eingebunden. Erstellen Sie das Image für das Stammdateisystem neu, um sicherzustellen, dass nur Pacemaker den iSCSI-Datenträger einbinden kann.

    Führen Sie den folgenden Befehl aus. Dies sollte nur wenig Zeit beanspruchen. Wenn dies erfolgreich war, erhalten Sie keine Benachrichtigung.

    sudo dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)
    
  5. Starten Sie den Server neu.

  6. Führen Sie die Schritte 1-6 auf einem anderen Server aus, der an der Failoverclusterinstanz teilnimmt. Dadurch wird das iSCSI-Ziel für die SQL Server-Instanz angezeigt.

  7. Generieren Sie eine Liste der Volumegruppen auf dem Server. Nun sollte die zuvor erstellte Volumegruppe angezeigt werden.

    sudo vgs
    
  8. Starten Sie SQL Server, und überprüfen Sie, ob die Ausführung auf dem Server möglich ist.

    sudo systemctl start mssql-server
    sudo systemctl status mssql-server
    
  9. Beenden Sie SQL Server, und vergewissern Sie sich, dass die Serverinstanz heruntergefahren wurde.

    sudo systemctl stop mssql-server
    sudo systemctl status mssql-server
    
  10. Wiederholen Sie die Schritte 1-6 auf allen anderen Servern, die an der Failoverclusterinstanz teilnehmen sollen.

Sie können die Failoverclusterinstanz nun konfigurieren.

Distribution Thema
Red Hat Enterprise Linux mit Add-On für Hochverfügbarkeit Konfigurieren
Ausführen
SUSE Linux Enterprise Server mit Add-On für Hochverfügbarkeit Konfigurieren