Skip to main content
BeeGFS on NetApp with E-Series Storage
Die deutsche Sprachversion wurde als Serviceleistung für Sie durch maschinelle Übersetzung erstellt. Bei eventuellen Unstimmigkeiten hat die englische Sprachversion Vorrang.

Festlegen Der Konfiguration Des Gemeinsamen Dateiknotens

Beitragende

Geben Sie unter Verwendung von Gruppenvariablen (Group_vars) die Konfiguration allgemeiner Dateiknoten an.

Überblick

Konfiguration, die auf alle Datei-Nodes Apfel soll, wird bei definiert group_vars/ha_cluster.yml. Dazu gehören in der Regel:

  • Details zur Verbindung und Anmeldung zu den einzelnen Dateiknoten.

  • Gängige Netzwerkkonfiguration.

  • Gibt an, ob ein automatischer Neustart zulässig ist.

  • Wie Firewall- und selinux-Status konfiguriert werden sollen.

  • Cluster-Konfiguration mit Warn- und Fechten

  • Performance-Optimierung:

  • Allgemeine BeeGFS-Servicekonfiguration.

Hinweis Die in dieser Datei festgelegten Optionen können auch auf einzelnen Datei-Nodes definiert werden, z. B. wenn gemischte Hardware-Modelle verwendet werden oder Sie unterschiedliche Passwörter für jeden Knoten haben. Die Konfiguration auf einzelnen Datei-Knoten hat Vorrang vor der Konfiguration in dieser Datei.

Schritte

