Ir para o conteúdoIr para navegação de página: página anterior [tecla de acesso p]/próxima página [tecla de acesso n]
documentation.suse.com / Documentação do SUSE Enterprise Storage 7 / Guia de Implantação / Fazendo upgrade de versões anteriores / Upgrade de uma versão anterior
Aplica-se a SUSE Enterprise Storage 7

7 Upgrade de uma versão anterior

Este capítulo apresenta as etapas para fazer upgrade do SUSE Enterprise Storage 6 para a versão 7.

O upgrade inclui as seguintes tarefas:

  • Fazer upgrade do Ceph Nautilus para o Octopus.

  • Alternar da instalação e execução do Ceph por meio de pacotes RPM para a execução em containers.

  • Remoção completa do DeepSea e substituição pelo ceph-salt e cephadm.

Atenção
Atenção

As informações de upgrade neste capítulo são válidas apenas para upgrades do DeepSea para o cephadm. Não tente seguir estas instruções para implantar o SUSE Enterprise Storage na Plataforma SUSE CaaS.

Importante
Importante

O upgrade de versões do SUSE Enterprise Storage mais antigas do que a 6 não é suportado. Você precisa primeiro fazer upgrade para a versão mais recente do SUSE Enterprise Storage 6 e, em seguida, seguir as etapas neste capítulo.

7.1 Antes de fazer upgrade

As tarefas a seguir devem ser concluídas antes de você iniciar o upgrade. Isso pode ser feito a qualquer momento durante a vida útil do SUSE Enterprise Storage 6.

7.1.1 Pontos a serem considerados

Antes de fazer upgrade, leia as seções a seguir para garantir que você entenda todas as tarefas que precisam ser executadas.

  • Leia os detalhes da versão: onde você encontra mais informações sobre o que mudou desde a versão anterior do SUSE Enterprise Storage. Consulte os detalhes da versão para verificar se:

    • Seu hardware precisa de considerações especiais.

    • Qualquer pacote de software usado foi significativamente modificado.

    • São necessárias precauções especiais para a instalação.

    Os detalhes da versão também apresentam informações que não puderam ser incluídas a tempo no manual. Eles também incluem notas sobre problemas conhecidos.

    Você encontra os detalhes da versão do SES 7 online em https://www.suse.com/releasenotes/.

    Além disso, após instalar o pacote release-notes-ses do repositório SES 7, encontre os detalhes da versão no diretório local /usr/share/doc/release-notes ou online em https://www.suse.com/releasenotes/.

  • Leia o Capítulo 5, Implantação com cephadm para se familiarizar com o ceph-salt e o orquestrador do Ceph, especialmente as informações sobre as especificações do serviço.

  • O upgrade do cluster pode levar algum tempo, aproximadamente o tempo necessário para fazer upgrade de uma máquina multiplicado pelo número de nós do cluster.

  • Você precisa primeiro fazer upgrade do Master Salt e depois substituir o DeepSea pelo ceph-salt e cephadm. Você não poderá começar a usar o módulo de orquestrador cephadm até que o upgrade de todos os Ceph Managers seja feito.

  • O upgrade do uso de RPMs do Nautilus para containers do Octopus precisa ser feito tudo em uma etapa. Isso significa fazer upgrade de um nó inteiro de uma vez, e não um daemon de cada vez.

  • O upgrade dos serviços básicos (MON, MGR, OSD) é feito de forma ordenada. Cada serviço fica disponível durante o upgrade. Os serviços de gateway (Servidor de Metadados, Gateway de Objetos, NFS Ganesha, iSCSI Gateway) precisarão ser reimplantados após o upgrade dos serviços básicos. Há um determinado tempo de espera para cada um dos seguintes serviços:

    • Importante
      Importante

      Os Servidores de Metadados e os Gateways de Objetos ficam inativos a partir do momento em que o upgrade dos nós é feito do SUSE Linux Enterprise Server 15 SP1 para o SUSE Linux Enterprise Server 15 SP2 até a reimplantação dos serviços no final do procedimento de upgrade. É importante ter isso em mente principalmente quando esses serviços estão colocados com MONs, MGRs ou OSDs, porque, neste caso, eles podem ficar inativos durante todo o período de upgrade do cluster. Se isso for um problema, considere a implantação desses serviços separadamente em nós adicionais antes do upgrade, para que eles fiquem inativos pelo menor tempo possível. Essa é a duração do upgrade dos nós de gateway, não a duração do upgrade de todo o cluster.

    • O NFS Ganesha e os iSCSI Gateways ficam inativos apenas no período de reinicialização dos nós durante o upgrade do SUSE Linux Enterprise Server 15 SP1 para o SUSE Linux Enterprise Server 15 SP2, e rapidamente depois quando cada serviço é reimplantado no modo de container.

