Skip to main content
BeeGFS on NetApp with E-Series Storage
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Actualiza a BeeGFS 8

Colaboradores mcwhiteside

Sigue estos pasos para actualizar tu clúster BeeGFS HA de BeeGFS 7.4 a BeeGFS 8.

Descripción general

BeeGFS 8 introduce varios cambios significativos que requieren una configuración adicional antes de actualizar desde BeeGFS 7. Este documento te guía para preparar tu clúster para los nuevos requisitos de BeeGFS 8 y luego actualizar a BeeGFS 8.

Importante Antes de actualizar a BeeGFS 8, asegúrate de que tu sistema está ejecutando al menos BeeGFS 7.4. Cualquier clúster que esté ejecutando una versión anterior a BeeGFS 7.4 debe primero "actualiza a BeeGFS 7.4" antes de actualizar a BeeGFS 8.

Principales cambios en BeeGFS 8

BeeGFS 8 introduce los siguientes cambios importantes:

  • Cumplimiento de licencias: BeeGFS 8 requiere una licencia para usar funciones premium como grupos de almacenamiento, objetivos de almacenamiento remotos, BeeOND y más. Adquiere una licencia válida para tu clúster BeeGFS antes de actualizar. Si lo necesitas, puedes obtener una licencia de evaluación temporal de BeeGFS 8 desde el "Portal de Licencias de BeeGFS".

  • Migración de la base de datos del servicio de gestión: Para habilitar la configuración con el nuevo formato basado en TOML en BeeGFS 8, tienes que migrar manualmente tu base de datos del servicio de gestión de BeeGFS 7 al formato actualizado de BeeGFS 8.

  • Encriptación TLS: BeeGFS 8 introduce TLS para una comunicación segura entre servicios. Tendrás que generar y distribuir certificados TLS para el servicio de gestión de BeeGFS y la beegfs utilidad de línea de comandos como parte de la actualización.

Para más detalles y cambios adicionales en BeeGFS 8, consulta la "Guía de actualización de BeeGFS 8.0.0".

Importante

La actualización a BeeGFS 8 requiere tiempo de inactividad del clúster y los clientes de BeeGFS 7 no pueden conectarse a los clústeres de BeeGFS 8. Coordina cuidadosamente el momento de la actualización para minimizar el impacto operativo.

Prepara tu clúster BeeGFS para la actualización

Antes de iniciar la actualización, prepara cuidadosamente tu entorno para asegurar una transición fluida y minimizar el tiempo de inactividad.

  1. Verifica que todos los servidores y clientes están usando "distribuciones de Linux compatibles y versiones del kernel" para BeeGFS 8.

  2. Asegúrate de que tu clúster esté en buen estado y que todos los servicios BeeGFS se estén ejecutando en sus nodos preferidos. Desde un nodo de archivos que ejecuta servicios BeeGFS, verifica que todos los recursos Pacemaker se estén ejecutando en sus nodos preferidos:

    pcs status
  3. Registra y haz una copia de seguridad de la configuración del clúster. Los datos del servicio de gestión de BeeGFS se respaldarán más adelante como parte del proceso de actualización de la base de datos de gestión.

    1. Ejecuta los siguientes comandos en un cliente BeeGFS y guarda el resultado como referencia:

      beegfs-ctl --getentryinfo --verbose /path/to/beegfs/mountpoint
    2. Si usas la duplicación, recopila información de estado detallada para que puedas identificar el destino primario original si ambos miembros de la duplicación entran en estado "necesita resincronización":

      beegfs-ctl --listtargets --longnodes --state --spaceinfo --mirrorgroups --nodetype=meta
      beegfs-ctl --listtargets --longnodes --state --spaceinfo --mirrorgroups --nodetype=storage
    3. Si usas la duplicación, verifica que todos los grupos de amigos estén en GOOD state antes de continuar con la actualización.

  4. Detén el sistema BeeGFS en el siguiente orden:

    1. En cada cliente, desmonta el sistema de archivos BeeGFS y detén el servicio beegfs-client. Para cada cliente, ejecuta:

      systemctl stop beegfs-client
    2. Para cada clúster Pacemaker, desactiva STONITH para que puedas validar la integridad del clúster después de la actualización sin provocar reinicios innecesarios de los nodos:

      pcs property set stonith-enabled=false
    3. En todos los clusters Pacemaker, detén el cluster:

      pcs cluster stop --all