Erstellen Sie die Datei group_vars/ha_cluster.yml Und füllen Sie es wie folgt aus:

  1. Geben Sie an, wie sich der Ansible Control-Node mit den Remote-Hosts authentifizieren soll:

    ansible_ssh_user: root
    ansible_become_password: <PASSWORD>
    Warnung Speichern Sie Passwörter insbesondere für Produktionsumgebungen nicht im Klartext. Verwenden Sie stattdessen Ansible Vault (siehe "Verschlüsseln von Inhalten mit Ansible Vault") Oder der --ask-become-pass Option beim Ausführen des Playbooks. Wenn der ansible_ssh_user Ist bereits root, dann können Sie optional auslassen ansible_become_password.
  2. Wenn Sie statische IPs in ethernet- oder InfiniBand-Schnittstellen konfigurieren (zum Beispiel Cluster-IPs) und mehrere Schnittstellen im gleichen IP-Subnetz sind (z. B. wenn ib0 192.168.1.10/24 verwendet und ib1 192.168.1.11/24 verwendet), Zusätzliche IP-Routing-Tabellen und -Regeln müssen so eingerichtet sein, dass Multi-Homed-Unterstützung ordnungsgemäß funktioniert. Aktivieren Sie einfach den mitgelieferten Konfigurationshaken für Netzwerkschnittstellen wie folgt:

    eseries_ip_default_hook_templates:
      - 99-multihoming.j2
  3. Bei der Implementierung des Clusters müssen je nach Storage-Protokoll Nodes neu gestartet werden, um die Erkennung von Remote-Block-Geräten (E-Series Volumes) zu erleichtern oder andere Aspekte der Konfiguration anzuwenden. Standardmäßig werden vor dem Neubooten von Nodes angezeigt. Sie können Nodes jedoch durch Angabe des folgenden Verfahrens automatisch neu starten:

    eseries_common_allow_host_reboot: true
    1. Standardmäßig nach einem Neustart, um sicherzustellen, dass Block-Geräte und andere Services bereit sind Ansible wartet, bis das System default.target Erreicht wird, bevor die Implementierung fortgesetzt wird. In manchen Szenarien, in denen NVMe/IB verwendet wird, ist dies möglicherweise nicht lang genug, um Remote-Geräte zu initialisieren, zu erkennen und eine Verbindung zu herstellen. Dies kann dazu führen, dass die automatisierte Implementierung vorzeitig ausfällt und ausfällt. Um dies bei der Nutzung von NVMe/IB zu vermeiden, müssen Sie außerdem Folgendes definieren:

      eseries_common_reboot_test_command: "! systemctl status eseries_nvme_ib.service || systemctl --state=exited | grep eseries_nvme_ib.service"
  4. Für die Kommunikation mit BeeGFS und HA-Cluster-Services sind mehrere Firewall-Ports erforderlich. Wenn Sie die Firwewall nicht manuell konfigurieren möchten (nicht empfohlen), geben Sie Folgendes an, damit erforderliche Firewall-Zonen erstellt und Ports automatisch geöffnet werden:

    beegfs_ha_firewall_configure: True
  5. Derzeit wird SELinux nicht unterstützt, und es wird empfohlen, den Status auf deaktiviert zu setzen, um Konflikte zu vermeiden (insbesondere, wenn RDMA verwendet wird). Stellen Sie Folgendes ein, um sicherzustellen, dass SELinux deaktiviert ist:

    eseries_beegfs_ha_disable_selinux: True
    eseries_selinux_state: disabled
  6. Konfigurieren Sie die Authentifizierung so, dass Dateiknoten kommunizieren können und passen Sie die Standardeinstellungen entsprechend Ihren Unternehmensrichtlinien an:

    beegfs_ha_cluster_name: hacluster                  # BeeGFS HA cluster name.
    beegfs_ha_cluster_username: hacluster              # BeeGFS HA cluster username.
    beegfs_ha_cluster_password: hapassword             # BeeGFS HA cluster username's password.
    beegfs_ha_cluster_password_sha512_salt: randomSalt # BeeGFS HA cluster username's password salt.
  7. Auf der Grundlage von "Planen Sie das Dateisystem" Im Abschnitt wird die BeeGFS-Management-IP für dieses Dateisystem angegeben:

    beegfs_ha_mgmtd_floating_ip: <IP ADDRESS>
    Hinweis Während scheinbar redundant, beegfs_ha_mgmtd_floating_ip Ist wichtig, wenn Sie das BeeGFS-Dateisystem über einen einzelnen HA-Cluster hinaus skalieren. Nachfolgende HA-Cluster werden ohne zusätzlichen BeeGFS-Managementservice bereitgestellt und Punkt am Managementservice des ersten Clusters.
  8. Aktivieren Sie bei Bedarf E-Mail-Alarme:

    beegfs_ha_enable_alerts: True
    # E-mail recipient list for notifications when BeeGFS HA resources change or fail.
    beegfs_ha_alert_email_list: ["<EMAIL>"]
    # This dictionary is used to configure postfix service (/etc/postfix/main.cf) which is required to set email alerts.
    beegfs_ha_alert_conf_ha_group_options:
          # This parameter specifies the local internet domain name. This is optional when the cluster nodes have fully qualified hostnames (i.e. host.example.com)
          mydomain: <MY_DOMAIN>
    beegfs_ha_alert_verbosity: 3
    #  1) high-level node activity
    #  3) high-level node activity + fencing action information + resources (filter on X-monitor)
    #  5) high-level node activity + fencing action information + resources
  9. Es wird dringend empfohlen, Fechten zu aktivieren, da bei Ausfall des primären Knotens Services vom Starten auf sekundären Knoten blockiert werden können.

    1. Aktivieren Sie das globale Fechten, indem Sie Folgendes angeben:

      beegfs_ha_cluster_crm_config_options:
        stonith-enabled: True
      1. Beachten Sie alle unterstützten "Cluster-Eigenschaft" Kann bei Bedarf auch hier angegeben werden. Es ist normalerweise nicht nötig, diese anzupassen, da die BeeGFS HA-Rolle mit einer Reihe gut getesteter ausgeliefert wird "Standardwerte".

    2. Wählen Sie anschließend einen Fechten-Agent aus und konfigurieren Sie ihn:

      1. OPTION 1: Ermöglicht das Fechten mit APC Power Distribution Units (PDUs):

        beegfs_ha_fencing_agents:
          fence_apc:
            - ipaddr: <PDU_IP_ADDRESS>
              login: <PDU_USERNAME>
              passwd: <PDU_PASSWORD>
              pcmk_host_map: "<HOSTNAME>:<PDU_PORT>,<PDU_PORT>;<HOSTNAME>:<PDU_PORT>,<PDU_PORT>"
      2. OPTION 2: Ermöglicht das Fechten mit den vom Lenovo XCC (und anderen BMCs) bereitgestellten Redfish APIs:

        redfish: &redfish
          username: <BMC_USERNAME>
          password: <BMC_PASSWORD>
          ssl_insecure: 1 # If a valid SSL certificate is not available specify “1”.
        
        beegfs_ha_fencing_agents:
          fence_redfish:
            - pcmk_host_list: <HOSTNAME>
              ip: <BMC_IP>
              <<: *redfish
            - pcmk_host_list: <HOSTNAME>
              ip: <BMC_IP>
              <<: *redfish
      3. Details zur Konfiguration anderer Zaunmittel finden Sie im "Red hat Dokumentation".

  10. Die BeeGFS HA-Rolle kann viele verschiedene Tuning-Parameter anwenden, um die Leistung weiter zu optimieren. Dazu gehören unter anderem die Optimierung der Kernel-Speicherauslastung und die E/A von Blockgeräten. Die Rolle wird mit einem angemessenen Satz von ausgeliefert "Standardwerte" In Tests mit Block-Nodes der NetApp E-Series werden diese standardmäßig jedoch nicht angewendet, wenn Sie angeben:

    beegfs_ha_enable_performance_tuning: True
    1. Geben Sie bei Bedarf auch hier Änderungen an der Standard-Performance-Optimierung an. Siehe die vollständige "Parameter für die Performance-Optimierung" Dokumentation für weitere Details.

  11. Damit schwebende IP-Adressen (manchmal auch als logische Schnittstellen bekannt), die für BeeGFS-Dienste verwendet werden, zwischen Datei-Nodes ausfallen können, müssen alle Netzwerkschnittstellen konsistent benannt werden. Standardmäßig werden Netzwerkschnittstellennamen vom Kernel generiert, was nicht garantiert ist, dass konsistente Namen generiert werden, auch bei identischen Servermodellen mit Netzwerkadaptern, die in denselben PCIe-Steckplätzen installiert sind. Dies ist auch nützlich, wenn Vorräte erstellt werden, bevor das Gerät bereitgestellt wird und generierte Schnittstellennamen bekannt sind. Um konsistente Gerätenamen auf der Grundlage eines Blockdiagramms des Servers oder sicherzustellen lshw -class network -businfo Ausgabe, geben Sie die gewünschte PCIe-Adresse-zu-logische Schnittstellenzuordnung wie folgt an:

    1. Für InfiniBand (IPoIB)-Netzwerkschnittstellen:

      eseries_ipoib_udev_rules:
        "<PCIe ADDRESS>": <NAME> # Ex: 0000:41:00.0: i1a
    2. Bei Ethernet-Netzwerkschnittstellen:

      eseries_ip_udev_rules:
        "<PCIe ADDRESS>": <NAME> # Ex: 0000:41:00.0: e1a
      Wichtig Um Konflikte zu vermeiden, wenn Schnittstellen umbenannt werden (um zu verhindern, dass sie umbenannt werden), sollten Sie keine möglichen Standardnamen wie eth0, ens9f0, ib0 oder ibs4f0 verwenden. Eine häufige Namenskonvention besteht darin, „e“ oder „i“ für Ethernet oder InfiniBand zu verwenden, gefolgt von der PCIe-Steckplatznummer und einem Buchstaben zur Angabe des Ports. Zum Beispiel wäre der zweite Port eines InfiniBand-Adapters, der in Steckplatz 3 installiert ist: i3b.
    Hinweis Wenn Sie ein verifiziertes Datei-Node-Modell verwenden, klicken Sie auf "Hier" Beispiel für Zuordnungen von PCIe-Adressen zu logischen Ports
  12. Geben Sie optional die Konfiguration an, die für alle BeeGFS-Dienste im Cluster gelten soll. Es können Standardkonfigurationswerte gefunden werden "Hier", Und die Konfiguration pro Service ist an anderer Stelle spezifiziert:

    1. BeeGFS Management-Service:

      beegfs_ha_beegfs_mgmtd_conf_ha_group_options:
        <OPTION>: <VALUE>
    2. BeeGFS Metadata Services:

      beegfs_ha_beegfs_meta_conf_ha_group_options:
        <OPTION>: <VALUE>
    3. BeeGFS Storage-Services:

      beegfs_ha_beegfs_storage_conf_ha_group_options:
        <OPTION>: <VALUE>
  13. Ab BeeGFS 7.2.7 und 7.3.1 "Verbindungsauthentifizierung" Muss konfiguriert oder explizit deaktiviert werden. Es gibt einige Konfigurationsmöglichkeiten, die mit der Ansible-basierten Implementierung konfiguriert werden können:

    1. Standardmäßig konfiguriert die Bereitstellung die Verbindungsauthentifizierung automatisch und erstellt ein connauthfile Die auf alle Datei-Nodes verteilt und mit den BeeGFS-Diensten verwendet werden. Diese Datei wird auch auf dem Ansible-Steuerungsknoten in abgelegt/gepflegt <INVENTORY>/files/beegfs/<sysMgmtdHost>_connAuthFile Wo Sie Daten für die Wiederverwendung mit Clients, die auf dieses Filesystem zugreifen müssen, aufbewahren (sicher).

      1. Zum Generieren eines neuen Schlüssels angeben -e "beegfs_ha_conn_auth_force_new=True Wenn Sie das Ansible-Playbook ausführen. Beachten Sie, dass dies bei einem ignoriert wird beegfs_ha_conn_auth_secret Definiert ist.

      2. Weitere Optionen finden Sie in der vollständigen Liste der Standardwerte, die im enthalten sind "BeeGFS HA-Rolle".

    2. Ein benutzerdefiniertes Geheimnis kann verwendet werden, indem Sie Folgendes in definieren ha_cluster.yml:

      beegfs_ha_conn_auth_secret: <SECRET>
    3. Die Verbindungsauthentifizierung kann vollständig deaktiviert werden (NICHT empfohlen):

      beegfs_ha_conn_auth_enabled: false

