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-admine 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.
-
Abra o recurso do cluster de armazenamento para edição.
oc edit storagecluster ocs-storagecluster -n openshift-storage -
Na entrada correspondente do
storageDeviceSets, adicione ou atualize o camporesources. 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.
-
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.
-
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 -
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.
-
Crie ou atualize a definição do recurso
CephBlockPoolde modo que a seçãoparametersincluabulk: "true".apiVersion: ceph.rook.io/v1 kind: CephBlockPool metadata: name: <pool-name> namespace: openshift-storage spec: replicated: size: 3 parameters: bulk: "true" -
Aplique o arquivo de configuração.
oc apply -f <pool-config-file>.yamlDepois 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.
-
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 -
Verifique o status de cada OSD para confirmar se os OSDs estão em
upein.oc rsh -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) ceph osd status