Actualiza el paquete de gestión BeeGFS

En todos los nodos de archivos del clúster, añade el repositorio de paquetes BeeGFS 8 para tu distribución de Linux. Las instrucciones para añadir el repositorio oficial de BeeGFS para tu distribución de Linux se pueden encontrar en el "Página de descarga de BeeGFS". Si no, configura tu repositorio local de BeeGFS como corresponda.

  1. En los dos primeros nodos de archivos de tu clúster, actualiza solo el paquete del demonio de gestión BeeGFS a BeeGFS 8:

    Para RHEL, después de configurar tu repositorio BeeGFS, ejecuta los siguientes comandos:

    dnf clean all
    dnf update beegfs-mgmtd

Actualiza la base de datos de gestión

En uno de los nodos de archivos que ejecutan el servicio de gestión BeeGFS, sigue estos pasos para migrar la base de datos de gestión de BeeGFS 7 a BeeGFS 8.

  1. Enumera todos los dispositivos NVMe e identifica el objetivo de gestión:

    nvme netapp smdevices | grep mgmt_tgt

    Anota la ruta del dispositivo desde la salida (por ejemplo, /dev/nvmeXnY).

    1. Monta el dispositivo de destino de gestión en el punto de montaje de destino de gestión existente (reemplaza /dev/nvmeXnY por la ruta de tu dispositivo):

      mount /dev/nvmeXnY /mnt/mgmt_tgt_mgmt01/
  2. Realiza una copia de seguridad del directorio de datos de gestión:

    tar --force-local -cpzf /mnt/mgmt_tgt_mgmt01/data_beegfs_7_backup_$(date +'%F_%T').tar.gz /mnt/mgmt_tgt_mgmt01/data
  3. Importa tus datos de gestión de BeeGFS 7 al nuevo formato de base de datos ejecutando:

    /opt/beegfs/sbin/beegfs-mgmtd --import-from-v7=/mnt/mgmt_tgt_mgmt01/data/

    Salida esperada:

    Created new database version 3 at "/var/lib/beegfs/mgmtd.sqlite". Successfully imported v7 management data from "/mnt/mgmt_tgt_mgmt01/data/".
    Importante

    Es posible que la importación automática no tenga éxito en todos los casos debido a los requisitos de validación más estrictos en BeeGFS 8. Por ejemplo, si los targets se asignan a grupos de almacenamiento que no existen, la importación falla. Si la migración falla, no sigas con la actualización. Contacta al soporte de NetApp para que te ayuden a resolver los problemas de migración de bases de datos. Puedes bajar la versión de los paquetes de gestión de BeeGFS 8 y seguir usando BeeGFS 7 mientras se soluciona el problema.

  4. Mueve el archivo SQLite generado al montaje del servicio de gestión:

    mv /var/lib/beegfs/mgmtd.sqlite /mnt/mgmt_tgt_mgmt01/data/
  5. Mueve el beegfs-mgmtd.toml generado al montaje del servicio de gestión:

    mv /etc/beegfs/beegfs-mgmtd.toml /mnt/mgmt_tgt_mgmt01/mgmt_config/

    Vas a preparar el archivo de configuración beegfs-mgmtd.toml después de completar los pasos de configuración de licencias y TLS en las siguientes secciones.

Actualizar los paquetes BeeGFS restantes

Después de completar la migración de la base de datos de gestión, actualiza los paquetes BeeGFS restantes en todos los nodos de archivos del clúster. Para RHEL, después de configurar tu repositorio BeeGFS, ejecuta los siguientes comandos:

