Actualiza a BeeGFS 8
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.
|
|
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
beegfsutilidad 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".
|
|
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.
-
Verifica que todos los servidores y clientes están usando "distribuciones de Linux compatibles y versiones del kernel" para BeeGFS 8.
-
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 -
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.
-
Ejecuta los siguientes comandos en un cliente BeeGFS y guarda el resultado como referencia:
beegfs-ctl --getentryinfo --verbose /path/to/beegfs/mountpoint -
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 -
Si usas la duplicación, verifica que todos los grupos de amigos estén en
GOODstate antes de continuar con la actualización.
-
-
Detén el sistema BeeGFS en el siguiente orden:
-
En cada cliente, desmonta el sistema de archivos BeeGFS y detén el servicio
beegfs-client. Para cada cliente, ejecuta:systemctl stop beegfs-client -
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 -
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.
-
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.
-
Enumera todos los dispositivos NVMe e identifica el objetivo de gestión:
nvme netapp smdevices | grep mgmt_tgtAnota la ruta del dispositivo desde la salida (por ejemplo,
/dev/nvmeXnY).-
Monta el dispositivo de destino de gestión en el punto de montaje de destino de gestión existente (reemplaza
/dev/nvmeXnYpor la ruta de tu dispositivo):mount /dev/nvmeXnY /mnt/mgmt_tgt_mgmt01/
-
-
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 -
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/".
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.
-
Mueve el archivo SQLite generado al montaje del servicio de gestión:
mv /var/lib/beegfs/mgmtd.sqlite /mnt/mgmt_tgt_mgmt01/data/ -
Mueve el
beegfs-mgmtd.tomlgenerado 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.tomldespué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
-
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 -
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".
|
|
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.
-
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.confpara BeeGFS 7 y transfiere todos los ajustes al archivo/mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml. Para una configuración básica, tubeegfs-mgmtd.tomlpuede 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.
-
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-
Recarga systemd:
systemctl daemon-reload
-
-
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.
-
Agrega el puerto TCP 8010 a la zona beegfs:
sudo firewall-cmd --zone=beegfs --permanent --add-port=8010/tcp-
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.
-
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) -
Actualiza la ruta del archivo de configuración de gestión de
.confa.toml:sed -i 's|mgmt_config/beegfs-mgmtd\.conf|mgmt_config/beegfs-mgmtd.toml|' /usr/lib/ocf/resource.d/eseries/beegfs-monitorAlternativamente, 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" ;; -
Actualiza las funciones
get_interfaces()yget_subnet_ips()para admitir la configuración de TOML:-
Abre el script en un editor de texto:
vi /usr/lib/ocf/resource.d/eseries/beegfs-monitor -
Localiza las dos funciones:
get_interfaces()yget_subnet_ips(). -
Elimina ambas funciones completas, empezando en
get_interfaces()hasta el final deget_subnet_ips(). -
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 } -
Guarda y sal del editor de texto.
-
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
-
-
Copia el script
beegfs-monitorOCF 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
-
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 -
Verifica que el servicio
beegfs-mgmtdse inició correctamente:journalctl -xeu beegfs-mgmtdLa 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
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.
-
Ejecuta
pcs statusy verifica que el clúster está saludable y que los servicios se inician en sus nodos preferidos. -
Una vez que se verifica que el clúster está saludable, vuelve a habilitar STONITH:
pcs property set stonith-enabled=true -
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.
-
Si aún no has detenido el servicio cliente BeeGFS, deténlo ahora:
systemctl stop beegfs-client -
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.
-
Actualiza los paquetes del cliente BeeGFS:
Para Ubuntu/Debian:
apt-get update apt-get install --only-upgrade beegfs-client -
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.
TLS no es necesario para que el
beegfs-clientservicio monte el sistema de archivos BeeGFS. TLS solo es necesario para usar las herramientas CLI de BeeGFS y otros servicios administrativos. -
Inicia el servicio cliente BeeGFS:
systemctl start beegfs-clientSi 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.
-
(Opcional) Instala y configura la nueva
beegfsherramienta CLI en nodos cliente u otros sistemas donde quieras ejecutar comandos administrativos de BeeGFS:-
Instala el paquete
beegfs-tools:Para Ubuntu/Debian:
apt-get install beegfs-tools-
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.
-
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-v7en el servicio de gestión:beegfs entry info /mnt/beegfs -
Verifica que todos los nodos y objetivos estén en línea y en buen estado:
beegfs health checkSi 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.tomlpara que se adapten mejor a tu entorno.