Saltar a contenidoSaltar a navegación de páginas: página anterior [tecla acceso p]/página siguiente [tecla acceso n]
Se aplica a SUSE Enterprise Storage 5

12 Instalación de NFS Ganesha

NFS Ganesha proporciona acceso NFS para Object Gateway o CephFS. En SUSE Enterprise Storage 5, se admiten las versiones 3 y 4 de NFS. NFS Ganesha se ejecuta en el espacio del usuario, en lugar de en el espacio del kernel, e interactúa directamente con Object Gateway o CephFS.

12.1 Preparación

12.1.1 Información general

Para distribuir correctamente NFS Ganesha, debe añadir role-ganesha al archivo /srv/pillar/ceph/proposals/policy.cfg. Para obtener información, consulte: Sección 4.5.1, “El archivo policy.cfg. NFS Ganesha también necesita que role-rgw o role-mds estén presentes en policy.cfg.

Aunque es posible instalar y ejecutar el servidor de NFS Ganesha en un nodo de Ceph ya existente, se recomienda ejecutarlo en un host dedicado con acceso al clúster de Ceph. Los hosts del cliente por lo general no forman parte del clúster, pero deben tener acceso de red al servidor de NFS Ganesha.

Para habilitar el servidor de NFS Ganesha en cualquier momento tras la instalación inicial, añada role-ganesha a policy.cfg y vuelva a ejecutar al menos las fases 2 y 4 de DeepSea. Para obtener información, consulte: Sección 4.3, “Distribución del clúster”.

NFS Ganesha se configura mediante el archivo /etc/ganesha/ganesha.conf, presente en el nodo de NFS Ganesha. Sin embargo, este archivo se sobrescribe cada vez que se ejecuta la fase 4 de DeepSea. Por lo tanto, se recomienda editar la plantilla que utiliza Salt, que es el archivo /srv/salt/ceph/ganesha/files/ganesha.conf.j2 del master de Salt. Para obtener información sobre el archivo de configuración, consulte el Sección 14.2, “Configuración”.

12.1.2 Resumen de requisitos

Los siguientes requisitos deben cumplirse antes de ejecutar las fases 2 y 4 de DeepSea a fin de instalar NFS Ganesha:

  • Debe haber al menos un nodo asignado a role-ganesha.

  • Solo puede definir un role-ganesha por minion.

  • Para funcionar, NFS Ganesha necesita una instancia de Object Gateway o CephFS.

  • Si se espera que NFS Ganesha utilice Object Gateway como interfaz con el clúster, se debe completar el archivo /srv/pillar/ceph/rgw.sls en el master de Salt.

12.2 Instalación de ejemplo

Este procedimiento proporciona una instalación de ejemplo que usa tanto Object Gateway como capas de abstracción del sistema de archivos (FSAL) de CephFS de NFS Ganesha.

  1. Si aún no lo ha hecho, ejecute las fases 0 y 1 de DeepSea antes de continuar con este procedimiento.

    root # salt-run state.orch ceph.stage.0
    root # salt-run state.orch ceph.stage.1
  2. Después de ejecutar la fase 1 de DeepSea, edite el archivo /srv/pillar/ceph/proposals/policy.cfg y añada la línea:

    role-ganesha/cluster/NODENAME

    Sustituya NODENAME con el nombre de un nodo del clúster.

    Asegúrese también de que hay asignados un role-mds y un role-rgw.

  3. Cree el archivo /srv/pillar/ceph/rgw.sls e inserte el contenido siguiente:

    rgw_configurations:
      rgw:
        users:
          - { uid: "demo", name: "Demo", email: "demo@demo.nil" }
          - { uid: "demo1", name: "Demo1", email: "demo1@demo.nil" }

    Estos usuarios se crean más adelante como usuarios de Object Gateway y se generan claves de API. En el nodo de Object Gateway, puede ejecutar más tarde radosgw-admin user list para mostrar todos los usuarios creados y radosgw-admin user info --uid=demo para obtener información acerca de usuarios individuales.

    DeepSea garantiza que Object Gateway y NFS Ganesha reciben las credenciales de todos los usuarios mostrados en la sección rgw del archivo rgw.sls.

    El NFS exportado utiliza los nombres de usuario en el primer nivel del sistema de archivos; en este ejemplo, las vías /demo y /demo1 se exportarán.

  4. Ejecute al menos las fases 2 y 4 de DeepSea. Se recomienda ejecutar la fase 3 en medio.

    root # salt-run state.orch ceph.stage.2
    root # salt-run state.orch ceph.stage.3 # optional but recommended
    root # salt-run state.orch ceph.stage.4
  5. Verifique que NFS Ganesha funciona montando el recurso compartido NFS desde un nodo de cliente:

    root # mount -o sync -t nfs GANESHA_NODE:/ /mnt
    root # ls /mnt
    cephfs  demo  demo1

    /mnt debe contener todas las vías exportadas. Deben existir directorios para CephFS y para ambos usuarios de Object Gateway. Para cada depósito que posea un usuario, se exportará una vía /mnt/NOMBREUSUARIO/NOMBREDEPÓSITO.