dnf clean all
dnf update beegfs-storage beegfs-meta libbeegfs-ib

Configura licencias

  1. Instala los paquetes de licencia de BeeGFS en todos los nodos que ejecutan el servicio de gestión de BeeGFS. Esto suele ser los dos primeros nodos de archivos de tu clúster:

    dnf install libbeegfs-license
  2. Descarga tu archivo de licencia de BeeGFS 8 en los nodos de gestión y colócalo en:

    /etc/beegfs/license.pem

Configura el cifrado TLS

BeeGFS 8 requiere cifrado TLS para la comunicación segura entre los servicios de gestión y la herramienta CLI de BeeGFS (beegfs). Elige uno de tres métodos de configuración: usar certificados firmados por una autoridad de certificación de confianza, crear tu propia CA local para firmar certificados para tu clúster BeeGFS o desactivar TLS por completo para solucionar problemas (no recomendado para producción).

Configura el cifrado TLS para los servicios de gestión en tus nodos de archivos usando la guía "Configura el cifrado TLS para BeeGFS 8".

Nota

La configuración TLS de los clientes se completará más adelante después de actualizar los clientes BeeGFS. En esta etapa, solo configura TLS para los servicios de gestión y beegfs-tool en los nodos de archivos.

Actualizar la configuración del servicio de gestión

Prepara el archivo de configuración del servicio de gestión de BeeGFS 8 transfiriendo manualmente los ajustes de tu archivo de configuración de BeeGFS 7 al archivo /mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml.

  1. En el nodo de gestión con el objetivo de gestión montado, referencia el archivo de servicio de gestión /mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.conf para BeeGFS 7 y transfiere todos los ajustes al archivo /mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml. Para una configuración básica, tu beegfs-mgmtd.toml puede verse así:

    beemsg-port = 8008
    grpc-port = 8010
    log-level = "info"
    node-offline-timeout = "900s"
    quota-enable = false
    auth-disable = false
    auth-file = "/etc/beegfs/<mgmt_service_ip>_connAuthFile"
    db-file = "/mnt/mgmt_tgt_mgmt01/data/mgmtd.sqlite"
    license-disable = false
    license-cert-file = "/etc/beegfs/license.pem"
    tls-disable = false
    tls-cert-file = "/etc/beegfs/mgmtd_tls_cert.pem"
    tls-key-file = "/etc/beegfs/mgmtd_tls_key.pem"
    interfaces = ['i1b:mgmt_1', 'i2b:mgmt_2']

    Ajusta todas las rutas según sea necesario para que coincidan con tu entorno y configuración TLS.

  2. En cada nodo de archivo que ejecuta servicios de gestión, modifica tu archivo de servicio systemd para que apunte a la nueva ubicación del archivo de configuración.

    sudo sed -i 's|ExecStart=.*|ExecStart=nice -n -3 /opt/beegfs/sbin/beegfs-mgmtd --config-file /mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml|' /etc/systemd/system/beegfs-mgmtd.service
    1. Recarga systemd:

      systemctl daemon-reload
  3. Para cada nodo de archivos que ejecuta servicios de gestión, abre el puerto 8010 para la comunicación gRPC del servicio de gestión.

  4. Agrega el puerto TCP 8010 a la zona beegfs:

    sudo firewall-cmd --zone=beegfs --permanent --add-port=8010/tcp
    1. Recarga el cortafuegos para aplicar el cambio:

      sudo firewall-cmd --reload

Actualiza el script de monitor de BeeGFS

