Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
Aplica-se a SUSE Enterprise Storage 5

12 Instalação do NFS Ganesha

O NFS Ganesha concede acesso de NFS ao Object Gateway ou CephFS. No SUSE Enterprise Storage 5, as versões 3 e 4 do NFS são suportadas. O NFS Ganesha é executado no espaço do usuário, em vez do kernel, e interage diretamente com o Object Gateway ou o CephFS.

12.1 Preparação

12.1.1 Informações Gerais

Para implantar o NFS Ganesha com êxito, você precisa adicionar uma função role-ganesha ao /srv/pillar/ceph/proposals/policy.cfg. Para obter os detalhes, consulte a Seção 4.5.1, “Arquivo policy.cfg. O NFS Ganesha também precisa da role-rgw ou da role-mds no policy.cfg.

Embora seja possível instalar e executar o servidor NFS Ganesha em um nó do Ceph existente, é recomendável executá-lo em um host dedicado com acesso ao cluster do Ceph. Normalmente, os hosts de clientes não fazem parte do cluster, mas eles precisam ter acesso via rede ao servidor NFS Ganesha.

Para habilitar o servidor NFS Ganesha a qualquer momento após a instalação inicial, adicione a role-ganesha ao policy.cfg e reexecute pelo menos as fases 2 e 4 do DeepSea. Para obter os detalhes, consulte a Seção 4.3, “Implantação do cluster”.

O NFS Ganesha é configurado por meio do arquivo /etc/ganesha/ganesha.conf que existe no nó do NFS Ganesha. No entanto, esse arquivo é sobregravado toda vez que a fase 4 do DeepSea é executada. Portanto, recomendamos editar o gabarito usado pelo Salt, que é o arquivo /srv/salt/ceph/ganesha/files/ganesha.conf.j2 no master Salt. Para obter detalhes sobre o arquivo de configuração, consulte o Seção 14.2, “Configuração”.

12.1.2 Resumo dos requisitos

Os seguintes requisitos devem ser atendidos antes da execução das fases 2 e 4 do DeepSea para instalar o NFS Ganesha:

  • No mínimo, um nó precisa receber a função role-ganesha.

  • Você pode definir apenas uma role-ganesha por minion.

  • O NFS Ganesha precisa de um Object Gateway ou CephFS para funcionar.

  • Se o NFS Ganesha tiver que usar o Object Gateway para estabelecer interface com o cluster, o /srv/pillar/ceph/rgw.sls no master Salt deverá ser preenchido.

12.2 Exemplo de instalação

Este procedimento fornece um exemplo de instalação que usa as FSAL (File System Abstraction Layers – Camadas de Abstração do Sistema de Arquivos) do Object Gateway e do CephFS do NFS Ganesha.

  1. Se você não fez isto, execute as fases 0 e 1 do DeepSea antes de continuar esse procedimento.

    root # salt-run state.orch ceph.stage.0
    root # salt-run state.orch ceph.stage.1
  2. Após executar a fase 1 do DeepSea, edite o /srv/pillar/ceph/proposals/policy.cfg e adicione a linha

    role-ganesha/cluster/NODENAME

    Substitua NODENAME pelo nome de um nó no cluster.

    Verifique também se uma role-mds e uma role-rgw foram atribuídas.

  3. Crie o arquivo /srv/pillar/ceph/rgw.sls e insira o seguinte conteúdo:

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

    Posteriormente, esses usuários serão criados como usuários do Object Gateway, e as chaves de API serão geradas. No nó do Object Gateway, você pode depois executar radosgw-admin user list para listar todos os usuários criados, e radosgw-admin user info --uid=demo para obter detalhes sobre usuários únicos.

    O DeepSea garante que tanto o Object Gateway quanto o NFS Ganesha recebam as credenciais de todos os usuários listados na seção rgw do rgw.sls.

    O NFS exportado usa esses nomes de usuário no primeiro nível do sistema de arquivos. Neste exemplo, os caminhos /demo e /demo1 serão exportados.

  4. Execute pelo menos as fases 2 e 4 do DeepSea. É recomendável executar a fase 3 entre elas.

    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. Monte o compartilhamento NFS de um nó de cliente para verificar se o NFS Ganesha está funcionando:

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

    O /mnt deve conter todos os caminhos exportados. Os diretórios para o CephFS e ambos os usuários do Object Gateway devem existir. Para cada compartimento de memória que um usuário possui, um caminho /mnt/USERNAME/BUCKETNAME é exportado.

12.3 Configuração ativa-passiva de alta disponibilidade