7.1.2 Fazendo backup da configuração e dos dados do cluster

É altamente recomendável fazer backup de todas as configurações e dados do cluster antes de iniciar o upgrade para o SUSE Enterprise Storage 7. Para obter instruções sobre como fazer backup de todos os seus dados, consulte https://documentation.suse.com/ses/6/html/ses-all/cha-deployment-backup.html.

7.1.3 Verificando etapas do upgrade anterior

Se você fez upgrade da versão 5, verifique se o upgrade para a versão 6 foi concluído com êxito:

Verifique se existe o arquivo /srv/salt/ceph/configuration/files/ceph.conf.import.

Esse arquivo é criado pelo processo de integração durante o upgrade do SUSE Enterprise Storage 5 para 6. A opção configuration_init: default-import é definida em /srv/pillar/ceph/proposals/config/stack/default/ceph/cluster.yml.

Se configuration_init ainda está definido como default-import, o cluster usa ceph.conf.import como arquivo de configuração, e não o ceph.conf padrão do DeepSea, que é compilado dos arquivos em /srv/salt/ceph/configuration/files/ceph.conf.d/.

Portanto, você precisa inspecionar se há qualquer configuração personalizada em ceph.conf.import e, possivelmente, mover a configuração para um dos arquivos em /srv/salt/ceph/configuration/files/ceph.conf.d/.

Em seguida, remova a linha configuration_init: default-import de /srv/pillar/ceph/proposals/config/stack/default/ceph/cluster.yml.

7.1.4 Atualizando os nós e verificando a saúde do cluster

Verifique se todas as atualizações mais recentes do SUSE Linux Enterprise Server 15 SP1 e do SUSE Enterprise Storage 6 foram aplicadas a todos os nós do cluster:

root # zypper refresh && zypper patch

Após a aplicação das atualizações, verifique a saúde do cluster:

cephuser@adm > ceph -s

7.1.5 Verificando o acesso a repositórios do software e imagens de container

Verifique se cada nó do cluster tem acesso aos repositórios do software SUSE Linux Enterprise Server 15 SP2 e SUSE Enterprise Storage 7 e também ao registro de imagens de container.

7.1.5.1 Repositórios do software

Se todos os nós foram registrados no SCC, você poderá usar o comando zypper migration para fazer upgrade. Consulte https://documentation.suse.com/sles/15-SP2/html/SLES-all/cha-upgrade-online.html#sec-upgrade-online-zypper para obter mais detalhes.

Se os nós não foram registrados no SCC, desabilite todos os repositórios existentes do software e adicione os dois repositórios Pool e Updates para cada uma das seguintes extensões:

  • SLE-Product-SLES/15-SP2

  • SLE-Module-Basesystem/15-SP2

  • SLE-Module-Server-Applications/15-SP2

  • SUSE-Enterprise-Storage-7

7.1.5.2 Imagens de container

Todos os nós do cluster precisam acessar o registro de imagens de container. Na maioria dos casos, você usará o registro público do SUSE em registry.suse.com. Você precisa das seguintes imagens:

  • registry.suse.com/ses/7/ceph/ceph

  • registry.suse.com/ses/7/ceph/grafana

  • registry.suse.com/caasp/v4.5/prometheus-server

  • registry.suse.com/caasp/v4.5/prometheus-node-exporter

  • registry.suse.com/caasp/v4.5/prometheus-alertmanager

Por exemplo, para implantações isoladas (air-gapped), uma alternativa é configurar um registro local e verificar se você tem o conjunto correto de imagens de container disponível. Consulte a Seção 5.3.2.11, “Configurando o registro do container” para obter mais detalhes sobre como configurar um registro de imagens de container local.

7.2 Fazendo upgrade do Master Salt