El script de Pacemaker beegfs-monitor Open Cluster Framework (OCF) requiere actualizaciones para ser compatible con el nuevo formato de configuración TOML y la gestión de servicios systemd. Actualiza el script en un nodo del clúster y luego copia el script actualizado a todos los demás nodos.

  1. Crea una copia de seguridad del script actual:

    cp /usr/lib/ocf/resource.d/eseries/beegfs-monitor /usr/lib/ocf/resource.d/eseries/beegfs-monitor.bak.$(date +%F)
  2. Actualiza la ruta del archivo de configuración de gestión de .conf a .toml:

    sed -i 's|mgmt_config/beegfs-mgmtd\.conf|mgmt_config/beegfs-mgmtd.toml|' /usr/lib/ocf/resource.d/eseries/beegfs-monitor

    Alternativamente, localiza manualmente el siguiente bloque en el script:

    case $type in
      management)
        conf_path="${configuration_mount}/mgmt_config/beegfs-mgmtd.conf"
        ;;

    Y reemplázalo por:

    case $type in
      management)
        conf_path="${configuration_mount}/mgmt_config/beegfs-mgmtd.toml"
        ;;
  3. Actualiza las funciones get_interfaces() y get_subnet_ips() para admitir la configuración de TOML:

    1. Abre el script en un editor de texto:

      vi /usr/lib/ocf/resource.d/eseries/beegfs-monitor
    2. Localiza las dos funciones: get_interfaces() y get_subnet_ips().

    3. Elimina ambas funciones completas, empezando en get_interfaces() hasta el final de get_subnet_ips().

    4. Copia y pega las siguientes funciones actualizadas en su lugar:

      # Return network communication interface name(s) from the BeeGFS resource's connInterfaceFile
      get_interfaces() {
        # Determine BeeGFS service network IP interfaces.
        if [ "$type" = "management" ]; then
          interfaces_line=$(grep "^interfaces =" "$conf_path")
          interfaces_list=$(echo "$interfaces_line" | sed "s/.*= \[\(.*\)\]/\1/")
          interfaces=$(echo "$interfaces_list" | tr -d "'" | tr -d " " | tr ',' '\n')
      
          for entry in $interfaces; do
            echo "$entry" | cut -d ':' -f 1
          done
        else
          connInterfacesFile_path=$(grep "^connInterfacesFile" "$conf_path" | tr -d "[:space:]" | cut -f 2 -d "=")
      
          if [ -f "$connInterfacesFile_path" ]; then
            while read -r entry; do
              echo "$entry" | cut -f 1 -d ':'
            done < "$connInterfacesFile_path"
          fi
        fi
      }
      
      # Return list containing all the BeeGFS resource's usable IP addresses. *Note that these are filtered by the connNetFilterFile entries.
      get_subnet_ips() {
        # Determine all possible BeeGFS service network IP addresses.
        if [ "$type" != "management" ]; then
          connNetFilterFile_path=$(grep "^connNetFilterFile" "$conf_path" | tr -d "[:space:]" | cut -f 2 -d "=")
      
          filter_ips=""
          if [ -n "$connNetFilterFile_path" ] && [ -e $connNetFilterFile_path ]; then
            while read -r filter; do
              filter_ips="$filter_ips $(get_ipv4_subnet_addresses $filter)"
            done < $connNetFilterFile_path
          fi
      
          echo "$filter_ips"
        fi
      }
    5. Guarda y sal del editor de texto.

    6. Ejecuta el siguiente comando para comprobar si el script tiene errores de sintaxis antes de continuar. Si no aparece ninguna salida, el script es sintácticamente correcto.

      bash -n /usr/lib/ocf/resource.d/eseries/beegfs-monitor
  4. Copia el script beegfs-monitor OCF actualizado a todos los demás nodos del clúster:

    scp /usr/lib/ocf/resource.d/eseries/beegfs-monitor user@node:/usr/lib/ocf/resource.d/eseries/beegfs-monitor