12.3 Configuración activa-pasiva de alta disponibilidad

En esta sección se proporciona un ejemplo de cómo establecer una configuración activa-pasiva de dos nodos de los servidores de NFS Ganesha. El programa de instalación requiere SUSE Linux Enterprise High Availability Extension. Los dos nodos se denominan earth y mars.

Para obtener información sobre SUSE Linux Enterprise High Availability Extension, consulte https://www.suse.com/documentation/sle-ha-12/.

12.3.1 Instalación básica

En esta configuración earth tiene la dirección IP 192.168.1.1 y mars tiene la dirección 192.168.1.2.

Asimismo, se usan dos direcciones IP virtuales flotantes que permiten a los clientes conectarse al servicio independientemente del nodo físico en el que se estén ejecutando. 192.168.1.10 se usa para la administración del clúster con Hawk2 y 192.168.2.1 se usa exclusivamente para las exportaciones NFS. De esta forma es más fácil aplicar más tarde restricciones de seguridad.

El procedimiento siguiente describe la instalación de ejemplo. Encontrará más información en https://www.suse.com/documentation/sle-ha-12/install-quick/data/install-quick.html.

  1. Prepare los nodos de NFS Ganesha en el master de Salt:

    1. Ejecute las fases 0 y 1 de DeepSea en el master de Salt.

      root@master # salt-run state.orch ceph.stage.0
      root@master # salt-run state.orch ceph.stage.1
    2. Asigne a los nodos earth y mars la función role-ganesha en el archivo /srv/pillar/ceph/proposals/policy.cfg:

      role-ganesha/cluster/earth*.sls
      role-ganesha/cluster/mars*.sls
    3. Ejecute las fases 3 y 4 de DeepSea en el master de Salt.

      root@master # salt-run state.orch ceph.stage.3
      root@master # salt-run state.orch ceph.stage.4
  2. Registre SUSE Linux Enterprise High Availability Extension en earth y mars.

    root # SUSEConnect -r ACTIVATION_CODE -e E_MAIL
  3. Instalación ha-cluster-bootstrap en ambos nodos:

    root # zypper in ha-cluster-bootstrap
    1. Inicialice el clúster en earth:

      root@earth # ha-cluster-init
    2. Deje que mars se una al clúster:

      root@mars # ha-cluster-join -c earth
  4. Compruebe el estado del clúster. Debería observar que se han añadido dos nodos al clúster:

    root@earth # crm status
  5. En ambos nodos, inhabilite el inicio automático del servicio NFS Ganesha durante el arranque:

    root # systemctl disable nfs-ganesha
  6. Inicie la shell crm en earth:

    root@earth # crm configure

    Los comandos siguientes se ejecutan en la shell crm.

  7. En earth, ejecute la shell crm para ejecutar los comandos siguientes a fin de configurar el recurso para los daemons de NFS Ganesha como clones de tipo de recurso systemd:

    crm(live)configure# primitive nfs-ganesha-server systemd:nfs-ganesha \
    op monitor interval=30s
    crm(live)configure# clone nfs-ganesha-clone nfs-ganesha-server meta interleave=true
    crm(live)configure# commit
    crm(live)configure# status
        2 nodes configured
        2 resources configured
    
        Online: [ earth mars ]
    
        Full list of resources:
             Clone Set: nfs-ganesha-clone [nfs-ganesha-server]
             Started:  [ earth mars ]
  8. Cree una IPAddr2 primitiva con la shell crm:

    crm(live)configure# primitive ganesha-ip IPaddr2 \
    params ip=192.168.2.1 cidr_netmask=24 nic=eth0 \
    op monitor interval=10 timeout=20
    
    crm(live)# status
    Online: [ earth mars  ]
    Full list of resources:
     Clone Set: nfs-ganesha-clone [nfs-ganesha-server]
         Started: [ earth mars ]
     ganesha-ip    (ocf::heartbeat:IPaddr2):    Started earth
  9. Para configurar una relación entre el servidor de NFS Ganesha y la dirección IP virtual flotante, utilice la colocación y el orden.

    crm(live)configure# colocation ganesha-ip-with-nfs-ganesha-server inf: ganesha-ip nfs-ganesha-clone
    crm(live)configure# order ganesha-ip-after-nfs-ganesha-server Mandatory: nfs-ganesha-clone ganesha-ip
  10. Utilice el comando mount desde el cliente para asegurarse de que la configuración del clúster está completa:

    root # mount -t nfs -v -o sync,nfsvers=4 192.168.2.1:/ /mnt