O procedimento a seguir descreve o processo de upgrade do Master Salt:

  1. Faça upgrade do OS subjacente para o SUSE Linux Enterprise Server 15 SP2:

    • Para um cluster em que todos os nós foram registrados no SCC, execute zypper migration.

    • Para um cluster em que os nós têm repositórios de software atribuídos manualmente, execute zypper dup seguido de reboot.

  2. Desabilite as fases do DeepSea para evitar o uso acidental. Adicione o seguinte conteúdo a /srv/pillar/ceph/stack/global.yml:

    stage_prep: disabled
    stage_discovery: disabled
    stage_configure: disabled
    stage_deploy: disabled
    stage_services: disabled
    stage_remove: disabled

    Grave o arquivo e aplique as mudanças:

    root@master # salt '*' saltutil.pillar_refresh
  3. Se você não usa imagens de container do registry.suse.com, mas sim o registro configurado localmente, edite o /srv/pillar/ceph/stack/global.yml para especificar a imagem de container e o registro do Ceph que o DeepSea usará. Por exemplo, para usar 192.168.121.1:5000/my/ceph/image, adicione as seguintes linhas:

    ses7_container_image: 192.168.121.1:5000/my/ceph/image
    ses7_container_registries:
      - location: 192.168.121.1:5000

    Grave o arquivo e aplique as mudanças:

    root@master # salt '*' saltutil.refresh_pillar
  4. Observe a configuração existente:

    cephuser@adm > ceph config assimilate-conf -i /etc/ceph/ceph.conf
  5. Verifique o status do upgrade. A saída pode ser diferente dependendo da configuração do seu cluster:

    root@master # salt-run upgrade.status
    The newest installed software versions are:
     ceph: ceph version 15.2.2-60-gf5864377ab (f5864377abb5549f843784c93577980aa264b9bc) octopus (stable)
     os: SUSE Linux Enterprise Server 15 SP2
    Nodes running these software versions:
     admin.ceph (assigned roles: master, prometheus, grafana)
    Nodes running older software versions must be upgraded in the following order:
     1: mon1.ceph (assigned roles: admin, mon, mgr)
     2: mon2.ceph (assigned roles: admin, mon, mgr)
     3: mon3.ceph (assigned roles: admin, mon, mgr)
     4: data4.ceph (assigned roles: storage, mds)
     5: data1.ceph (assigned roles: storage)
     6: data2.ceph (assigned roles: storage)
     7: data3.ceph (assigned roles: storage)
     8: data5.ceph (assigned roles: storage, rgw)

7.3 Fazendo upgrade dos nós MON, MGR e OSD

Faça upgrade do Ceph Monitor, do Ceph Manager e dos nós OSD, um de cada vez. Para cada serviço, siga estas etapas:

  1. Se o nó do qual você está fazendo upgrade é um OSD, execute o comando a seguir para evitar marcá-lo como out:

    cephuser@adm > ceph osd add-noout SHORT_NODE_NAME

    Substitua SHORT_NODE_NAME pelo nome abreviado do nó da forma como ele aparece na saída do comando ceph osd tree. Na entrada a seguir, os nomes abreviados de host são ses-min1 e ses-min2

    root@master # ceph osd tree
    ID   CLASS  WEIGHT   TYPE NAME       STATUS  REWEIGHT  PRI-AFF
     -1         0.60405  root default
    -11         0.11691      host ses-min1
      4    hdd  0.01949          osd.4       up   1.00000  1.00000
      9    hdd  0.01949          osd.9       up   1.00000  1.00000
     13    hdd  0.01949          osd.13      up   1.00000  1.00000
    [...]
     -5         0.11691      host ses-min2
      2    hdd  0.01949          osd.2       up   1.00000  1.00000
      5    hdd  0.01949          osd.5       up   1.00000  1.00000
    [...]
  2. Faça upgrade do OS subjacente para o SUSE Linux Enterprise Server 15 SP2:

    • Se todos os nós do cluster foram registrados no SCC, execute zypper migration.

    • Se os nós do cluster tiveram repositórios de software atribuídos manualmente, execute zypper dup seguido de reboot.

  3. Após a reinicialização do nó, coloque em contêiner todos os daemons MON, MGR e OSD existentes nesse nó executando o seguinte comando no Master Salt:

    root@master # salt MINION_ID state.apply ceph.upgrade.ses7.adopt

    Substitua MINION_ID pelo ID do minion do qual você está fazendo upgrade. Você pode gerar uma lista de IDs de minions ao executar o comando salt-key -L no Master Salt.

    Dica
    Dica

    Para ver o status e o andamento da adoção, verifique o Ceph Dashboard ou execute um dos seguintes comandos no Master Salt:

    root@master # ceph status
    root@master # ceph versions
    root@master # salt-run upgrade.status
  4. Após a conclusão bem-sucedida da adoção, cancele a definição do flag noout se o nó do qual você estiver fazendo upgrade for OSD:

    cephuser@adm > ceph osd rm-noout SHORT_NODE_NAME

7.4 Fazendo upgrade de nós de gateway

