Otimização do desempenho do ODF para cargas de trabalho de virtualização

Nuvem Privada Virtual 4.20 e mais tarde Apenas nós de trabalho em bare metal

É possível melhorar o desempenho do armazenamento do Data Foundation (ODF) d OpenShift para cargas de trabalho de virtualização selecionando o perfil de desempenho adequado, ajustando os limites de recursos dos pods do OSD e configurando operações em massa de dados. Essas opções se aplicam a clusters do Red Hat OpenShift on IBM Cloud com clusters do OpenShift Virtualization e do Red Hat OpenShift Virtualization Service implantados manualmente.

Antes de Iniciar

  • Você deve ter acesso d cluster-admin e ao cluster.
  • Instale ou atualize a CLI do IBM Cloud e a CLI do oc.
  • O ODF deve estar instalado e em bom estado antes de você ajustar os limites de recursos ou configurar os pools de armazenamento. Para verificar o estado do ODF, consulte “Verificação do estado do cluster do Ceph ”.

Seleção de um perfil de desempenho do ODF

O ODF oferece dois perfis de desempenho que controlam a alocação de CPU e memória para os componentes de armazenamento. Escolha o perfil que melhor se adapta à sua carga de trabalho.

Desempenho
Aloca mais CPU e memória do que o perfil “Equilibrado ”. Utilize este perfil para cargas de trabalho do tipo “ VM ” que exigem alta taxa de transferência e baixa latência, como bancos de dados ou aplicativos de alto tráfego.
Balanceado
Consome recursos moderados de CPU e memória. Utilize este perfil para cargas de trabalho de uso geral, ambientes mistos ou implantações com otimização de custos.

Ao implantar o ODF, selecione “Desempenho ” no campo “Perfil de recurso ”, na seção “Armazenamento de suporte ”. Nos clusters do Serviço de Virtualização, a opção “Desempenho” é selecionada por padrão.

É possível definir o perfil pelo console ou pela CLI.

  • Console - Conjuntos padrão de “ Red Hat OpenShift on IBM Cloud ”: Ao instalar o complemento ODF, selecione “Desempenho ” na seção “Armazenamento de suporte ”.
  • Console - Clusters do Serviço de Virtualização: a opção “Desempenho” está selecionada por padrão. Para alterá-lo, selecione “Editar” no cartão “ OpenShift Data Foundation”, na seção “Integrações de virtualização”, durante a criação do cluster.

Essa opção se aplica apenas a clusters padrão do Red Hat OpenShift on IBM Cloud. Para clusters do Serviço de Virtualização, o perfil é definido durante a criação do cluster.

Na CLI, inclua --param "resourceProfile=performance" ao ativar o complemento:

ibmcloud oc cluster addon enable openshift-data-foundation \
  -c <cluster-name> \
  --version <addon-version> \
  --param "odfDeploy=true" \
  --param "osdStorageClassName=localblock" \
  --param "autoDiscoverDevices=true" \
  --param "resourceProfile=performance" \
  --param "setDefaultStorageClassForVirtualization=true"

Para todos os parâmetros dos complementos do ODF, consulte a referência de parâmetros do Data Foundation em OpenShift.

Configurando os limites de recursos dos pods do OSD

Object Storage Os pods do Daemon (OSD) armazenam dados e participam do posicionamento e da replicação de dados. Para cargas de trabalho de virtualização com alto volume de E/S, é possível aumentar os limites de CPU e memória nos pods OSD para ajudar a reduzir gargalos.

Verificar os limites atuais de recursos do OSD

Antes de alterar os limites de recursos, verifique as configurações atuais de CPU e memória dos seus pods OSD. Anote as solicitações e os limites atuais para que você possa compará-los com o uso real e os valores atualizados posteriormente.

oc get pods -n openshift-storage -l app=rook-ceph-osd \
  -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{range .spec.containers[*]}  Container: {.name}{"\n"}    Requests - CPU: {.resources.requests.cpu}, Memory: {.resources.requests.memory}{"\n"}    Limits   - CPU: {.resources.limits.cpu}, Memory: {.resources.limits.memory}{"\n"}{end}{"\n"}{end}'

Analise os resultados para identificar as solicitações e os limites atuais de CPU e memória para cada contêiner OSD. Compare esses valores com o uso real no próximo comando. Se o uso da CPU ou da memória se aproximar constantemente dos limites configurados, aumentar esses limites pode ajudar a reduzir os gargalos.

Para verificar o consumo real de recursos, execute o comando a seguir e compare o uso da CPU e da memória com os limites que você anotou:

oc adm top pods -n openshift-storage -l app=rook-ceph-osd

Aumentar os limites de recursos do OSD

Se os limites de corrente forem insuficientes para sua carga de trabalho do VM, atualize-os editando o recurso ocs-storagecluster.