12.3.2 Limpieza de recursos

En caso de que se produzca un fallo en NFS Ganesha en uno de los nodos, por ejemplo en earth, solucione el problema y limpie el recurso. Solo después de que el recurso se haya limpiado, el recurso podrá recuperarse tras el fallo en earth, en caso de que NFS Ganesha falle en mars.

Para limpiar el recurso:

root@earth # crm resource cleanup nfs-ganesha-clone earth
root@earth # crm resource cleanup ganesha-ip earth

12.3.3 Configuración del recurso de Ping

Puede suceder que el servidor no pueda acceder al cliente debido a un problema de red. Un recurso de ping puede detectar y solucionar este problema. La configuración de este recurso es opcional.

  1. Defina el recurso de ping:

    crm(live)configure# primitive ganesha-ping ocf:pacemaker:ping \
            params name=ping dampen=3s multiplier=100 host_list="CLIENT1 CLIENT2" \
            op monitor interval=60 timeout=60 \
            op start interval=0 timeout=60 \
            op stop interval=0 timeout=60

    host_list es una lista de direcciones IP separadas por caracteres de espacio. Se hará ping a las direcciones IP con regularidad para comprobar si se producen interrupciones de la red. Si un cliente debe tener acceso continuo al servidor de NFS, añádalo a host_list.

  2. Cree un clon:

    crm(live)configure# clone ganesha-ping-clone ganesha-ping \
            meta interleave=true
  3. El siguiente comando crea una restricción para el servicio NFS Ganesha. Fuerza al servicio a moverse a otro nodo cuando no sea posible acceder a host_list.

    crm(live)configure# location nfs-ganesha-server-with-ganesha-ping
            nfs-ganesha-clone \
            rule -inf: not_defined ping or ping lte 0

12.3.4 Alta disponibilidad de NFS Ganesha y DeepSea

DeepSea no admite la configuración de alta disponibilidad de NFS Ganesha. Para evitar que DeepSea falle después de configurar la alta disponibilidad de NFS Ganesha, excluya el inicio y la detención del servicio NFS Ganesha de la fase 4 de DeepSea:

  1. Copie /srv/salt/ceph/ganesha/default.sls en /srv/salt/ceph/ganesha/ha.sls.

  2. Elimine la entrada .service de /srv/salt/ceph/ganesha/ha.sls de forma que quede como sigue:

    include:
    - .keyring
    - .install
    - .configure
  3. Añada la línea siguiente a /srv/pillar/ceph/stack/global.yml:

    ganesha_init: ha

12.4 Más información

Encontrará más información en Capítulo 14, NFS Ganesha: exportación de datos de Ceph a través de NFS.

Imprimir esta página