Na sequência, faça upgrade dos nós de gateway separados (Servidor de Metadados, Gateway de Objetos, NFS Ganesha ou iSCSI Gateway). Faça upgrade do OS subjacente para o SUSE Linux Enterprise Server 15 SP2 para cada nó:

  • Se todos os nós do cluster foram registrados no SUSE Customer Center, execute o comando zypper migration.

  • Se os nós do cluster tiveram repositórios de software atribuídos manualmente, execute o comando zypper dup seguido do comando reboot.

Esta etapa também vale para qualquer nó que faça parte do cluster, mas que ainda não recebeu nenhuma função (em caso de dúvida, verifique a lista de hosts no Master Salt gerada pelo comando salt-key -L e compare-a com a saída do comando salt-run upgrade.status).

Após o upgrade do OS em todos os nós do cluster, a próxima etapa é instalar o pacote ceph-salt e aplicar a configuração do cluster. Os serviços de gateway reais são reimplantados no modo em container no final do procedimento de upgrade.

Nota
Nota

Os serviços Servidor de Metadados e Gateway de Objetos ficam indisponíveis a partir do momento do upgrade para o SUSE Linux Enterprise Server 15 SP2 até serem reimplantados no final do procedimento de upgrade.

7.5 Instalando o ceph-salt e aplicando a configuração do cluster

Antes de iniciar o procedimento de instalação do ceph-salt e aplicar a configuração do cluster, verifique o status do cluster e do upgrade executando os seguintes comandos:

root@master # ceph status
root@master # ceph versions
root@master # salt-run upgrade.status
  1. Remova os Crons rbd_exporter e rgw_exporter criados pelo DeepSea. No Master Salt, execute o comando crontab -e como root para editar o crontab. Apague os seguintes itens, se houver:

    # SALT_CRON_IDENTIFIER:deepsea rbd_exporter cron job
    */5 * * * * /var/lib/prometheus/node-exporter/rbd.sh > \
     /var/lib/prometheus/node-exporter/rbd.prom 2> /dev/null
    # SALT_CRON_IDENTIFIER:Prometheus rgw_exporter cron job
    */5 * * * * /var/lib/prometheus/node-exporter/ceph_rgw.py > \
     /var/lib/prometheus/node-exporter/ceph_rgw.prom 2> /dev/null
  2. Exporte a configuração do cluster do DeepSea executando os seguintes comandos:

    root@master # salt-run upgrade.ceph_salt_config > ceph-salt-config.json
    root@master # salt-run upgrade.generate_service_specs > specs.yaml
  3. Desinstale o DeepSea e instale o ceph-salt no Master Salt:

    root@master # zypper remove 'deepsea*'
    root@master # zypper install ceph-salt
  4. Reinicie o Master Salt e sincronize os módulos do Salt:

    root@master # systemctl restart salt-master.service
    root@master # salt \* saltutil.sync_all
  5. Importe a configuração do cluster do DeepSea para ceph-salt:

    root@master # ceph-salt import ceph-salt-config.json
  6. Gere as chaves SSH para comunicação do nó do cluster:

    root@master # ceph-salt config /ssh generate
    Dica
    Dica

    Verifique se a configuração do cluster foi importada do DeepSea e especifique as opções que possam ter sido perdidas:

    root@master # ceph-salt config ls

    Para ver uma descrição completa da configuração do cluster, consulte a Seção 5.3.2, “Configurando as propriedades do cluster”.

  7. Aplique a configuração e habilite o cephadm:

    root@master # ceph-salt apply
  8. Se for necessário inserir o URL de registro do container local e as credenciais de acesso, siga as etapas descritas na Seção 5.3.2.11, “Configurando o registro do container”.

  9. Se você não usa imagens de container do registry.suse.com, mas usa o registro configurado localmente, informe a imagem de container que o Ceph usará executando o comando:

    root@master # ceph config set global container_image IMAGE_NAME

    Por exemplo:

    root@master # ceph config set global container_image 192.168.121.1:5000/my/ceph/image
  10. Pare e desabilite os daemons ceph-crash do SUSE Enterprise Storage 6. Novos formulários em container desses daemons são iniciados automaticamente mais tarde.

    root@master # salt '*' service.stop ceph-crash
    root@master # salt '*' service.disable ceph-crash

7.6 Fazendo upgrade e adotando a pilha de monitoramento

