Festlegen Der Konfiguration Des Gemeinsamen Dateiknotens
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.
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:
-
Geben Sie an, wie sich der Ansible Control-Node mit den Remote-Hosts authentifizieren soll:
ansible_ssh_user: root ansible_become_password: <PASSWORD>
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 deransible_ssh_user
Ist bereits root, dann können Sie optional auslassenansible_become_password
. -
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
-
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
-
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"
-
-
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
-
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
-
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.
-
"Planen Sie das Dateisystem"Legen Sie auf der Grundlage des Abschnitts die BeeGFS-Management-IP für dieses Dateisystem fest:
beegfs_ha_mgmtd_floating_ip: <IP ADDRESS>
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. -
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
-
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.
-
Aktivieren Sie das globale Fechten, indem Sie Folgendes angeben:
beegfs_ha_cluster_crm_config_options: stonith-enabled: True
-
Hinweis: Bei Bedarf können auch alle unterstützten "Cluster-Eigenschaft" Daten hier angegeben werden. Diese Anpassungen sind in der Regel nicht notwendig, da die BeeGFS HA-Rolle mit einer Reihe gut getesteter ausgeliefert "Standardwerte"wird.
-
-
Wählen Sie anschließend einen Fechten-Agent aus und konfigurieren Sie ihn:
-
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>"
-
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
-
Weitere Informationen zum Konfigurieren anderer Fencing-Agenten finden Sie im "Red hat Dokumentation".
-
-
-
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 basierend auf Tests mit NetApp E-Series Block-Nodes ausgeliefert "Standardwerte" . Diese werden standardmäßig jedoch nicht angewendet, es sei denn, Sie geben Folgendes an:
beegfs_ha_enable_performance_tuning: True
-
Geben Sie bei Bedarf auch hier Änderungen an der Standard-Performance-Optimierung an. Weitere Informationen finden Sie in der vollständigen "Parameter für die Performance-Optimierung" Dokumentation.
-
-
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:-
Für InfiniBand (IPoIB)-Netzwerkschnittstellen:
eseries_ipoib_udev_rules: "<PCIe ADDRESS>": <NAME> # Ex: 0000:01:00.0: i1a
-
Bei Ethernet-Netzwerkschnittstellen:
eseries_ip_udev_rules: "<PCIe ADDRESS>": <NAME> # Ex: 0000:01:00.0: e1a
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.
Wenn Sie ein verifiziertes Datei-Node-Modell verwenden, klicken Sie auf "Hier" Beispiel für Zuordnungen von PCIe-Adressen zu logischen Ports -
-
Geben Sie optional die Konfiguration an, die für alle BeeGFS-Dienste im Cluster gelten soll. Die Standardkonfigurationswerte können gefunden werden "Hier", und die Konfiguration pro Service wird an anderer Stelle angegeben:
-
BeeGFS Management-Service:
beegfs_ha_beegfs_mgmtd_conf_ha_group_options: <OPTION>: <VALUE>
-
BeeGFS Metadata Services:
beegfs_ha_beegfs_meta_conf_ha_group_options: <OPTION>: <VALUE>
-
BeeGFS Storage-Services:
beegfs_ha_beegfs_storage_conf_ha_group_options: <OPTION>: <VALUE>
-
-
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:
-
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).-
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 wirdbeegfs_ha_conn_auth_secret
Definiert ist. -
Weitere Optionen finden Sie in der vollständigen Liste der Standardwerte, die im enthalten "BeeGFS HA-Rolle"sind.
-
-
Ein benutzerdefiniertes Geheimnis kann verwendet werden, indem Sie Folgendes in definieren
ha_cluster.yml
:beegfs_ha_conn_auth_secret: <SECRET>
-
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 über InfiniBand verbunden sind, opensm
muss auf jedem Datei-Node für jede Schnittstelle, die direkt mit einem Block-Node verbunden ist, eine Instanz von konfiguriert werden. Dies geschieht durch Angabe von configure: true
wann "Konfigurieren von File-Node-Storage-Schnittstellen".
Derzeit unterstützt die Inbox-Version von opensm
, die mit unterstützten Linux-Distributionen ausgeliefert wurde, keine Virtualisierung. Stattdessen ist es erforderlich, dass Sie die Version von über die NVIDIA OpenFabrics Enterprise Distribution (OFED) installieren und konfigurieren opensm
. Obwohl die Implementierung mit Ansible weiterhin unterstützt wird, sind einige weitere Schritte erforderlich:
-
Laden Sie die Pakete für die Version von OpenSM, die im Abschnitt von der NVIDIA-Website aufgeführt sind, mithilfe von Curl oder Ihrem gewünschten Tool in das Verzeichnis herunter "Technologieanforderungen erfüllt"
<INVENTORY>/packages/
. Beispiel:curl -o packages/opensm-libs-5.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm https://linux.mellanox.com/public/repo/mlnx_ofed/23.10-3.2.2.0/rhel9.3/x86_64/opensm-libs-5.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm curl -o packages/opensm-5.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm https://linux.mellanox.com/public/repo/mlnx_ofed/23.10-3.2.2.0/rhel9.3/x86_64/opensm-5.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm
-
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.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm": "/tmp/" "packages/opensm-5.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm": "/tmp/" - packages: add: - /tmp/opensm-5.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm - /tmp/opensm-libs-5.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm uninstall: - packages: remove: - opensm - opensm-libs files: remove: - /tmp/opensm-5.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm - /tmp/opensm-libs-5.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm eseries_ib_opensm_options: virt_enabled: "2"