Espaço em disco insuficiente no Cassandra

Sintoma

O processo de instalação do híbrido da Apigee falha devido ao espaço em disco insuficiente para o banco de dados do Cassandra. O processo de instalação falha com a seguinte mensagem de erro:

Error: UPGRADE FAILED: cannot patch "default" with kind ApigeeDatastore:
Internal error occurred

Além disso, o registro do Cassandra contém um aviso semelhante a este:

WARN  [main] 2024-06-18 12:34:55,583 DatabaseDescriptor.java:579 - Only
62.440GiB free across all data volumes. Consider adding more capacity to your
cluster or removing obsolete snapshots

Etapas comuns do diagnóstico

Use o script must-gather da Apigee híbrida para coletar os registros dos pods do Cassandra e fazer uma análise.

Possível causa

Causa Descrição
Sem espaço em disco O espaço disponível em disco para o Cassandra é inferior a 50%.

Causa 1: sem espaço em disco

Ao fazer upgrade da Apigee híbrida, verifique se você tem mais de 50% de espaço em disco disponível para todos os pods do Cassandra.

Diagnóstico

  1. No script Apigee hybrid must-gather, examine a saída do seguinte comando para verificar o tamanho total do volume associado ao Cassandra:

    kubectl get pv -n APIGEE_NAMESPACE

    Exemplo de saída

    NAME                                     CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM                                            STORAGECLASS   VOLUMEATTRIBUTESCLASS   REASON    AGE
    pvc-0b6b2daa-d512-4780-9021-fc97293a8154 10Gi     RWO          Delete         Bound  apigee/cassandra-data-apigee-cassandra-default-1 standard-rwo    <unset>                 -        20d
    pvc-2263fc7c-e057-406a-ad60-38573733c92d 10Gi     RWO          Delete         Bound  apigee/cassandra-data-apigee-cassandra-default-2 standard-rwo    <unset>                 -        20d
    pvc-8c854fe9-adaa-440f-90d9-d15497e7f530 10Gi     RWO          Delete         Bound  apigee/cassandra-data-apigee-cassandra-default-0 standard-rwo    <unset>                 -        20d
    
  2. Verifique a saída de status nodetool para conferir o disco usado por cada pod do Cassandra. A utilização do espaço em disco para declarações de volume permanente (PVCs, na sigla em inglês) atribuídas a pods do Cassandra não pode exceder 50% da capacidade de armazenamento disponível. Consulte o seguinte comando:
    kubectl -n APIGEE_NAMESPACE -c apigee-cassandra exec apigee-cassandra-default-1 -- bash -c 'nodetool -u cassandra -pw $CASS_PASSWORD status'

    Em que CASS_PASSWORD é o cassandra.auth.default.password, conforme mencionado na referência da propriedade de configuração.

    Exemplo de saída

    Datacenter: us-west3
    ========================
    Status=Up/Down
    |/ State=Normal/Leaving/Joining/Moving
    --  Address      Load        Tokens  Owns (effective)  Host ID                               Rack
    UN  10.10.10.1   6.69 GiB   256     100.0%            2a184030-444-4155-8375-156e87539711      a
    UN  10.10.10.2   7.42 GiB   256     53.1%             f22b66c7-4444-4000-b9c0-5a71ee6315a8     c
    UJ  10.10.10.3   7.39 GiB   256     ?                 78fb2737-4444-4468-a786-e473ead115b5     b
    UN  10.10.10.4   7.81 GiB   256     47.0%             779fcdf1-4444-4186-bcbb-2844e59629c2     b
    UN  10.10.10.5   6.91 GiB   256     53.0%             55ca07b2-4444-4967-b321-6477d50f9846     b
    UN  10.10.10.6   7.41 GiB   256     46.9%             0cf33585-444-46ce-811f-9c6376ed58ac      c
    

    (Opcional) Use kubectl para executar um comando no contêiner do Cassandra e verificar a porcentagem de uso do disco.

    kubectl exec -it apigee-cassandra-default-0 -n apigee – df -h /opt/apigee/data
    kubectl exec -it apigee-cassandra-default-1 -n apigee – df -h /opt/apigee/data
    kubectl exec -it apigee-cassandra-default-2 -n apigee – df -h /opt/apigee/data
    

    Exemplo

    O exemplo a seguir mostra onde a utilização do espaço em disco é superior a 50%. Isso causaria problemas para upgrades da Apigee híbrida.

    kubectl exec -it apigee-cassandra-default-0 -n apigee -- df -h /opt/apigee/data
    

    Defaulted container "apigee-cassandra" out of: apigee-cassandra, apigee-cassandra-ulimit-init (init) Filesystem Size Used Avail Use% Mounted on /dev/sdb 10G 6G 4G 60% /opt/apigee/data

    kubectl exec -it apigee-cassandra-default-1 -n apigee -- df -h /opt/apigee/data

    Defaulted container "apigee-cassandra" out of: apigee-cassandra, apigee-cassandra-ulimit-init (init) Filesystem Size Used Avail Use% Mounted on /dev/sdb 10G 5.9G 4.1G 59% /opt/apigee/data

    kubectl exec -it apigee-cassandra-default-2 -n apigee -- df -h /opt/apigee/data

    Defaulted container "apigee-cassandra" out of: apigee-cassandra, apigee-cassandra-ulimit-init (init) Filesystem Size Used Avail Use% Mounted on /dev/sdb 10G 5.6G 4.4G 56% /opt/apigee/data

Resolução

Se a utilização do disco estiver acima de 50%, dimensione a capacidade do disco do Cassandra para garantir que ela esteja abaixo de 50% antes de fazer um upgrade da Apigee híbrida.

Para aumentar a capacidade do disco, consulte Gerenciar o tamanho do armazenamento permanente do Cassandra.

É necessário coletar informações de diagnóstico

Se o problema persistir mesmo depois de seguir as instruções acima, reúna as seguintes informações de diagnóstico e entre em contato com o Suporte do Google Cloud:
  • O ID do seu projeto do Google Cloud.
  • Sua organização da Apigee híbrida.
  • Os arquivos overrides.yaml das regiões de origem e novas (mascare as informações sensíveis).
  • As saídas dos comandos em Apigee híbrida must-gather.