O procedimento a seguir adota todos os componentes da pilha de monitoramento (consulte o Capítulo 16, Monitoramento e alerta para obter mais detalhes).

  1. Pause o orquestrador:

    cephuser@adm > ceph orch pause
  2. Em qualquer nó que esteja executando o Prometheus, o Grafana e o Alertmanager (por padrão, o Master Salt), execute os seguintes comandos:

    cephuser@adm > cephadm adopt --style=legacy --name prometheus.$(hostname)
    cephuser@adm > cephadm adopt --style=legacy --name alertmanager.$(hostname)
    cephuser@adm > cephadm adopt --style=legacy --name grafana.$(hostname)
    Dica
    Dica

    Se você não executa o registro de imagem de container padrão registry.suse.com, precisa especificar a imagem que será usada, por exemplo:

    cephuser@adm > cephadm --image 192.168.121.1:5000/caasp/v4.5/prometheus-server:2.18.0 \
      adopt --style=legacy --name prometheus.$(hostname)
    cephuser@adm > cephadm --image 192.168.121.1:5000/caasp/v4.5/prometheus-alertmanager:0.16.2 \
      adopt --style=legacy --name alertmanager.$(hostname)
    cephuser@adm > cephadm --image 192.168.121.1:5000/ses/7/ceph/grafana:7.0.3 \
     adopt --style=legacy --name grafana.$(hostname)

    Para obter mais detalhes sobre como usar imagens de container personalizadas ou locais, consulte o Seção 16.1, “Configurando imagens personalizadas ou locais”.

  3. Remova o Node-Exporter. Ele não precisa ser migrado e será reinstalado como um container quando o arquivo specs.yaml for aplicado.

    tux > sudo zypper rm golang-github-prometheus-node_exporter
  4. Aplique as especificações de serviço que você já exportou do DeepSea:

    cephuser@adm > ceph orch apply -i specs.yaml
  5. Continue o orquestrador:

    cephuser@adm > ceph orch resume

7.7 Reimplantação do serviço de gateway

7.7.1 Fazendo upgrade do Gateway de Objetos

No SUSE Enterprise Storage 7, os Gateways de Objetos são sempre configurados com um domínio, o que permite multissite no futuro (consulte o Seção 21.13, “Gateways de Objetos multissite” para obter mais detalhes). Se você usou uma configuração de site único do Gateway de Objetos no SUSE Enterprise Storage 6, siga estas etapas para adicionar um domínio. Se você não planeja de fato usar a funcionalidade multissite, pode usar o padrão para os nomes de domínio, grupo de zonas e zona.

  1. Crie um novo domínio:

    cephuser@adm > radosgw-admin realm create --rgw-realm=REALM_NAME --default
  2. Opcionalmente, renomeie a zona padrão e o grupo de zonas.

    cephuser@adm > radosgw-admin zonegroup rename \
     --rgw-zonegroup default \
     --zonegroup-new-name=ZONEGROUP_NAME
    cephuser@adm > radosgw-admin zone rename \
     --rgw-zone default \
     --zone-new-name ZONE_NAME \
     --rgw-zonegroup=ZONEGROUP_NAME
  3. Configure o grupo de zonas master:

    cephuser@adm > radosgw-admin zonegroup modify \
     --rgw-realm=REALM_NAME \
     --rgw-zonegroup=ZONEGROUP_NAME \
     --endpoints http://RGW.EXAMPLE.COM:80 \
     --master --default
  4. Configure a zona master. Para isso, você precisará da ACCESS_KEY e da SECRET_KEY de um usuário do Gateway de Objetos com o flag system habilitado. O usuário costuma ser o admin. Para obter a ACCESS_KEY e a SECRET_KEY, execute radosgw-admin user info --uid admin.

    cephuser@adm > radosgw-admin zone modify \
     --rgw-realm=REALM_NAME \
     --rgw-zonegroup=ZONEGROUP_NAME \
     --rgw-zone=ZONE_NAME \
     --endpoints http://RGW.EXAMPLE.COM:80 \
     --access-key=ACCESS_KEY \
     --secret=SECRET_KEY \
     --master --default
  5. Confirme a configuração atualizada:

    cephuser@adm > radosgw-admin period update --commit

Para colocar o serviço Gateway de Objetos em container, crie o respectivo arquivo de especificação conforme descrito na Seção 5.4.3.4, “Implantando Gateways de Objetos” e aplique-o.

cephuser@adm > ceph orch apply -i RGW.yml

7.7.2 Fazendo upgrade do NFS Ganesha

Veja a seguir como migrar um serviço NFS Ganesha existente que executa o Ceph Nautilus para um container do NFS Ganesha que executa o Ceph Octopus.

Atenção
Atenção

A documentação a seguir requer que você já tenha feito upgrade dos serviços básicos do Ceph.

O NFS Ganesha armazena a configuração adicional por daemon e a exporta para um pool RADOS. O pool RADOS configurado pode ser encontrado na linha watch_url do bloco RADOS_URLS no arquivo ganesha.conf. Por padrão, esse pool será denominado ganesha_config.

