Expandir volumes permanentes do Cassandra

Esse processo permite expandir os volumes permanentes usados pelo banco de dados híbrido do Cassandra da Apigee para acomodar maiores necessidades de armazenamento sem precisar criar novos nós apenas para fornecer mais armazenamento.

Visão geral

O componente cassandra híbrido da Apigee usa volumes permanentes para armazenar dados. O tamanho do volume permanente é definido durante a instalação e a configuração inicial. Esse tamanho de armazenamento inicial é um valor imutável e não pode ser alterado. Portanto, qualquer novo nó adicionado ao cluster usará o mesmo tamanho de volume permanente.

É possível aumentar o tamanho do volume permanente existente fazendo alterações diretamente na reivindicação de volume permanente, mas novos nós ainda usarão o tamanho de volume permanente inicial menor.

Se seu banco de dados híbrido do Cassandra estiver próximo à capacidade de armazenamento, use este procedimento para expandir os volumes permanentes existentes e permitir que novos nós também expandam os respectivos volumes permanentes.

Expandir volumes permanentes do Cassandra

  1. Atualize o tamanho do volume para o tamanho desejado:
    kubectl -n apigee edit pvc
  2. Verifique a capacidade de volume atualizada:
     kubectl get pvc -n apigee
    NAME                                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    cassandra-data-apigee-cassandra-default-0   Bound    pvc-92234ba7-941b-4dab-82c6-8a5288a2c8d4   100Gi      RWO            standard       21m
    cassandra-data-apigee-cassandra-default-1   Bound    pvc-6be911fc-91f7-465d-a02e-933428ee10b2   100Gi      RWO            standard       20m
    cassandra-data-apigee-cassandra-default-2   Bound    pvc-14ba34e4-fd5c-4d59-8413-a331dcad3404   100Gi      RWO            standard       19m
  3. Defina réplicas como 0 para implantações apigee-controller-manager no namespace apigee-system:
    1. kubectl get deployments -n apigee-system
      NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-controller-manager   1/1     1            1           28m
    2. kubectl edit deployments -n apigee-system apigee-controller-manager
    3. kubectl get deployments -n apigee-system
      NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-controller-manager   0/0     0            0           30m
  4. Faça backup, exclua e recrie o statefulset com o novo tamanho de armazenamento. Os componentes a seguir criam um arquivo de configuração apigee-cassandra-default.yaml que pode ser usado para capturar a configuração atual do Cassandra. Em seguida, você modifica e aplica esta configuração:
    1. kubectl -n apigee get sts apigee-cassandra-default -o yaml > apigee-cassandra-default.yaml
    2. kubectl -n apigee delete sts --cascade=false apigee-cassandra-default
    3. Verifique se a operação delete foi concluída:
      kubectl get sts -n apigee

      A resposta será parecida com esta:

      No resources found in apigee namespace.
    4. Atualize o tamanho do armazenamento no arquivo apigee-cassandra-default.yaml com o novo tamanho de armazenamento. Ele precisa corresponder ao tamanho que você pretende aplicar no overrides.yaml. Por exemplo:
           resources:
              requests:
                storage: 100Gi
    5. Reaplique a configuração com estado ao tamanho de armazenamento atualizado:
      kubectl apply -f apigee-cassandra-default.yaml
    6. Verifique se o statefulset foi recriado corretamente:
      kubectl get sts -n apigee

      A resposta será semelhante a esta:

      NAME                       READY   AGE
      apigee-cassandra-default   3/3     6m56s
  5. Atualize o arquivo de substituições com o novo tamanho do volume especificado quando você editou o pvc:
    cassandra:
      storage:
        capacity: 100Gi
  6. Aplique a configuração atualizada ao cluster:
    ../apigeectl apply --datastore -f overrides/overrides.yaml
    Parsing file: config/values.yaml
    Parsing file: overrides/overrides.yaml
    cleansing older AD's (v1alpha1) istio resources...
    
    Invoking "kubectl apply" with YAML config...
    
    apigeedatastore.apigee.cloud.google.com/apigee-cassandra unchanged
  7. Atualize as réplicas de implantação do controlador para o estado anterior (`1`):
    kubectl edit deployments -n apigee-system apigee-controller-manager
  8. Verifique se as variáveis recém-criadas têm o tamanho do armazenamento atualizado:
    kubectl get sts -n apigee apigee-cassandra -o yaml |grep storage
    storage: 100Gi
  9. Verifique se o volume de dados dos pods C* foi atualizado com o novo tamanho:

    kubectl exec -n apigee -it apigee-cassandra-default-0 -- df -h|grep "/opt/apigee/data"
    /dev/sdb         99G   69M   99G   1% /opt/apigee/data