Esta seção apresenta um exemplo de como definir uma configuração ativa-passiva de dois nós dos servidores NFS Ganesha. A configuração requer a SUSE Linux Enterprise High Availability Extension. Os dois nós são denominados earth e mars.

Para obter detalhes sobre a SUSE Linux Enterprise High Availability Extension, consulte https://www.suse.com/documentation/sle-ha-12/.

12.3.1 Instalação básica

Nessa configuração, earth tem o endereço IP 192.168.1.1, e mars tem o endereço 192.168.1.2.

Além disso, dois endereços IP virtuais flutuantes são usados, permitindo aos clientes se conectarem ao serviço independentemente do nó físico no qual está sendo executado. 192.168.1.10 é usado para administração do cluster com Hawk2, e 192.168.2.1 é usado exclusivamente para exportações NFS. Isso facilita aplicar as restrições de segurança mais tarde.

O procedimento a seguir descreve a instalação de exemplo. Mais detalhes podem ser encontrados em https://www.suse.com/documentation/sle-ha-12/install-quick/data/install-quick.html.

  1. Prepare os nós do NFS Ganesha no master Salt:

    1. Execute as fases 0 e 1 do DeepSea no master Salt.

      root@master # salt-run state.orch ceph.stage.0
      root@master # salt-run state.orch ceph.stage.1
    2. Atribua aos nós earth e mars a função role-ganesha em /srv/pillar/ceph/proposals/policy.cfg:

      role-ganesha/cluster/earth*.sls
      role-ganesha/cluster/mars*.sls
    3. Execute as fases 3 e 4 do DeepSea no master Salt.

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

    root # SUSEConnect -r ACTIVATION_CODE -e E_MAIL
  3. Instale o ha-cluster-bootstrap em ambos os nós:

    root # zypper in ha-cluster-bootstrap
    1. Inicialize o cluster no earth:

      root@earth # ha-cluster-init
    2. Permita que o mars ingresse no cluster:

      root@mars # ha-cluster-join -c earth
  4. Verifique o status do cluster. Você deve ver dois nós adicionados ao cluster:

    root@earth # crm status
  5. Em ambos os nós, desabilite o início automático do serviço NFS Ganesha no momento da inicialização:

    root # systemctl disable nfs-ganesha
  6. Inicie o shell do crm no earth:

    root@earth # crm configure

    Os próximos comandos são executados no shell do crm.

  7. No earth, execute o shell do crm para executar os comandos a seguir a fim de configurar o recurso nos daemons do NFS Ganesha como clone do 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. Crie um IPAddr2 primitivo com o shell do 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 um relacionamento entre o servidor NFS Ganesha e o IP Virtual flutuante, usamos colocalização e ordenação.

    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. Use o comando mount do cliente para garantir que a configuração do cluster foi concluída:

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

12.3.2 Limpar recursos

Em caso de falha em um dos nós do NFS Ganesha (por exemplo, earth), corrija o problema e limpe o recurso. Apenas depois que o recurso estiver limpo, será possível fazer failback dele para o earth, caso haja falha no mars do NFS Ganesha.

Para limpar o recurso:

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

12.3.3 Configurando o recurso de ping

Pode acontecer de um servidor não conseguir acessar o cliente por causa de um problema de rede. Um recurso de ping pode detectar e minimizar esse problema. A configuração desse recurso é opcional.

  1. Defina o 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 é uma lista de endereços IP separados por caracteres de espaço. Será feito ping regular dos endereços IP para verificar se há interrupções de rede. Se um cliente sempre precisar de acesso ao servidor NFS, adicione-o à host_list.

  2. Crie um clone:

    crm(live)configure# clone ganesha-ping-clone ganesha-ping \
            meta interleave=true
  3. O comando a seguir cria uma restrição para o serviço NFS Ganesha. Ele força o serviço a se mover para outro nó quando a host_list está inacessível.

    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 HA do NFS Ganesha e DeepSea

O DeepSea não oferece suporte à configuração de HA do NFS Ganesha. Para evitar falha no DeepSea após a configuração de HA do NFS Ganesha, exclua a inicialização e interrupção do serviço NFS Ganesha da Fase 4 do DeepSea:

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

  2. Remova a entrada .service do /srv/salt/ceph/ganesha/ha.sls de modo que fique com esta aparência:

    include:
    - .keyring
    - .install
    - .configure
  3. Adicione a seguinte linha a /srv/pillar/ceph/stack/global.yml:

    ganesha_init: ha

12.4 Mais informações

Mais informações podem ser encontradas no Capítulo 14, NFS Ganesha: Exportar dados do Ceph pelo NFS.

Imprimir esta página