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.