Cassandra für die Produktion konfigurieren

In diesem Thema werden die Schritte beschrieben, die zum Konfigurieren der Cassandra-Datenbankkomponente für eine Apigee-Hybrid-Produktionsinstallation konfigurieren werden müssen.

Hochverfügbarkeit gewährleisten

Cassandra-Cluster benötigen drei Verfügbarkeitszonen, um die Verfügbarkeit in einer Produktionsumgebung beizubehalten. Wenn eine Zone ausfällt, werden die verbleibenden Zonen weiterhin auf Anfragen antworten und die verbleibende Zone ist wieder online. Wenn zwei oder mehr Zonen ausfallen, kann Cassandra erst auf Anfragen antworten, wenn mindestens zwei Zonen wieder online sind. Apigee empfiehlt, Zonen innerhalb von drei Stunden wieder online zu stellen, um das Risiko fehlender Datenaktualisierungen zu minimieren.

Cassandra-Speichereinstellungen konfigurieren

Für Apigee-Hybrid-Produktionsinstallationen empfiehlt Google, dass Sie folgende Speicher- und Heap-Einstellungen zu Ihrer Überschreibungsdatei hinzufügen und auf den Cluster anwenden:

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

Wenden Sie Änderungen mit dem folgenden Befehl auf Cassandra an:

helm upgrade datastore apigee-datastore/ \
--namespace apigee \
--atomic \
-f OVERRIDES_FILE.yaml

replicaCount

Der Wert von replicaCount muss ein Vielfaches von 3 sein. Ziehen Sie Folgendes in Betracht, um den gewünschten replicaCount-Wert zu ermitteln:

  • Schätzen Sie die Traffic-Anforderungen für Ihre Proxys.
  • Lasttest ausführen und vernünftige Vorhersagen für Ihre CPU-Auslastung treffen.
  • Sie können in verschiedenen Regionen unterschiedliche Werte für replicaCount angeben.
  • Sie können replicaCount in der Zukunft in Ihrer Überschreibungsdatei maximieren.

storageclass

Für die Produktion muss Cassandra-Speicher eine SSD-StorageClass sein. Legen Sie den Wert von storageclass fest, wenn Sie nicht die standardmäßige Kubernetes-StorageClass für Ihren Cluster verwenden. Sie können die Standard-StorageClass mit dem folgenden Befehl prüfen.

kubectl get storageclass

Die Ausgabe sollte in etwa so aussehen:

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

Folgen Sie der Anleitung unter StorageClass-Konfiguration, wenn Sie die Standard-Kubernetes-StorageClass ändern möchten.

Führen Sie den folgenden Befehl in Ihrem Cluster aus, um die aktuelle storageclass-Einstellung zu prüfen:

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

capacity

Für Produktionsinstallationen empfiehlt Google eine Speicherkapazität von mindestens 500 GiB (Gibibyte). Sie können die Speicherkapazität entsprechend den Speicheranforderungen Ihres Clusters ändern. Eine Anleitung zum Ändern der Speicherkapazität finden Sie unter Nichtflüchtige Cassandra-Volumes erweitern.

Führen Sie den folgenden Befehl in Ihrem Cluster aus, um die aktuelle Kapazitätseinstellung zu prüfen:

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

cpu und memory

Für Produktionsinstallationen empfiehlt Google mindestens 7 CPUs und mindestens 15 GiB (Gibibyte) pro Pod. Berücksichtigen Sie bei der Angabe von cassandra.resources.requests.cpu und cassandra.resources.requests.memory das Traffic-Volumen sowie die CPU- und Speicheranforderungen Ihrer Proxys.

Führen Sie den folgenden Befehl in Ihrem Cluster aus, um die aktuelle CPU-Einstellung zu prüfen:

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

Führen Sie den folgenden Befehl in Ihrem Cluster aus, um die aktuelle Speichereinstellung zu prüfen:

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

maxHeapSize und heapNewSize

Diese Attribute bestimmen den maximalen Arbeitsspeicher-Heap, der Cassandra-Prozessen zugewiesen ist, sowie den Betrag, um den der Arbeitsspeicher in Megabyte erhöht wird. Heap-Größen werden in Megabyte, nicht in Mebibyte angegeben. Für Produktionsumgebungen empfiehlt Google die folgenden Werte:

  • maxHeapSize: 8192M
  • heapNewSize: 1200M

Informationen zu optimalen Heap-Größenwerten finden Sie in der Dokumentation Ihres Kubernetes-Plattformanbieters.

Führen Sie den folgenden Befehl in Ihrem Cluster aus, um die aktuelle maxHeapSize-Einstellung zu prüfen:

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

Führen Sie den folgenden Befehl in Ihrem Cluster aus, um die aktuelle heapNewSize-Einstellung zu prüfen:

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

Weitere Informationen zu diesen Property-Einstellungen finden Sie in der Referenz zu Konfigurationsattributen.

SSD-Speicher für Produktionsbereitstellungen verwenden

Für die Cassandra-Datenbank unterstützt die Hybridlaufzeit nur die Verwendung von dynamisch erstellten nichtflüchtigen Volumes zum Speichern von Daten. Lokale SSD-Laufwerke (Solid State Disk) werden nicht unterstützt.

Wenn Sie derzeit keine SSD für Cassandra konfiguriert haben, müssen Sie eine StorageClass-Definition konfigurieren, die von einer SSD unterstützt wird, und diese als Standardklasse festlegen. Detaillierte Schritte finden Sie unter StorageClass-Konfiguration.

Folgen Sie der Anleitung unter StorageClass-Konfiguration, wenn Sie die Standard-Kubernetes-StorageClass ändern möchten.