Klicken Sie Auf "Hier" Beispiel für eine komplette Bestandsdatei, die die allgemeine Konfiguration des Dateiknoten darstellt.

Verwendung von HDR (200 GB) InfiniBand mit NetApp EF600 Block-Nodes:

Um HDR (200 GB) InfiniBand mit der EF600 zu verwenden, muss der Subnetzmanager die Virtualisierung unterstützen. Wenn Datei- und Block-Knoten über einen Switch verbunden sind, muss dies im Subnetz Manager für die Gesamtstruktur aktiviert sein.

Wenn Block- und Datei-Nodes direkt mit InfiniBand verbunden sind, eine Instanz von opensm Für jede direkt mit einem Block-Node verbundene Schnittstelle muss für jeden Datei-Node konfiguriert werden. Dies erfolgt durch Angabe configure: true Wenn "Konfigurieren von File-Node-Storage-Schnittstellen".

Derzeit die Inbox-Version von opensm Die Lieferung mit unterstützten Linux-Distributionen unterstützt keine Virtualisierung. Stattdessen müssen Sie die Version von installieren und konfigurieren opensm In der Mellanox OpenFabrics Enterprise Distribution (OFED). Obwohl die Implementierung mit Ansible weiterhin unterstützt wird, sind einige weitere Schritte erforderlich:

  1. Laden Sie mit Curl oder Ihrem gewünschten Tool die Pakete für die im aufgeführten OpenSM-Versionen herunter "Technologieanforderungen erfüllt" Abschnitt von der Mellanox-Website bis zum <INVENTORY>/packages/ Verzeichnis. Beispiel:

    curl -o packages/opensm-libs-5.9.0.MLNX20210617.c9f2ade-0.1.54103.x86_64.rpm https://linux.mellanox.com/public/repo/mlnx_ofed/5.4-1.0.3.0/rhel8.4/x86_64/opensm-libs-5.9.0.MLNX20210617.c9f2ade-0.1.54103.x86_64.rpm
    
    curl -o packages/opensm-5.9.0.MLNX20210617.c9f2ade-0.1.54103.x86_64.rpm https://linux.mellanox.com/public/repo/mlnx_ofed/5.4-1.0.3.0/rhel8.4/x86_64/opensm-5.9.0.MLNX20210617.c9f2ade-0.1.54103.x86_64.rpm
  2. Unter group_vars/ha_cluster.yml Definieren Sie die folgende Konfiguration:

    ### OpenSM package and configuration information
    eseries_ib_opensm_allow_upgrades: true
    eseries_ib_opensm_skip_package_validation: true
    eseries_ib_opensm_rhel_packages: []
    eseries_ib_opensm_custom_packages:
      install:
        - files:
            add:
              "packages/opensm-libs-5.9.0.MLNX20210617.c9f2ade-0.1.54103.x86_64.rpm": "/tmp/"
              "packages/opensm-5.9.0.MLNX20210617.c9f2ade-0.1.54103.x86_64.rpm": "/tmp/"
        - packages:
            add:
              - /tmp/opensm-5.9.0.MLNX20210617.c9f2ade-0.1.54103.x86_64.rpm
              - /tmp/opensm-libs-5.9.0.MLNX20210617.c9f2ade-0.1.54103.x86_64.rpm
      uninstall:
        - packages:
            remove:
              - opensm
              - opensm-libs
          files:
            remove:
              - /tmp/opensm-5.9.0.MLNX20210617.c9f2ade-0.1.54103.x86_64.rpm
              - /tmp/opensm-libs-5.9.0.MLNX20210617.c9f2ade-0.1.54103.x86_64.rpm
    
    eseries_ib_opensm_options:
      virt_enabled: "2"