Antes de tentar qualquer migração, é altamente recomendável fazer uma cópia dos objetos de configuração de exportação e daemon localizados no pool RADOS. Para localizar o pool RADOS configurado, execute o seguinte comando:

cephuser@adm > grep -A5 RADOS_URLS /etc/ganesha/ganesha.conf

Para listar o conteúdo do pool RADOS:

cephuser@adm > rados --pool ganesha_config --namespace ganesha ls | sort
  conf-node3
  export-1
  export-2
  export-3
  export-4

Para copiar os objetos RADOS:

cephuser@adm > RADOS_ARGS="--pool ganesha_config --namespace ganesha"
cephuser@adm > OBJS=$(rados $RADOS_ARGS ls)
cephuser@adm > for obj in $OBJS; do rados $RADOS_ARGS get $obj $obj; done
cephuser@adm > ls -lah
total 40K
drwxr-xr-x 2 root root 4.0K Sep 8 03:30 .
drwx------ 9 root root 4.0K Sep 8 03:23 ..
-rw-r--r-- 1 root root 90 Sep 8 03:30 conf-node2
-rw-r--r-- 1 root root 90 Sep 8 03:30 conf-node3
-rw-r--r-- 1 root root 350 Sep 8 03:30 export-1
-rw-r--r-- 1 root root 350 Sep 8 03:30 export-2
-rw-r--r-- 1 root root 350 Sep 8 03:30 export-3
-rw-r--r-- 1 root root 358 Sep 8 03:30 export-4

Para cada nó, um serviço NFS Ganesha existente precisa ser interrompido e, em seguida, substituído por um container gerenciado pelo cephadm.

  1. Pare e desabilite o serviço NFS Ganesha existente:

    cephuser@adm > systemctl stop nfs-ganesha
    cephuser@adm > systemctl disable nfs-ganesha
  2. Depois que o serviço NFS Ganesha existente for interrompido, um novo serviço poderá ser implantado em um container usando o cephadm. Para fazer isso, você precisa criar uma especificação de serviço que contenha um service_id, que será usado para identificar esse novo cluster do NFS, o nome de host do nó que estamos migrando listado como host na especificação de posicionamento e o pool RADOS e o namespace que contêm os objetos de exportação do NFS configurados. Por exemplo:

    service_type: nfs
    service_id: SERVICE_ID
    placement:
      hosts:
      - node2
      pool: ganesha_config
      namespace: ganesha

    Para obter mais informações sobre como criar uma especificação de posicionamento, consulte a Seção 5.4.2, “Especificação de serviço e posicionamento”.

  3. Aplique a especificação de posicionamento:

    cephuser@adm > ceph orch apply -i FILENAME.yaml
  4. Confirme se o daemon do NFS Ganesha está em execução no host:

    cephuser@adm > ceph orch ps --daemon_type nfs
    NAME           HOST   STATUS         REFRESHED  AGE  VERSION  IMAGE NAME                                IMAGE ID      CONTAINER ID
    nfs.foo.node2  node2  running (26m)  8m ago     27m  3.3      registry.suse.com/ses/7/ceph/ceph:latest  8b4be7c42abd  c8b75d7c8f0d
  5. Repita essas etapas para cada nó do NFS Ganesha. Você não precisa criar uma especificação de serviço separada para cada nó. É suficiente adicionar o nome de host de cada nó à especificação do serviço NFS existente e reaplicá-la.

É possível migrar as exportações existentes de duas maneiras diferentes:

  • Recriação ou reatribuição manual usando o Ceph Dashboard.

  • Cópia manual do conteúdo de cada objeto RADOS por daemon para a configuração comum recém-criada do NFS Ganesha.

