Specificare la configurazione del nodo file comune
Specificare la configurazione del nodo file comune utilizzando le variabili di gruppo (group_vars).
Panoramica
La configurazione che deve essere utilizzata per tutti i nodi di file è definita in group_vars/ha_cluster.yml. In genere include:
-
Dettagli su come connettersi e accedere a ciascun nodo di file.
-
Configurazione di rete comune.
-
Se sono consentiti riavvii automatici.
-
Modalità di configurazione degli stati firewall e selinux.
-
Configurazione del cluster, inclusi avvisi e scherma.
-
Tuning delle performance.
-
Configurazione comune del servizio BeeGFS.
|
|
Le opzioni impostate in questo file possono essere definite anche su singoli nodi di file, ad esempio se sono in uso modelli hardware misti o se si dispone di password diverse per ciascun nodo. La configurazione sui singoli nodi di file avrà la precedenza sulla configurazione in questo file. |
Fasi
Creare il file group_vars/ha_cluster.yml e compilarlo come segue:
-
Indicare come il nodo Ansible Control deve autenticare con gli host remoti:
ansible_ssh_user: root ansible_become_password: <PASSWORD>In particolare per gli ambienti di produzione, non memorizzare le password in testo normale. Utilizzare invece Ansible Vault (vedere "Crittografia del contenuto con Ansible Vault") o il --ask-become-passquando si esegue il playbook. Se ilansible_ssh_userè già root, quindi è possibile omettere ilansible_become_password. -
Se si configurano IP statici sulle interfacce ethernet o InfiniBand (ad esempio gli IP del cluster) e più interfacce si trovano nella stessa subnet IP (ad esempio se ib0 utilizza 192.168.1.10/24 e ib1 utilizza 192.168.1.11/24), Per il corretto funzionamento del supporto multi-homed, è necessario configurare ulteriori tabelle e regole di routing IP. È sufficiente attivare il gancio di configurazione dell'interfaccia di rete fornito come segue:
eseries_ip_default_hook_templates: - 99-multihoming.j2 -
Durante l'implementazione del cluster, a seconda del protocollo di storage potrebbe essere necessario riavviare i nodi per facilitare il rilevamento dei dispositivi a blocchi remoti (volumi e-Series) o applicare altri aspetti della configurazione. Per impostazione predefinita, i nodi richiedono prima del riavvio, ma è possibile consentire il riavvio automatico dei nodi specificando quanto segue:
eseries_common_allow_host_reboot: true-
Per impostazione predefinita, dopo un riavvio, per garantire che i dispositivi a blocchi e gli altri servizi siano pronti, Ansible attenderà fino al sistema
default.targetviene raggiunto prima di continuare con l'implementazione. In alcuni scenari, quando NVMe/IB è in uso, potrebbe non essere abbastanza lungo da inizializzare, rilevare e connettersi a dispositivi remoti. Ciò può causare la continuità prematura dell'implementazione automatica e il malfunzionamento. Per evitare questo problema quando si utilizza NVMe/IB, definire anche quanto segue:eseries_common_reboot_test_command: "! systemctl status eseries_nvme_ib.service || systemctl --state=exited | grep eseries_nvme_ib.service"
-
-
Per comunicare con i servizi cluster BeeGFS e ha sono necessarie diverse porte firewall. A meno che non si desideri configurare il firwewall manualmente (non consigliato), specificare quanto segue per creare le zone firewall richieste e aprire automaticamente le porte:
beegfs_ha_firewall_configure: True -
Al momento SELinux non è supportato e si consiglia di impostare lo stato su Disabled (disattivato) per evitare conflitti (soprattutto quando RDMA è in uso). Impostare quanto segue per assicurarsi che SELinux sia disattivato:
eseries_beegfs_ha_disable_selinux: True eseries_selinux_state: disabled -
Configurare l'autenticazione in modo che i file node siano in grado di comunicare, regolando le impostazioni predefinite in base alle policy aziendali:
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. -
In base alla "Pianificare il file system" sezione specificare l'IP di gestione BeeGFS per questo file system:
beegfs_ha_mgmtd_floating_ip: <IP ADDRESS>Anche se apparentemente ridondante, beegfs_ha_mgmtd_floating_ipÈ importante quando si scala il file system BeeGFS oltre un singolo cluster ha. I cluster ha successivi vengono implementati senza un servizio di gestione BeeGFS aggiuntivo e puntano al servizio di gestione fornito dal primo cluster. -
Attivare gli avvisi e-mail se lo si desidera:
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 -
Si consiglia vivamente di abilitare la scherma, altrimenti i servizi possono essere bloccati per l'avvio sui nodi secondari quando il nodo primario non funziona.
-
Abilitare la scherma a livello globale specificando quanto segue:
beegfs_ha_cluster_crm_config_options: stonith-enabled: True-
Nota se necessario, è anche possibile specificare qui tutti i supporti "proprietà del cluster" . La regolazione di questi non è tipicamente necessaria, poiché il ruolo di BeeGFS ha viene fornito con un certo numero di ben testati "valori predefiniti".
-
-
Selezionare e configurare un agente di scherma:
-
OPZIONE 1: Per abilitare la recinzione utilizzando le PDU (Power Distribution Unit) APC:
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>" -
OPZIONE 2: Per abilitare la scherma utilizzando le API Redfish fornite da Lenovo XCC (e da altri BMC):
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 -
Per ulteriori informazioni sulla configurazione di altri agenti di scherma, fare riferimento alla "Documentazione di Red Hat".
-
-
-
Il ruolo BeeGFS ha può applicare diversi parametri di tuning per ottimizzare ulteriormente le performance. Questi includono l'ottimizzazione dell'utilizzo della memoria del kernel e l'i/o dei dispositivi a blocchi, tra gli altri parametri. Il ruolo viene fornito con una serie ragionevole di "valori predefiniti" in base al test con i nodi di blocco NetApp E-Series, ma per impostazione predefinita questi non vengono applicati a meno che non si specifichi:
beegfs_ha_enable_performance_tuning: True-
Se necessario, specificare qui eventuali modifiche all'ottimizzazione predefinita delle prestazioni. Per ulteriori informazioni, consultare la documentazione completa "parametri di ottimizzazione delle performance" .
-
-
Per garantire che gli indirizzi IP mobili (talvolta noti come interfacce logiche) utilizzati per i servizi BeeGFS possano eseguire il failover tra i nodi di file, tutte le interfacce di rete devono essere denominate in modo coerente. Per impostazione predefinita, i nomi delle interfacce di rete vengono generati dal kernel, che non è garantito per generare nomi coerenti, anche su modelli di server identici con adattatori di rete installati negli stessi slot PCIe. Ciò è utile anche quando si creano inventari prima dell'implementazione dell'apparecchiatura e si conoscono i nomi delle interfacce generate. Per garantire nomi di dispositivi coerenti, in base a un diagramma a blocchi del server o.
lshw -class network -businfoOutput, specificare il mapping indirizzo PCIe desiderato per l'interfaccia logica come segue:-
Per le interfacce di rete InfiniBand (IPoIB):
eseries_ipoib_udev_rules: "<PCIe ADDRESS>": <NAME> # Ex: 0000:01:00.0: i1a -
Per le interfacce di rete Ethernet:
eseries_ip_udev_rules: "<PCIe ADDRESS>": <NAME> # Ex: 0000:01:00.0: e1aPer evitare conflitti quando le interfacce vengono rinominate (impedendone la ridenominazione), non utilizzare nomi predefiniti potenziali come eth0, ens9f0, ib0 o ibs4f0. Una convenzione di denominazione comune prevede l'utilizzo di 'e' o 'i' per Ethernet o InfiniBand, seguito dal numero dello slot PCIe e da una lettera che indica la porta. Ad esempio, la seconda porta di un adattatore InfiniBand installato nello slot 3 è: I3b.
Se si utilizza un modello di nodo di file verificato, fare clic su "qui" Esempio di mapping indirizzo-porta logica PCIe. -
-
Specificare facoltativamente la configurazione da applicare a tutti i servizi BeeGFS nel cluster. È possibile trovare i valori di configurazione predefiniti "qui"e specificare altrove la configurazione per servizio:
-
Servizio di gestione BeeGFS:
beegfs_ha_beegfs_mgmtd_conf_ha_group_options: <OPTION>: <VALUE> -
Servizi di metadati BeeGFS:
beegfs_ha_beegfs_meta_conf_ha_group_options: <OPTION>: <VALUE> -
Servizi di storage BeeGFS:
beegfs_ha_beegfs_storage_conf_ha_group_options: <OPTION>: <VALUE>
-
-
A partire da BeeGFS 7.2.7 e 7.3.1 "autenticazione della connessione" deve essere configurato o disabilitato esplicitamente. Esistono alcuni modi per configurarlo utilizzando la distribuzione basata su Ansible:
-
Per impostazione predefinita, l'implementazione configura automaticamente l'autenticazione della connessione e genera un
connauthfileChe verranno distribuiti a tutti i nodi di file e utilizzati con i servizi BeeGFS. Questo file verrà anche posizionato/mantenuto nel nodo di controllo Ansible all'indirizzo<INVENTORY>/files/beegfs/<sysMgmtdHost>_connAuthFiledove deve essere mantenuto (in modo sicuro) per il riutilizzo con i client che devono accedere a questo file system.-
Per generare una nuova chiave, specificare
-e "beegfs_ha_conn_auth_force_new=TrueQuando si esegue il playbook Ansible. Nota: Questa operazione viene ignorata se si selezionabeegfs_ha_conn_auth_secretè definito. -
Per le opzioni avanzate, fare riferimento all'elenco completo dei valori predefiniti inclusi nella "Ruolo BeeGFS ha".
-
-
È possibile utilizzare un segreto personalizzato definendo quanto segue in
ha_cluster.yml:beegfs_ha_conn_auth_secret: <SECRET> -
L'autenticazione della connessione può essere disattivata completamente (NON consigliata):
beegfs_ha_conn_auth_enabled: false
-
Fare clic su "qui" per un esempio di un file di inventario completo che rappresenta la configurazione di un nodo di file comune.
Utilizzo di HDR (200 GB) InfiniBand con i nodi a blocchi NetApp EF600:
Per utilizzare HDR (200 GB) InfiniBand con EF600, il gestore di subnet deve supportare la virtualizzazione. Se i nodi di file e blocchi sono collegati mediante uno switch, questo deve essere attivato nel gestore di subnet per il fabric complessivo.
Se i nodi di file e blocchi sono connessi direttamente con InfiniBand, un'istanza di opensm deve essere configurata su ogni nodo di file per ogni interfaccia connessa direttamente a un nodo di blocco. Per eseguire questa operazione, specificare configure: true quando "configurazione delle interfacce di storage dei nodi di file".
Attualmente la versione in arrivo di opensm fornita con le distribuzioni Linux supportate non supporta la virtualizzazione. È invece necessario installare e configurare la versione di opensm da NVIDIA OpenFabrics Enterprise Distribution (OFED). Sebbene la distribuzione con Ansible sia ancora supportata, sono necessari alcuni passaggi aggiuntivi:
-
Utilizzando curl o lo strumento desiderato, scaricare i pacchetti per la versione di opensm elencati nella "requisiti tecnologici" sezione dal sito web di NVIDIA alla
<INVENTORY>/packages/directory. Ad esempio: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.4/x86_64/opensm-5.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm 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.4/x86_64/opensm-libs-5.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm -
Sotto
group_vars/ha_cluster.ymldefinire la seguente configurazione:### 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-5.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm": "/tmp/" "packages/opensm-libs-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"