Configurar o Cassandra para produção

Neste tópico, descrevemos as etapas necessárias para configurar o componente de banco de dados do Cassandra para uma instalação de produção da Apigee híbrida.

Garanta alta disponibilidade

Os clusters do Cassandra precisam de três zonas de disponibilidade para manter a disponibilidade em um ambiente de produção. Se uma zona ficar inativa, as restantes continuarão respondendo a solicitações até a zona remanescente ficar on-line novamente. Se duas ou mais zonas ficarem inativas, o Cassandra não responderá a solicitações até que pelo menos duas zonas fiquem on-line. A Apigee recomenda colocar as zonas on-line novamente em três horas para minimizar o risco de perda de atualizações de dados.

Aplicar as configurações de armazenamento do Cassandra

Para aplicar alterações às configurações de armazenamento do Cassandra no arquivo de substituições, execute os seguintes comandos:

$APIGEECTL_HOME/apigeectl init -f overrides/OVERRIDES_FILE
$APIGEECTL_HOME/apigeectl apply -f overrides/OVERRIDES_FILE

Definir as configurações de armazenamento do Cassandra

Para uma instalação de produção da Apigee híbrida, o Google recomenda que você adicione as seguintes configurações de armazenamento e heap ao arquivo de modificações e aplique-as ao cluster:

cassandra:
  ...
  replicaCount: 3
  storage:
    storageclass: your-preferred-ssd-storage #If not using default storage for your cluster
    capacity: 500Gi
  resources:
    requests:
      cpu: 7
      memory: 15Gi
  maxHeapSize: 8192M
  heapNewSize: 1200M

replicaCount

O valor de replicaCount precisa ser um múltiplo de 3. Para determinar o valor replicaCount desejado, considere o seguinte:

  • Estime as demandas de tráfego dos proxies.
  • Carregue o teste e faça previsões razoáveis de uso da CPU.
  • É possível especificar valores replicaCount diferentes em regiões diferentes.
  • Você pode expandir o replicaCount no futuro no arquivo de modificações.

Para verificar a configuração atual do replicaCount, execute o seguinte comando no cluster:

kubectl get sts -n NAMESPACE apigee-cassandra-default -o=jsonpath='{.spec.replicas}'
  

storageclass

Para produção, o armazenamento do Cassandra precisa ser um StorageClass SSD. Defina o valor de storageclass se você não estiver usando o StorageClass padrão do Kubernetes para o cluster. Você pode verificar o StorageClass padrão com o comando a seguir.

kubectl get storageclass

A resposta será semelhante a esta:

NAME                     PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
premium-rwo              pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   6d23h
standard                 kubernetes.io/gce-pd    Delete          Immediate              true                   6d23h
standard-rwo (default)   pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   6d23h

Siga as instruções em Configuração do StorageClass se você quiser alterar o StorageClass padrão do Kubernetes.

Para verificar a configuração atual do storageclass, execute o seguinte comando no cluster:

kubectl get pvc -n NAMESPACE cassandra-data-apigee-cassandra-default-0 -o=jsonpath='{.metadata.annotations.volume\.beta\.kubernetes\.io/storage-class}'
  

capacity

Para instalações de produção, o Google recomenda uma capacidade de armazenamento de pelo menos 500 Gi (gibibytes). É possível alterar a capacidade de armazenamento de acordo com as necessidades de armazenamento do cluster. Consulte as instruções em Expandir volumes permanentes do Cassandra para alterar a capacidade de armazenamento.

Para verificar a configuração de capacidade atual, execute o seguinte comando no cluster:

kubectl get pvc -n NAMESPACE cassandra-data-apigee-cassandra-default-0 -o=jsonpath='{.spec.resources.requests.storage}'
  

cpu e memory

Para instalações de produção, o Google recomenda pelo menos 7 CPUs e um mínimo de 15 Gi (gibibytes) por pod. Ao especificar cassandra.resources.requests.cpu e cassandra.resources.requests.memory, considere o volume de tráfego e as demandas de CPU e memória dos proxies.

Para verificar a configuração atual da CPU, execute o seguinte comando no cluster:

kubectl get pods -n NAMESPACE apigee-cassandra-default-0 -o=jsonpath='{.spec.containers[].resources.requests.cpu}'
  

Para verificar a configuração de memória atual, execute o seguinte comando no cluster:

kubectl get pods -n NAMESPACE apigee-cassandra-default-0 -o=jsonpath='{.spec.containers[].resources.requests.memory}'
  

maxHeapSize e heapNewSize

Essas propriedades determinam o heap máximo de memória alocado para os processos do cassandra e a quantidade pela qual a memória é aumentada, respectivamente, em megabytes (os tamanhos de heap são especificados em megabytes, não em mebibytes). Para ambientes de produção, o Google recomenda os seguintes valores:

  • maxHeapSize: 8192M
  • heapNewSize: 1200M

Consulte a documentação do seu provedor da plataforma Kubernetes para ver os valores de tamanho de heap ideais.

Para verificar a configuração atual do maxHeapSize, execute o seguinte comando no cluster:

kubectl get sts -n NAMESPACE apigee-cassandra-default -o=jsonpath='{.spec.template.spec.containers[].env[?(@.name=="MAX_HEAP_SIZE")]}'
  

Para verificar a configuração atual do heapNewSize, execute o seguinte comando no cluster:

kubectl get sts -n NAMESPACE apigee-cassandra-default -o=jsonpath='{.spec.template.spec.containers[].env[?(@.name=="HEAP_NEWSIZE")]}'
  

Para mais informações sobre essas configurações de propriedades, consulte a Referência da propriedades de configuração.

Usar o armazenamento SSD para implantações de produção

Para o banco de dados do Cassandra, o ambiente de execução híbrido aceita apenas o uso de volumes permanentes criados dinamicamente para armazenar dados. As unidades de disco de estado sólido (SSD) locais não são compatíveis.

Se você não tiver o SSD configurado para o Cassandra atualmente, precisará configurar uma definição do StorageClass que seja apoiada por uma unidade de estado sólido (SSD) e torná-la o padrão. Consulte as etapas detalhadas em Configuração de StorageClass.

Siga as instruções em Configuração do StorageClass se você quiser alterar o StorageClass padrão do Kubernetes.