Procedimento 7.1: Copiando manualmente as exportações para o arquivo de configuração comum do NFS Ganesha
  1. Determine a lista de objetos RADOS por daemon:

    cephuser@adm > RADOS_ARGS="--pool ganesha_config --namespace ganesha"
    cephuser@adm > DAEMON_OBJS=$(rados $RADOS_ARGS ls | grep 'conf-')
  2. Faça uma cópia dos objetos RADOS por daemon:

    cephuser@adm > for obj in $DAEMON_OBJS; do rados $RADOS_ARGS get $obj $obj; done
    cephuser@adm > ls -lah
    total 20K
    drwxr-xr-x 2 root root 4.0K Sep 8 16:51 .
    drwxr-xr-x 3 root root 4.0K Sep 8 16:47 ..
    -rw-r--r-- 1 root root 90 Sep 8 16:51 conf-nfs.SERVICE_ID
    -rw-r--r-- 1 root root 90 Sep 8 16:51 conf-node2
    -rw-r--r-- 1 root root 90 Sep 8 16:51 conf-node3
  3. Classifique e faça a fusão em uma única lista de exportações:

    cephuser@adm > cat conf-* | sort -u > conf-nfs.SERVICE_ID
    cephuser@adm > cat conf-nfs.foo
    %url "rados://ganesha_config/ganesha/export-1"
    %url "rados://ganesha_config/ganesha/export-2"
    %url "rados://ganesha_config/ganesha/export-3"
    %url "rados://ganesha_config/ganesha/export-4"
  4. Grave o novo arquivo de configuração comum do NFS Ganesha:

    cephuser@adm > rados $RADOS_ARGS put conf-nfs.SERVICE_ID conf-nfs.SERVICE_ID
  5. Notifique o daemon do NFS Ganesha:

    cephuser@adm > rados $RADOS_ARGS notify conf-nfs.SERVICE_ID conf-nfs.SERVICE_ID
    Nota
    Nota

    Essa ação fará com que o daemon recarregue a configuração.

Após a migração bem-sucedida do serviço, o serviço NFS Ganesha baseado no Nautilus poderá ser removido.

  1. Remova o NFS Ganesha:

    cephuser@adm > zypper rm nfs-ganesha
    Reading installed packages...
    Resolving package dependencies...
    The following 5 packages are going to be REMOVED:
      nfs-ganesha nfs-ganesha-ceph nfs-ganesha-rados-grace nfs-ganesha-rados-urls nfs-ganesha-rgw
    5 packages to remove.
    After the operation, 308.9 KiB will be freed.
    Continue? [y/n/v/...? shows all options] (y): y
    (1/5) Removing nfs-ganesha-ceph-2.8.3+git0.d504d374e-3.3.1.x86_64 .................................................................................................................................................................................................................................................................................................[done]
    (2/5) Removing nfs-ganesha-rgw-2.8.3+git0.d504d374e-3.3.1.x86_64 ..................................................................................................................................................................................................................................................................................................[done]
    (3/5) Removing nfs-ganesha-rados-urls-2.8.3+git0.d504d374e-3.3.1.x86_64 ...........................................................................................................................................................................................................................................................................................[done]
    (4/5) Removing nfs-ganesha-rados-grace-2.8.3+git0.d504d374e-3.3.1.x86_64 ..........................................................................................................................................................................................................................................................................................[done]
    (5/5) Removing nfs-ganesha-2.8.3+git0.d504d374e-3.3.1.x86_64 ......................................................................................................................................................................................................................................................................................................[done]
    Additional rpm output:
    warning: /etc/ganesha/ganesha.conf saved as /etc/ganesha/ganesha.conf.rpmsave
  2. Remova as configurações do cluster legado do Ceph Dashboard:

    cephuser@adm > ceph dashboard reset-ganesha-clusters-rados-pool-namespace

7.7.3 Fazendo upgrade do servidor de metadados

Ao contrário dos MONs, MGRs e OSDs, o Servidor de Metadados não pode ser adotado no local. Em vez disso, você precisa reimplantá-lo em containers usando o orquestrador do Ceph.

  1. Execute o comando ceph fs ls para obter o nome do seu sistema de arquivos, por exemplo:

    cephuser@adm > ceph fs ls
    name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
  2. Crie um novo arquivo de especificação de serviço mds.yml, conforme descrito na Seção 5.4.3.3, “Implantando servidores de metadados”, usando o nome do sistema de arquivos como o service_id e especificando os hosts que executarão os daemons MDS. Por exemplo:

    service_type: mds
    service_id: cephfs
    placement:
      hosts:
      - ses-min1
      - ses-min2
      - ses-min3
  3. Execute o comando ceph orch apply -i mds.yml para aplicar a especificação de serviço e iniciar os daemons MDS.

7.7.4 Fazendo upgrade do iSCSI Gateway

