Configure o Cassandra para produção

Este tópico descreve os passos que tem de seguir para configurar o componente da base de dados Cassandra para uma instalação de produção do Apigee hybrid.

Garantir alta disponibilidade

Os clusters do Cassandra precisam de três zonas de disponibilidade para manter a disponibilidade num ambiente de produção. Se uma zona ficar inativa, as zonas restantes continuam a responder aos pedidos enquanto a zona inativa volta a ficar online. Se duas ou mais zonas ficarem indisponíveis, o Cassandra não consegue responder a pedidos até, pelo menos, duas zonas voltarem a ficar online. A Apigee recomenda que volte a colocar as zonas online no prazo de três horas para minimizar o risco de perder atualizações de dados.

Aplique as definições de armazenamento do Cassandra

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

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

Configure as definições de armazenamento do Cassandra

Para uma instalação de produção do Apigee hybrid, a Google recomenda que adicione as seguintes definições de armazenamento e memória dinâmica ao seu ficheiro de substituições e as aplique 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 tem de ser um múltiplo de 3. Para determinar o valor replicaCount desejado, considere o seguinte:

  • Estime as exigências de tráfego para os seus proxies.
  • Faça um teste de carga e previsões razoáveis da utilização da CPU.
  • Pode especificar valores replicaCount diferentes em regiões diferentes.
  • Pode expandir o replicaCount no futuro no ficheiro de substituições.

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

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

storageclass

Para a produção, o armazenamento do Cassandra tem de ser uma StorageClass de SSD. Defina o valor de storageclass se não estiver a usar a StorageClass do Kubernetes predefinida para o seu cluster. Pode verificar a StorageClass predefinida com o seguinte comando.

kubectl get storageclass

O resultado deve ter um aspeto semelhante ao seguinte:

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 na configuração StorageClass se quiser alterar a StorageClass do Kubernetes predefinida.

Para verificar a definição storageclass atual, 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, a Google recomenda uma capacidade de armazenamento de, pelo menos, 500 Gi (gibibytes). Pode alterar a capacidade de armazenamento em função das necessidades de armazenamento do cluster. Consulte as instruções em Expanda os volumes persistentes do Cassandra para alterar a capacidade de armazenamento.

Para verificar a definiçã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, a Google recomenda, pelo menos, 7 CPUs e um mínimo de 15 Gi (gibibytes) por pod. Quando especificar cassandra.resources.requests.cpu e cassandra.resources.requests.memory, considere o volume de tráfego e as exigências de CPU e memória dos seus proxies.

Para verificar a definiçã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 definiçã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

Estas propriedades determinam a quantidade máxima de memória atribuída aos processos do Cassandra e a quantidade pela qual a memória é aumentada, respetivamente, em megabytes (os tamanhos da memória atribuída são especificados em megabytes, e não em mebibytes). Para ambientes de produção, a Google recomenda os seguintes valores:

  • maxHeapSize: 8192M
  • heapNewSize: 1200M

Consulte a documentação do fornecedor da plataforma Kubernetes para ver os valores ideais do tamanho da memória dinâmica.

Para verificar a definição maxHeapSize atual, 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 definição heapNewSize atual, 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 estas definições da propriedade, consulte a referência da propriedade de configuração.

Use armazenamento SSD para implementações de produção

Para a base de dados Cassandra, o tempo de execução híbrido só suporta a utilização de volumes persistentes criados dinamicamente para armazenar dados. Os discos rígidos (SSD) locais não são suportados.

Se não tiver atualmente o SSD configurado para o Cassandra, tem de configurar uma definição de StorageClass com base num disco de estado sólido (SSD) e torná-la na classe predefinida. Consulte a configuração de StorageClass para ver os passos detalhados.

Siga as instruções na configuração StorageClass se quiser alterar a StorageClass do Kubernetes predefinida.