Este tópico aborda como dimensionar o Cassandra horizontal e verticalmente, e como dimensionar o Cassandra.
Escalar o Cassandra horizontalmente
Para aumentar a escala do Cassandra horizontalmente
- Certifique-se de que o seu conjunto de nós
apigee-data
tem capacidade adicional, conforme necessário, antes de dimensionar o Cassandra. Consulte também o artigo Configure pools de nós dedicados. - Defina o valor da propriedade de configuração
cassandra.replicaCount
no ficheiro de substituições. Para obter informações acerca desta propriedade, consulte a referência da propriedade de configuração. Consulte também o artigo Faça a gestão dos componentes do plano de tempo de execução. - Aplique as alterações. Por exemplo:
$APIGEE_HOME/apigeectl apply --datastore -f overrides/overrides.yaml
Dimensionar o Cassandra verticalmente
Esta secção explica como dimensionar verticalmente os pods do Cassandra para acomodar requisitos de CPU e memória mais elevados.
Vista geral
Para uma implementação de produção híbrida do Apigee, recomendamos que crie, pelo menos, dois conjuntos de nós separados: um para serviços com estado (Cassandra) e outro para serviços sem estado (tempo de execução). Por exemplo, consulte os requisitos do cluster de produção do GKE.
Para o conjunto de nós do Cassandra com estado, recomendamos que comece com 8 núcleos de CPU e 30 GB de memória. Após o aprovisionamento do conjunto de nós, não é possível alterar estas definições. Consulte também o artigo Configure o Cassandra para produção.
Se precisar de aumentar a escala dos pods do Cassandra para satisfazer requisitos de CPU e memória mais elevados, siga os passos descritos neste tópico.
Aumentar a escala dos pods do Cassandra
Siga estes passos para aumentar a CPU e a memória do conjunto de nós com estado usado para o Cassandra:
- Siga as instruções da sua plataforma Kubernetes para adicionar um novo conjunto de nós ao cluster. As plataformas compatíveis estão listadas nas instruções de instalação.
- Verifique se o novo conjunto de nós está pronto:
kubectl get nodes -l NODE_POOL_LABEL_NAME=NODE_POOL_LABEL_VALUE
Exemplo de comando:
kubectl get nodes -l cloud.google.com/gke-nodepool=apigee-data-new
Exemplo de saída:
NAME STATUS ROLES AGE VERSION gke-apigee-data-new-441387c2-2h5n Ready <none> 4m28s v1.14.10-gke.17 gke-apigee-data-new-441387c2-6941 Ready <none> 4m28s v1.14.10-gke.17 gke-apigee-data-new-441387c2-nhgc Ready <none> 4m29s v1.14.10-gke.17
- Atualize o ficheiro de substituições para usar o novo conjunto de nós para o Cassandra e
atualize os recursos do pod para a quantidade de CPUs e o tamanho da memória aumentados que
quer usar. Por exemplo, para um cluster do GKE, use uma configuração semelhante à seguinte.
Se estiver noutra plataforma Kubernetes, tem de ajustar o valor
apigeeData.key
em conformidade:nodeSelector: requiredForScheduling: true apigeeData: key: "NODE_POOL_LABEL_NAME" value: "NODE_POOL_LABEL_VALUE" cassandra: resources: requests: cpu: NODE_POOL_CPU_NUMBER memory: NODE_POOL_MEMORY_SIZE
Por exemplo:
nodeSelector: requiredForScheduling: true apigeeData: key: "cloud.google.com/gke-nodepool" value: "apigee-data-new" cassandra: resources: requests: cpu: 14 memory: 16Gi
- Aplique o ficheiro de substituições ao cluster:
$APIGEECTL_HOME/apigeectl apply -f ./overrides/overrides.yaml --datastore
Quando concluir estes passos, os pods do Cassandra começam a ser implementados no novo conjunto de nós.
Reduzir a escala do Cassandra
O Apigee hybrid usa um anel de nós do Cassandra como um StatefulSet. O Cassandra oferece armazenamento persistente para determinadas entidades do Apigee no plano de tempo de execução. Para mais informações sobre o Cassandra, consulte o artigo Acerca do plano de tempo de execução.
O Cassandra é um serviço com utilização intensiva de recursos e não deve ser implementado num pod com outros serviços híbridos. Consoante a carga, é recomendável reduzir o número de nós do Cassandra no anel no seu cluster.
O processo geral para reduzir um anel do Cassandra é o seguinte:
- Desative um nó do Cassandra.
- Atualize a propriedade
cassandra.replicaCount
emoverrides.yaml
. - Aplique a atualização da configuração.
- Repita estes passos para cada nó que quer remover.
- Elimine a reivindicação de volume persistente ou o volume, consoante a configuração do cluster.
O que precisa de saber
- Execute esta tarefa num nó de cada vez antes de avançar para o nó seguinte.
- Se qualquer nó que não seja o nó a ser desativado estiver em mau estado, não continue. O Kubernetes não vai poder reduzir a escala dos pods do cluster.
- Reduza ou aumente sempre por um fator de três nós.
Pré-requisitos
Antes de reduzir o número de nós do Cassandra no anel, valide se o cluster está em bom estado e se todos os nós estão em funcionamento, conforme mostra o exemplo seguinte:
kubectl get pods -n yourNamespace -l app=apigee-cassandra NAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 2h apigee-cassandra-default-1 1/1 Running 0 2h apigee-cassandra-default-2 1/1 Running 0 2h apigee-cassandra-default-3 1/1 Running 0 16m apigee-cassandra-default-4 1/1 Running 0 14m apigee-cassandra-default-5 1/1 Running 0 13m
kubectl -n yourNamespace exec -it apigee-cassandra-default-0 nodetool status Datacenter: us-east1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.16.2.6 690.17 KiB 256 48.8% b02089d1-0521-42e1-bbed-900656a58b68 ra-1 UN 10.16.4.6 700.55 KiB 256 51.6% dc6b7faf-6866-4044-9ac9-1269ebd85dab ra-1 to UN 10.16.11.11 144.36 KiB 256 48.3% c7906366-6c98-4ff6-a4fd-17c596c33cf7 ra-1 UN 10.16.1.11 767.03 KiB 256 49.8% ddf221aa-80aa-497d-b73f-67e576ff1a23 ra-1 UN 10.16.5.13 193.64 KiB 256 50.9% 2f01ac42-4b6a-4f9e-a4eb-4734c24def95 ra-1 UN 10.16.8.15 132.42 KiB 256 50.6% a27f93af-f8a0-4c88-839f-2d653596efc2 ra-1
Desative os nós do Cassandra
-
Desative os nós do Cassandra do cluster através do comando nodetool.
kubectl -n yourNamespace exec -it nodeName nodetool decommission
Por exemplo, este comando desativa
apigee-cassandra-5
, o nó com o valor numérico mais elevado no nome:kubectl -n apigee exec -it apigee-cassandra-5 nodetool decommission
- Aguarde a conclusão da desativação e verifique se o cluster tem agora menos um nó. Por exemplo:
kubectl -n yourNamespace exec -it nodeName nodetool status Datacenter: us-east1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.16.2.6 710.37 KiB 256 59.0% b02089d1-0521-42e1-bbed-900656a58b68 ra-1 UN 10.16.4.6 720.97 KiB 256 61.3% dc6b7faf-6866-4044-9ac9-1269ebd85dab ra-1 UN 10.16.1.11 777.11 KiB 256 58.9% ddf221aa-80aa-497d-b73f-67e576ff1a23 ra-1 UN 10.16.5.13 209.23 KiB 256 62.2% 2f01ac42-4b6a-4f9e-a4eb-4734c24def95 ra-1 UN 10.16.8.15 143.23 KiB 256 58.6% a27f93af-f8a0-4c88-839f-2d653596efc2 ra-1
- Atualize ou adicione a propriedade
cassandra.replicaCount
no ficheirooverrides.yaml
. Por exemplo, se o número atual de nós for 6, altere-o para 5:cassandra: replicaCount: 5 # (n-1 5 in this example)
- Aplique a alteração de configuração ao cluster:
./apigeectl apply --datastore namespace/apigee unchanged secret/ssl-cassandra unchanged storageclass.storage.k8s.io/apigee-gcepd unchanged service/apigee-cassandra unchanged statefulset.apps/apigee-cassandra configured
- Verifique se todos os nós restantes do Cassandra estão em execução:
kubectl get pods -n yourNamespace -l app=apigee-cassandra NAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 3h apigee-cassandra-default-1 1/1 Running 0 3h apigee-cassandra-default-2 1/1 Running 0 2h apigee-cassandra-default-3 1/1 Running 0 25m apigee-cassandra-default-4 1/1 Running 0 24m
- Repita os passos 1 a 5 para cada nó que quer desativar.
- Quando terminar de desativar os nós, verifique se o valor de
cassandra.replicaCount
é igual ao número de nós devolvidos pelo comandonodetool status
.Por exemplo, se reduzir a escala do Cassandra para três nós:
kubectl -n yourNamespace exec -it apigee-cassandra-default-0 nodetool status Datacenter: us-east1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.16.2.6 710.37 KiB 256 59.0% b02089d1-0521-42e1-bbed-900656a58b68 ra-1 UN 10.16.4.6 720.97 KiB 256 61.3% dc6b7faf-6866-4044-9ac9-1269ebd85dab ra-1 UN 10.16.5.13 209.23 KiB 256 62.2% 2f01ac42-4b6a-4f9e-a4eb-4734c24def95 ra-1
- Depois de reduzir o tamanho do cluster do Cassandra, certifique-se de que elimina o PVC (PersistentVolumeClaim) para garantir que o evento de expansão seguinte não usa o mesmo volume persistente e os dados criados anteriormente.
Obtenha os nomes dos PVCs:
kubectl get pvc -n yourNamespace NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE cassandra-data-apigee-cassandra-default-0 Bound pvc-f9c2a5b9-818c-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 7h cassandra-data-apigee-cassandra-default-1 Bound pvc-2956cb78-818d-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 7h cassandra-data-apigee-cassandra-default-2 Bound pvc-79de5407-8190-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 7h cassandra-data-apigee-cassandra-default-3 Bound pvc-d29ba265-81a2-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 5h cassandra-data-apigee-cassandra-default-4 Bound pvc-0675a0ff-81a3-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 5h cassandra-data-apigee-cassandra-default-5 Bound pvc-354afa95-81a3-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 5h
Neste exemplo, os seguintes PVCs correspondem aos três nós desativados:
cassandra-data-apigee-cassandra-5
cassandra-data-apigee-cassandra-4
cassandra-data-apigee-cassandra-3
-
Elimine os PVCs:
kubectl -n yourNamespace delete pvc cassandra-data-apigee-cassandra-5 persistentvolumeclaim "cassandra-data-apigee-cassandra-5" deleted
kubectl -n yourNamespace delete pvc cassandra-data-apigee-cassandra-4 persistentvolumeclaim "cassandra-data-apigee-cassandra-4" deleted
kubectl -n yourNamespace delete pvc cassandra-data-apigee-cassandra-3 persistentvolumeclaim "cassandra-data-apigee-cassandra-3" deleted
-
Verifique se o PVC foi eliminado:
kubectl get pvc -n yourNamespace NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE cassandra-data-apigee-cassandra-default-0 Bound pvc-f9c2a5b9-818c-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 7h cassandra-data-apigee-cassandra-default-1 Bound pvc-2956cb78-818d-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 7h cassandra-data-apigee-cassandra-default-2 Bound pvc-79de5407-8190-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 7h cassandra-data-apigee-cassandra-default-3 Bound pvc-d29ba265-81a2-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 5h cassandra-data-apigee-cassandra-default-4 Bound pvc-0675a0ff-81a3-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 5h
- Se estiver a usar a instalação do Anthos, elimine o volume persistente do cluster do Kubernetes do Anthos usando a mesma sequência.
Obtenha os nomes dos volumes persistentes:
kubectl get pv -n youNamespace NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-0675a0ff-81a3-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-default-4 apigee-gcepd 5h pvc-2956cb78-818d-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-default-1 apigee-gcepd 7h pvc-354afa95-81a3-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-default-5 apigee-gcepd 5h pvc-79de5407-8190-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-default-2 apigee-gcepd 7h pvc-d29ba265-81a2-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-default-3 apigee-gcepd 5h pvc-f9c2a5b9-818c-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-default-0 apigee-gcepd 7h
Neste exemplo, os seguintes volumes correspondem aos três nós desativados:
- 5:
pvc-354afa95-81a3-11e9-8862-42010a8e014a
- 4:
pvc-0675a0ff-81a3-11e9-8862-42010a8e014a
- 3:
pvc-d29ba265-81a2-11e9-8862-42010a8e014a
- 5:
-
Elimine os volumes persistentes:
kubectl -n yourNamespace delete pv pvc-354afa95-81a3-11e9-8862-42010a8e014a
kubectl -n yourNamespace delete pv pvc-0675a0ff-81a3-11e9-8862-42010a8e014a
kubectl -n yourNamespace delete pv pvc-d29ba265-81a2-11e9-8862-42010a8e014a
-
Verifique se os volumes persistentes foram eliminados:
kubectl get pv -n youNamespace NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-2956cb78-818d-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-default-1 apigee-gcepd 7h pvc-79de5407-8190-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-default-2 apigee-gcepd 7h pvc-f9c2a5b9-818c-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-default-0 apigee-gcepd 7h