Skip to main content
BeeGFS on NetApp with E-Series Storage
La version française est une traduction automatique. La version anglaise prévaut sur la française en cas de divergence.

Créez l'inventaire Ansible

Contributeurs

Pour définir la configuration des nœuds de fichiers et de blocs, vous créez un inventaire Ansible qui représente le système de fichiers BeeGFS que vous souhaitez déployer. L'inventaire inclut les hôtes, les groupes et les variables décrivant le système de fichiers BeeGFS souhaité.

Étape 1 : définir la configuration de tous les éléments de base

Définissez la configuration qui s'applique à tous les blocs de construction, quel que soit le profil de configuration que vous pouvez appliquer individuellement.

Avant de commencer
  • Utilisez un système de contrôle source tel que BitBucket ou Git pour stocker le contenu du répertoire contenant les fichiers d'inventaire et de PlayBook Ansible.

  • Créer un .gitignore Fichier qui spécifie les fichiers que Git doit ignorer. Cela évite de stocker des fichiers volumineux dans Git.

Étapes
  1. Sur votre nœud de contrôle Ansible, identifiez un répertoire à utiliser pour stocker les fichiers d'inventaire et de PlayBook Ansible.

    Sauf indication contraire, tous les fichiers et répertoires créés dans cette étape et les étapes suivantes sont créés par rapport à ce répertoire.

  2. Créez les sous-répertoires suivants :

    host_vars

    group_vars

    packages

Étape 2 : définir la configuration des nœuds de fichiers et de blocs individuels

Définissez la configuration qui s'applique aux nœuds de fichiers individuels et aux nœuds d'élément de base individuels.

  1. Sous host_vars/, Créez un fichier pour chaque noeud de fichier BeeGFS nommé <HOSTNAME>.yml Avec le contenu suivant, en portant une attention particulière aux notes concernant le contenu à remplir pour les adresses IP de cluster BeeGFS et les noms d'hôte se terminant par des nombres impairs et impairs.

    Initialement, les noms d'interface de nœud de fichier correspondent à ce qui est répertorié ici (comme ib0 ou ibs1f0). Ces noms personnalisés sont configurés dans Étape 4 : définissez la configuration qui doit s'appliquer à tous les nœuds de fichiers.

    ansible_host: “<MANAGEMENT_IP>”
    eseries_ipoib_interfaces:  # Used to configure BeeGFS cluster IP addresses.
      - name: i1b
        address: 100.127.100. <NUMBER_FROM_HOSTNAME>/16
      - name: i4b
        address: 100.128.100. <NUMBER_FROM_HOSTNAME>/16
    beegfs_ha_cluster_node_ips:
      - <MANAGEMENT_IP>
      - <i1b_BEEGFS_CLUSTER_IP>
      - <i4b_BEEGFS_CLUSTER_IP>
    # NVMe over InfiniBand storage communication protocol information
    # For odd numbered file nodes (i.e., h01, h03, ..):
    eseries_nvme_ib_interfaces:
      - name: i1a
        address: 192.168.1.10/24
        configure: true
      - name: i2a
        address: 192.168.3.10/24
        configure: true
      - name: i3a
        address: 192.168.5.10/24
        configure: true
      - name: i4a
        address: 192.168.7.10/24
        configure: true
    # For even numbered file nodes (i.e., h02, h04, ..):
    # NVMe over InfiniBand storage communication protocol information
    eseries_nvme_ib_interfaces:
      - name: i1a
        address: 192.168.2.10/24
        configure: true
      - name: i2a
        address: 192.168.4.10/24
        configure: true
      - name: i3a
        address: 192.168.6.10/24
        configure: true
      - name: i4a
        address: 192.168.8.10/24
        configure: true
    Remarque Si vous avez déjà déployé le cluster BeeGFS, vous devez arrêter le cluster avant d'ajouter ou de modifier des adresses IP configurées de manière statique, y compris les adresses IP et IP du cluster utilisées pour NVMe/IB. Cette modification est nécessaire afin que ces modifications prennent effet correctement et ne perturbent pas les opérations du cluster.
  2. Sous host_vars/, Créez un fichier pour chaque noeud de bloc BeeGFS nommé <HOSTNAME>.yml et remplissez-le avec le contenu suivant.

    Faites particulièrement attention aux remarques concernant le contenu à remplir pour les noms de matrices de stockage se terminant par des nombres pairs ou impairs.

    Pour chaque noeud de bloc, créez un fichier et spécifiez <MANAGEMENT_IP> Pour un des deux contrôleurs (généralement Un).

    eseries_system_name: <STORAGE_ARRAY_NAME>
    eseries_system_api_url: https://<MANAGEMENT_IP>:8443/devmgr/v2/
    eseries_initiator_protocol: nvme_ib
    # For odd numbered block nodes (i.e., a01, a03, ..):
    eseries_controller_nvme_ib_port:
      controller_a:
        - 192.168.1.101
        - 192.168.2.101
        - 192.168.1.100
        - 192.168.2.100
      controller_b:
        - 192.168.3.101
        - 192.168.4.101
        - 192.168.3.100
        - 192.168.4.100
    # For even numbered block nodes (i.e., a02, a04, ..):
    eseries_controller_nvme_ib_port:
      controller_a:
        - 192.168.5.101
        - 192.168.6.101
        - 192.168.5.100
        - 192.168.6.100
      controller_b:
        - 192.168.7.101
        - 192.168.8.101
        - 192.168.7.100
        - 192.168.8.100