Para fazer upgrade do iSCSI Gateway, é necessário reimplantá-lo em containers usando o orquestrador do Ceph. Se você tiver vários iSCSI Gateways, precisará reimplantá-los um por um para reduzir o tempo de espera do serviço.

  1. Pare e desabilite os daemons iSCSI existentes em cada nó do iSCSI Gateway:

    tux > sudo systemctl stop rbd-target-gw
    tux > sudo systemctl disable rbd-target-gw
    tux > sudo systemctl stop rbd-target-api
    tux > sudo systemctl disable rbd-target-api
  2. Crie uma especificação de serviço para o iSCSI Gateway conforme descrito na Seção 5.4.3.5, “Implantando Gateways iSCSI”. Para isso, você precisa das configurações pool, trusted_ip_list e api_* do arquivo /etc/ceph/iscsi-gateway.cfg existente. Se você tem o suporte a SSL habilitado (api_secure = true), precisa também do certificado SSL (/etc/ceph/iscsi-gateway.crt) e da chave (/etc/ceph/iscsi-gateway.key).

    Por exemplo, se /etc/ceph/iscsi-gateway.cfg contém o seguinte:

    [config]
    cluster_client_name = client.igw.ses-min5
    pool = iscsi-images
    trusted_ip_list = 10.20.179.203,10.20.179.201,10.20.179.205,10.20.179.202
    api_port = 5000
    api_user = admin
    api_password = admin
    api_secure = true

    Você precisa criar o seguinte arquivo de especificação de serviço iscsi.yml:

    service_type: iscsi
    service_id: igw
    placement:
      hosts:
      - ses-min5
    spec:
      pool: iscsi-images
      trusted_ip_list: "10.20.179.203,10.20.179.201,10.20.179.205,10.20.179.202"
      api_port: 5000
      api_user: admin
      api_password: admin
      api_secure: true
      ssl_cert: |
        -----BEGIN CERTIFICATE-----
        MIIDtTCCAp2gAwIBAgIYMC4xNzc1NDQxNjEzMzc2MjMyXzxvQ7EcMA0GCSqGSIb3
        DQEBCwUAMG0xCzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARVdGFoMRcwFQYDVQQHDA5T
        [...]
        -----END CERTIFICATE-----
      ssl_key: |
        -----BEGIN PRIVATE KEY-----
        MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC5jdYbjtNTAKW4
        /CwQr/7wOiLGzVxChn3mmCIF3DwbL/qvTFTX2d8bDf6LjGwLYloXHscRfxszX/4h
        [...]
        -----END PRIVATE KEY-----
    Nota
    Nota

    As configurações pool, trusted_ip_list, api_port, api_user, api_password e api_secure são idênticas às do arquivo /etc/ceph/iscsi-gateway.cfg. É possível copiar os valores ssl_cert e ssl_key dos arquivos de chave e de certificado SSL existentes. Verifique se eles estão indentados corretamente e se o caractere barra vertical | aparece no final das linhas ssl_cert: e ssl_key: (veja o conteúdo do arquivo iscsi.yml acima).

  3. Execute o comando ceph orch apply -i iscsi.yml para aplicar a especificação de serviço e iniciar os daemons do iSCSI Gateway.

  4. Remova o pacote ceph-iscsi antigo de cada um dos nós existentes do iSCSI Gateway:

    cephuser@adm > zypper rm -u ceph-iscsi

7.8 Limpeza após o upgrade

Após o upgrade, execute as seguintes etapas de limpeza:

  1. Verifique a versão atual do Ceph para conferir se o upgrade do cluster foi bem-sucedido:

    cephuser@adm > ceph versions
  2. Garanta que nenhum OSD antigo ingresse no cluster:

    cephuser@adm > ceph osd require-osd-release octopus
  3. Habilite o módulo de dimensionador automático:

    cephuser@adm > ceph mgr module enable pg_autoscaler
    Importante
    Importante

    Por padrão, os pools no SUSE Enterprise Storage 6 tinham o pg_autoscale_mode definido como warn. Isso resultava em uma mensagem de aviso em caso de número de PGs abaixo do ideal, mas o dimensionamento automático não era feito. O padrão no SUSE Enterprise Storage 7 é a opção pg_autoscale_mode definida como on para que os novos pools e PGs sejam dimensionados automaticamente. O processo de upgrade não muda automaticamente o pg_autoscale_mode dos pools existentes. Para mudá-lo para on e aproveitar todos os benefícios do dimensionador automático, consulte as instruções no Seção 17.4.12, “Habilitando o dimensionador automático de PG”.

    Encontre mais detalhes no Seção 17.4.12, “Habilitando o dimensionador automático de PG”.

  4. Impedir clientes pré-Luminous:

    cephuser@adm > ceph osd set-require-min-compat-client luminous
  5. Habilite o módulo de balanceador:

    cephuser@adm > ceph balancer mode upmap
    cephuser@adm > ceph balancer on

    Encontre mais detalhes no Seção 29.1, “Balanceador”.

  6. Se preferir, habilite o módulo de telemetria:

    cephuser@adm > ceph mgr module enable telemetry
    cephuser@adm > ceph telemetry on

    Encontre mais detalhes no Seção 29.2, “Habilitando o módulo de telemetria”.