Vuelve a poner en línea el clúster

  1. Después de completar todos los pasos de actualización anteriores, pon el clúster en línea iniciando los servicios BeeGFS en todos los nodos.

    pcs cluster start --all
  2. Verifica que el servicio beegfs-mgmtd se inició correctamente:

    journalctl -xeu beegfs-mgmtd

    La salida esperada incluye líneas como:

    Started Cluster Controlled beegfs-mgmtd.
    Loaded config file from "/mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml"
    Successfully initialized certificate verification library.
    Successfully loaded license certificate: TMP-113489268
    Opened database at "/mnt/mgmt_tgt_mgmt01/data/mgmtd.sqlite"
    Listening for BeeGFS connections on [::]:8008
    Serving gRPC requests on [::]:8010
    Nota

    Si aparecen errores en los registros del diario, revisa las rutas del archivo de configuración de gestión y verifica que transferiste todos los valores correctamente desde el archivo de configuración de BeeGFS 7.

  3. Ejecuta pcs status y verifica que el clúster está saludable y que los servicios se inician en sus nodos preferidos.

  4. Una vez que se verifica que el clúster está saludable, vuelve a habilitar STONITH:

    pcs property set stonith-enabled=true
  5. Continúa con la siguiente sección para actualizar los clientes BeeGFS y verificar la salud del clúster.

Actualiza los clientes BeeGFS

Después de actualizar tu clúster a BeeGFS 8, también debes actualizar todos los clientes BeeGFS.

  1. Si aún no has detenido el servicio cliente BeeGFS, deténlo ahora:

    systemctl stop beegfs-client
  2. Agrega el repositorio de paquetes BeeGFS 8 para tu distribución de Linux. Las instrucciones para añadir los repositorios oficiales de BeeGFS se pueden encontrar en "Página de descarga de BeeGFS". De lo contrario, configura tu repositorio espejo local de BeeGFS según corresponda.

  3. Actualiza los paquetes del cliente BeeGFS:

    Para Ubuntu/Debian:

    apt-get update
    apt-get install --only-upgrade beegfs-client
  4. Configura TLS para el cliente. TLS es necesario para usar la CLI de BeeGFS desde los nodos cliente. Consulta la sección "Configura TLS para clientes BeeGFS 8" en la guía de puesta en marcha de TLS.

    Nota

    TLS no es necesario para que el beegfs-client servicio monte el sistema de archivos BeeGFS. TLS solo es necesario para usar las herramientas CLI de BeeGFS y otros servicios administrativos.

  5. Inicia el servicio cliente BeeGFS:

    systemctl start beegfs-client

    Si el montaje de BeeGFS falla, revisa el diario del sistema para ver si hay errores. Si ves mensajes como "Unable to proceed without a working root metadata node" o "Remote I/O error", es posible que la importación de BeeGFS 7 no se haya completado correctamente. Contacta al soporte de NetApp para que te ayuden.

  6. (Opcional) Instala y configura la nueva beegfs herramienta CLI en nodos cliente u otros sistemas donde quieras ejecutar comandos administrativos de BeeGFS:

    1. Instala el paquete beegfs-tools:

      Para Ubuntu/Debian:

    apt-get install beegfs-tools
    1. Configura TLS para la herramienta beegfs. TLS es necesario para usar la CLI de BeeGFS desde un nodo cliente. Consulta la sección "Configura TLS para clientes BeeGFS 8" en la guía de puesta en marcha de TLS.

Verifica la actualización

Después de terminar la actualización a BeeGFS 8, ejecuta los siguientes comandos para verificar que la actualización fue exitosa.

  1. Verifica que el nodo de información raíz pertenezca al mismo nodo de metadatos que antes. Esto debería ocurrir automáticamente si usaste la funcionalidad import-from-v7 en el servicio de gestión:

    beegfs entry info /mnt/beegfs
  2. Verifica que todos los nodos y objetivos estén en línea y en buen estado:

    beegfs health check
    Nota

    Si la comprobación de "Capacidad disponible" advierte que los targets tienen poco espacio libre, puedes ajustar los umbrales del "capacity pool" definidos en el archivo beegfs-mgmtd.toml para que se adapten mejor a tu entorno.