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.
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
Aplique as alterações no cassandra com o seguinte comando:
Helm
helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f OVERRIDES_FILE.yaml
apigeectl
$APIGEECTL_HOME/apigeectl init -f OVERRIDES_FILE.yaml
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml --datastore
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.
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="{['.spec.storageClassName', '.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.