Étape 3 : définissez une configuration à appliquer à tous les nœuds de fichiers et de blocs

Vous pouvez définir une configuration commune à un groupe d'hôtes sous group_vars dans un nom de fichier correspondant au groupe. Cela empêche de répéter une configuration partagée à plusieurs endroits.

Description de la tâche

Les hôtes peuvent se trouver dans plusieurs groupes et au moment de l'exécution, Ansible choisit les variables qui s'appliquent à un hôte donné en fonction de ses règles de priorité de variable. (Pour plus d'informations sur ces règles, consultez la documentation Ansible pour "Utilisation de variables".)

Les affectations hôte-groupe sont définies dans le fichier d'inventaire Ansible réel, créé à la fin de cette procédure.

Étape

Dans Ansible, vous pouvez définir n'importe quelle configuration que vous souhaitez appliquer à tous les hôtes dans un groupe appelé All. Créez le fichier group_vars/all.yml avec le contenu suivant :

ansible_python_interpreter: /usr/bin/python3
beegfs_ha_ntp_server_pools:  # Modify the NTP server addressess if desired.
  - "pool 0.pool.ntp.org iburst maxsources 3"
  - "pool 1.pool.ntp.org iburst maxsources 3"

Étape 4 : définissez la configuration qui doit s'appliquer à tous les nœuds de fichiers

La configuration partagée pour les nœuds de fichiers est définie dans un groupe appelé ha_cluster. Les étapes de cette section créent la configuration qui doit être incluse dans le group_vars/ha_cluster.yml fichier.

Étapes
  1. En haut du fichier, définissez les valeurs par défaut, y compris le mot de passe à utiliser comme sudo utilisateur sur les nœuds de fichiers.

    ### ha_cluster Ansible group inventory file.
    # Place all default/common variables for BeeGFS HA cluster resources below.
    ### Cluster node defaults
    ansible_ssh_user: root
    ansible_become_password: <PASSWORD>
    eseries_ipoib_default_hook_templates:
      - 99-multihoming.j2 # This is required when configuring additional static IPs (for example cluster IPs) when multiple IB ports are in the same IPoIB subnet.
    # If the following options are specified, then Ansible will automatically reboot nodes when necessary for changes to take effect:
    eseries_common_allow_host_reboot: true
    eseries_common_reboot_test_command: "systemctl --state=active,exited | grep eseries_nvme_ib.service"
    Remarque En particulier pour les environnements de production, ne stockez pas de mots de passe en texte brut. Utilisez plutôt Ansible Vault (voir "Cryptage de contenu avec Ansible Vault") ou le --ask-become-pass option lors de l'exécution du manuel de vente. Si le ansible_ssh_user est déjà root, ensuite, vous pouvez omettre le ansible_become_password.
  2. Vous pouvez également configurer un nom pour le cluster haute disponibilité (HA) et spécifier un utilisateur pour les communications intra-cluster.

    Si vous modifiez le schéma d'adressage IP privé, vous devez également mettre à jour le schéma par défaut beegfs_ha_mgmtd_floating_ip. Ceci doit correspondre à ce que vous configurez plus tard pour le groupe de ressources BeeGFS Management.

    Spécifiez un ou plusieurs e-mails qui doivent recevoir des alertes pour les événements du cluster à l'aide de beegfs_ha_alert_email_list.

    ### Cluster information
    beegfs_ha_firewall_configure: True
    eseries_beegfs_ha_disable_selinux: True
    eseries_selinux_state: disabled
    # The following variables should be adjusted depending on the desired configuration:
    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.
    beegfs_ha_mgmtd_floating_ip: 100.127.101.0         # BeeGFS management service IP address.
    # Email Alerts Configuration
    beegfs_ha_enable_alerts: True
    beegfs_ha_alert_email_list: ["email@example.com"]  # E-mail recipient list for notifications when BeeGFS HA resources change or fail.  Often a distribution list for the team responsible for managing the cluster.
    beegfs_ha_alert_conf_ha_group_options:
          mydomain: “example.com”
    # The mydomain parameter specifies the local internet domain name. This is optional when the cluster nodes have fully qualified hostnames (i.e. host.example.com).
    # Adjusting the following parameters is optional:
    beegfs_ha_alert_timestamp_format: "%Y-%m-%d %H:%M:%S.%N" #%H:%M:%S.%N
    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
    Remarque Tout en apparence redondant, beegfs_ha_mgmtd_floating_ip Est important lorsque vous faites évoluer le système de fichiers BeeGFS au-delà d'un seul cluster HA. Les clusters HA suivants sont déployés sans service de gestion BeeGFS et point supplémentaires sur le service de gestion fourni par le premier cluster.
  3. Configurer un agent d'escrime. (Pour plus de détails, voir "Configurer l'escrime dans un cluster Red Hat haute disponibilité".) Le résultat suivant montre des exemples de configuration d'agents d'escrime courants. Choisissez l'une de ces options.

    Pour cette étape, gardez à l'esprit que :

    • Par défaut, l'escrime est activé, mais vous devez configurer un agent d'escrime.

    • Le <HOSTNAME> spécifié dans le pcmk_host_map ou pcmk_host_list Doit correspondre au nom d'hôte dans l'inventaire Ansible.

    • L'utilisation du cluster BeeGFS sans escrime n'est pas prise en charge, particulièrement en production. Cela permet de s'assurer que les services BeeGFS, y compris les dépendances de ressources comme les périphériques de bloc, basculent en raison d'un problème, il n'y a aucun risque d'accès simultané par plusieurs nœuds qui entraînent une corruption du système de fichiers ou tout autre comportement indésirable ou inattendu. Si l’escrime doit être désactivé, reportez-vous aux notes générales du guide de démarrage et de mise en place du rôle BeeGFS HA beegfs_ha_cluster_crm_config_options["stonith-enabled"] à faux dans ha_cluster.yml.

    • Plusieurs dispositifs d'escrime au niveau des nœuds sont disponibles, et le rôle BeeGFS HA peut configurer n'importe quel agent d'escrime disponible dans le référentiel de package Red Hat HA. Si possible, utilisez un agent d'escrime qui fonctionne via l'alimentation sans coupure (UPS) ou l'unité de distribution de l'alimentation en rack (RPDU), Parce que certains agents d'escrime, tels que le contrôleur de gestion de la carte mère (BMC) ou d'autres dispositifs d'éclairage intégrés au serveur, peuvent ne pas répondre à la demande de clôture dans certains scénarios de panne.

      ### Fencing configuration:
      # OPTION 1: To enable fencing using 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: To enable fencing using the Redfish APIs provided by the Lenovo XCC (and other BMCs):
      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
      # For details on configuring other fencing agents see https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_high_availability_clusters/assembly_configuring-fencing-configuring-and-managing-high-availability-clusters.
  4. Activez le réglage des performances recommandé dans le système d'exploitation Linux.

    Si de nombreux utilisateurs trouvent les paramètres par défaut des paramètres de performance qui fonctionnent généralement bien, vous pouvez également modifier les paramètres par défaut d'une charge de travail donnée. Ainsi, ces recommandations sont incluses dans le rôle BeeGFS, mais ne sont pas activées par défaut pour s'assurer que les utilisateurs connaissent le réglage appliqué à leur système de fichiers.

    Pour activer le réglage des performances, spécifiez :

    ### Performance Configuration:
    beegfs_ha_enable_performance_tuning: True
  5. (Facultatif) vous pouvez régler les paramètres d'ajustement des performances dans le système d'exploitation Linux selon vos besoins.

    Pour obtenir une liste complète des paramètres de réglage disponibles que vous pouvez régler, consultez la section Réglages de la performance par défaut du rôle BeeGFS HA dans "E-Series site GitHub BeeGFS". Les valeurs par défaut peuvent être remplacées pour tous les nœuds du cluster dans ce fichier ou dans le host_vars fichier pour un nœud individuel.

  6. Pour permettre une connectivité complète de 200 Go/HDR entre des nœuds de bloc et de fichier, utilisez le package Open Subnet Manager (OpenSM) de Mellanox Open Fabrics Enterprise distribution (MLNX_OFED). (La boîte de réception opensm package ne prend pas en charge la fonctionnalité de virtualisation nécessaire.) Bien que le déploiement à l'aide d'Ansible soit pris en charge, vous devez d'abord télécharger les packages souhaités vers le nœud de contrôle Ansible utilisé pour exécuter le rôle BeeGFS.

    1. À l'aide de curl Ou téléchargez les packages pour la version d'OpenSM répertoriée dans la section exigences technologiques du site web de Mellanox vers le packages/ répertoire. Par exemple :

      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. Remplissez les paramètres suivants dans group_vars/ha_cluster.yml (réglez les colis si nécessaire) :

      ### 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"
  7. Configurer le udev Règle pour assurer un mappage cohérent des identificateurs de port InfiniBand logiques aux périphériques PCIe sous-jacents.

    Le udev La règle doit être unique à la topologie PCIe de chaque plate-forme de serveur utilisée comme nœud de fichier BeeGFS.

    Utilisez les valeurs suivantes pour les nœuds de fichiers vérifiés :

    ### Ensure Consistent Logical IB Port Numbering
    # OPTION 1: Lenovo SR665 PCIe address-to-logical IB port mapping:
    eseries_ipoib_udev_rules:
      "0000:41:00.0": i1a
      "0000:41:00.1": i1b
      "0000:01:00.0": i2a
      "0000:01:00.1": i2b
      "0000:a1:00.0": i3a
      "0000:a1:00.1": i3b
      "0000:81:00.0": i4a
      "0000:81:00.1": i4b
    
    # Note: At this time no other x86 servers have been qualified. Configuration for future qualified file nodes will be added here.
  8. (Facultatif) mettre à jour l'algorithme de sélection de cible de métadonnées.

    beegfs_ha_beegfs_meta_conf_ha_group_options:
      tuneTargetChooser: randomrobin
    Remarque Lors des tests de vérification, randomrobin Est généralement utilisé pour s'assurer que les fichiers de test étaient répartis de façon égale sur toutes les cibles de stockage BeeGFS pendant l'évaluation des performances (pour plus d'informations sur l'analyse comparative, consultez le site BeeGFS pour "Analyse comparative d'un système BeeGFS"). Avec une utilisation réelle, il est possible que les cibles numérotées soient plus rapidement que les cibles numérotées plus élevées. Omission randomrobin et il suffit d'utiliser la valeur par défaut randomized la valeur a été indiquée pour fournir de bonnes performances tout en utilisant toujours toutes les cibles disponibles.

Étape 5 : définir la configuration pour le nœud de bloc commun

La configuration partagée pour les nœuds de bloc est définie dans un groupe appelé eseries_storage_systems. Les étapes de cette section créent la configuration qui doit être incluse dans le group_vars/ eseries_storage_systems.yml fichier.

Étapes
  1. Définissez la connexion Ansible sur local, indiquez le mot de passe système et spécifiez si les certificats SSL doivent être vérifiés. (Normalement, Ansible utilise SSH pour la connexion aux hôtes gérés, mais dans le cas des systèmes de stockage NetApp E-Series utilisés comme nœuds de bloc, les modules utilisent l'API REST pour la communication.) En haut du fichier, ajoutez ce qui suit :

    ### eseries_storage_systems Ansible group inventory file.
    # Place all default/common variables for NetApp E-Series Storage Systems here:
    ansible_connection: local
    eseries_system_password: <PASSWORD>
    eseries_validate_certs: false
    Remarque La liste des mots de passe en texte clair n'est pas recommandée. Utilisez un coffre-fort Ansible ou fournissez le eseries_system_password Lors de l'exécution d'Ansible avec --extra-vars.
  2. Pour assurer des performances optimales, installez les versions répertoriées pour les nœuds de bloc dans "Exigences techniques".

    Téléchargez les fichiers correspondants à partir du "Site de support NetApp". Vous pouvez les mettre à niveau manuellement ou les inclure dans le packages/ Répertoire du nœud de contrôle Ansible, puis remplissez les paramètres suivants dans eseries_storage_systems.yml Pour la mise à niveau avec Ansible :

    # Firmware, NVSRAM, and Drive Firmware (modify the filenames as needed):
    eseries_firmware_firmware: "packages/RCB_11.70.2_6000_61b1131d.dlp"
    eseries_firmware_nvsram: "packages/N6000-872834-D06.dlp"
  3. Téléchargez et installez la dernière version du micrologiciel de lecteur disponible pour les lecteurs installés dans vos nœuds de bloc à partir du "Site de support NetApp". Vous pouvez les mettre à niveau manuellement ou les inclure dans le packages/ Répertoire du nœud de contrôle Ansible, puis remplissez les paramètres suivants dans eseries_storage_systems.yml Pour la mise à niveau avec Ansible :

    eseries_drive_firmware_firmware_list:
      - "packages/<FILENAME>.dlp"
    eseries_drive_firmware_upgrade_drives_online: true
    Remarque Réglage eseries_drive_firmware_upgrade_drives_online à false Accélère la mise à niveau, mais ne doit pas être effectuée avant le déploiement de BeeGFS. En effet, ce paramètre nécessite l'arrêt de toutes les E/S des disques avant la mise à niveau afin d'éviter les erreurs d'application. Bien que la mise à niveau en ligne du micrologiciel des lecteurs avant la configuration des volumes soit toujours rapide, nous vous recommandons de toujours définir cette valeur sur true pour éviter tout problème par la suite.
  4. Pour optimiser les performances, effectuez les modifications suivantes de la configuration globale :

    # Global Configuration Defaults
    eseries_system_cache_block_size: 32768
    eseries_system_cache_flush_threshold: 80
    eseries_system_default_host_type: linux dm-mp
    eseries_system_autoload_balance: disabled
    eseries_system_host_connectivity_reporting: disabled
    eseries_system_controller_shelf_id: 99 # Required.
  5. Pour optimiser le provisionnement et le comportement des volumes, spécifiez les paramètres suivants :

    # Storage Provisioning Defaults
    eseries_volume_size_unit: pct
    eseries_volume_read_cache_enable: true
    eseries_volume_read_ahead_enable: false
    eseries_volume_write_cache_enable: true
    eseries_volume_write_cache_mirror_enable: true
    eseries_volume_cache_without_batteries: false
    eseries_storage_pool_usable_drives: "99:0,99:23,99:1,99:22,99:2,99:21,99:3,99:20,99:4,99:19,99:5,99:18,99:6,99:17,99:7,99:16,99:8,99:15,99:9,99:14,99:10,99:13,99:11,99:12"
    Remarque La valeur spécifiée pour eseries_storage_pool_usable_drives Est spécifique aux nœuds de bloc NetApp EF600 et contrôle l'ordre dans lequel les disques sont affectés aux nouveaux groupes de volumes. Cette commande permet de s'assurer que les E/S de chaque groupe sont réparties de manière homogène entre les canaux des disques back-end.