Você também pode modificar os limites de outros pods do Rook-Ceph, como mon, mgr e rgw, na configuração do ocs-storagecluster. Para obter mais detalhes, consulte a Solução 6959127 da Red Hat.

  1. Abra o recurso do cluster de armazenamento para edição.

    oc edit storagecluster ocs-storagecluster -n openshift-storage
    
  2. Na entrada correspondente do storageDeviceSets, adicione ou atualize o campo resources. O exemplo parcial a seguir define um limite de 4 CPUs e 24 Gi de memória, além de uma solicitação de 2 CPUs e 24 Gi de memória:

    storageDeviceSets:
      - name: ocs-deviceset
        resources:
          limits:
            cpu: "4"
            memory: "24Gi"
          requests:
            cpu: "2"
            memory: "24Gi"
    

    As solicitações de CPU e memória devem ser menores ou iguais aos limites.

  3. Salve e saia do editor.

    Depois de salvar as alterações, os pods OSD são reiniciados automaticamente. Aguarde até que a reinicialização gradual seja concluída antes de realizar outras operações de armazenamento.

Verifique os limites atualizados dos recursos

Após a conclusão da reinicialização gradual, confirme se os limites atualizados foram aplicados a todos os pods do OSD.

  1. Monitore a reinicialização gradual para verificar se todos os pods do OSD retornam ao estado “ Running ”. A reinicialização estará concluída quando todos os pods do OSD exibirem “ Running ” e nenhum deles estiver em “ Pending ” ou “ Terminating ”.

    oc get pods -n openshift-storage | grep osd | grep -v prepare | grep -v rotation
    
  2. Confirme se os novos valores dos recursos estão em vigor.

    oc get pods -n openshift-storage -l app=rook-ceph-osd \
      -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{range .spec.containers[*]}  Container: {.name}{"\n"}    Requests - CPU: {.resources.requests.cpu}, Memory: {.resources.requests.memory}{"\n"}    Limits   - CPU: {.resources.limits.cpu}, Memory: {.resources.limits.memory}{"\n"}{end}{"\n"}{end}'
    

    Verifique se os valores da CPU e da memória correspondem aos valores que você configurou.

Configurando o sinalizador de processamento em massa para operações com grandes volumes de dados

Para operações com grandes volumes de dados, como migrações do tipo “ VM ”, importações em massa ou arquivamento de dados, ativar o sinalizador de processamento em massa em um pool de blocos do Ceph pode melhorar a distribuição inicial dos dados entre os OSDs e reduzir a sobrecarga do rebalanceamento.

O sinalizador “bulk” é comumente usado para:

  • VM migrações e importações de discos envolvendo vários TBs de dados.
  • Operações de backup e restauração.
  • Carregamento inicial de dados para novos aplicativos.
  • Grupos de arquivamento de dados.

Para configurar um recurso do tipo “ CephBlockPool ” com o sinalizador “bulk” ativado, siga as etapas a seguir.

  1. Crie ou atualize a definição do recurso CephBlockPool de modo que a seção parameters inclua bulk: "true".

    apiVersion: ceph.rook.io/v1
    kind: CephBlockPool
    metadata:
      name: <pool-name>
      namespace: openshift-storage
    spec:
      replicated:
        size: 3
      parameters:
        bulk: "true"
    
  2. Aplique o arquivo de configuração.

    oc apply -f <pool-config-file>.yaml
    

    Depois de aplicar a configuração, o Ceph poderá distribuir os novos dados de maneira mais uniforme pelo pool desde o início. Esse comportamento pode reduzir a necessidade de reequilíbrio à medida que o pool vai se enchendo.

Verificação do estado do cluster do Ceph

Monitore regularmente seu cluster Ceph para identificar problemas de desempenho e garantir a integridade dos dados. Execute verificações de integridade antes e depois de fazer alterações na configuração.

Faça uma verificação básica de integridade

Execute o comando a seguir para obter um resumo geral do estado do Ceph. Um cluster em bom estado retorna HEALTH_OK``.

oc rsh -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) ceph status

Para visualizar os avisos ou erros ativos, execute o seguinte comando:

oc rsh -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) ceph health detail

Compreender os estados do cluster

A saída do comando ceph status inclui os estados dos grupos de alocação (PG) que indicam a integridade dos dados.

Ativo/limpo
O estado ideal. Todos os grupos de alocação estão ativos, todos os dados estão replicados e não há movimentação de dados. Nenhuma ação é necessária.
Ativo+remapeado, ativo+preenchimento, ativo+recuperação
Os dados estão sendo redistribuídos. Esses estados são normais após uma alteração no recurso OSD, a substituição de um nó ou uma operação de dimensionamento. Aguarde até que o cluster volte ao estado “ active/clean ” antes de fazer alterações adicionais.

Exemplo de resultado correto:

HEALTH_OK

Exemplo de saída durante o rebalanceamento:

HEALTH_WARN
  Degraded data redundancy: 123/456 objects degraded (26.974%)
  Recovery 50/456 objects degraded (10.965%)

Verificar o grupo de colocação e o status do OSD

Para obter uma visão mais detalhada da distribuição dos dados e do estado do OSD, realize as verificações a seguir.

  1. Verifique o status dos grupos de colocação para identificar aqueles que não estão no estado “ active+clean ”.

    oc rsh -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) ceph pg stat
    
  2. Verifique o status de cada OSD para confirmar se os OSDs estão em up e in.

    oc rsh -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) ceph osd status
    

Próximas etapas