為實際工作環境設定 Cassandra

本主題說明如何設定 Apigee Hybrid 實際工作環境安裝作業的 Cassandra 資料庫元件,包括必要和建議步驟。

必要設定

您必須進行下列設定。

確保高可用性

Cassandra 叢集需要三個可用區,才能在正式環境中維持可用性。如果一個區域發生故障,其餘區域會繼續回應要求,直到故障區域恢復連線為止。如果兩個以上的區域發生故障,Cassandra 至少要等到兩個區域恢復連線,才能回應要求。Apigee 建議在三小時內讓可用區恢復連線,盡量避免資料更新遺失的風險。

設定 Cassandra 儲存空間設定

如果是 Apigee Hybrid 的正式版安裝作業,Google 建議您在覆寫檔案中加入下列儲存空間和堆積設定,並套用至叢集:

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

使用下列指令將變更套用至 Cassandra:

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

replicaCount

replicaCount 的值必須是 3 的倍數。如要決定所需的 replicaCount 值,請考量下列事項:

  • 預估 Proxy 的流量需求。
  • 執行負載測試,並合理預測 CPU 使用率。
  • 您可以在不同區域指定不同的 replicaCount 值。
  • 日後您可以在覆寫檔案中擴展 replicaCount

storageclass

在實際工作環境中,Cassandra 儲存空間必須是 SSD StorageClass。如果您未使用叢集的預設 Kubernetes StorageClass,請設定 storageclass 的值。您可以使用下列指令檢查預設的 StorageClass。

kubectl get storageclass

輸出內容應如下所示:

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

如要變更預設的 Kubernetes StorageClass,請按照「StorageClass 設定」一文中的操作說明進行。

如要檢查目前的 storageclass 設定,請在叢集上執行下列指令:

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

storageSize

對於實際工作環境安裝作業,Google 建議儲存空間大小至少為 500 GiB。 您可以根據叢集的儲存空間需求變更儲存空間大小。如要變更儲存空間大小,請參閱「擴充 Cassandra 永久磁碟區」一文中的操作說明。

如要檢查目前的儲存空間大小設定,請在叢集上執行下列指令:

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

cpumemory

對於正式版安裝作業,Google 建議每個 Pod 至少要有 7 個 CPU,以及至少 15Gi (吉位元組)。指定 cassandra.resources.requests.cpucassandra.resources.requests.memory 時,請考量流量和 Proxy 的 CPU 與記憶體需求。

如要檢查目前的 CPU 設定,請在叢集上執行下列指令:

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

如要檢查目前的記憶體設定,請在叢集上執行下列指令:

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

maxHeapSizeheapNewSize

這些屬性分別決定分配給 Cassandra 程序的記憶體堆積最大值,以及記憶體增加量 (以 MB 為單位,堆積大小以 MB 為單位指定,而非 MiB)。對於正式環境,Google 建議使用下列值:

  • maxHeapSize: 8192M
  • heapNewSize: 1200M

如要瞭解最佳堆積大小值,請參閱 Kubernetes 平台供應商的說明文件。

如要檢查目前的 maxHeapSize 設定,請在叢集上執行下列指令:

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

如要檢查目前的 heapNewSize 設定,請在叢集上執行下列指令:

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

如要進一步瞭解這些屬性設定,請參閱「 設定屬性參考資料」。

在正式版部署作業中使用 SSD 儲存空間

對於 Cassandra 資料庫,混合式執行階段僅支援使用 動態建立的永久磁碟區來儲存資料。不支援本機固態硬碟 (SSD) 磁碟機。

如果目前未為 Cassandra 設定 SSD,您必須設定由固態硬碟 (SSD) 支援的 StorageClass 定義,並將其設為預設類別。如需詳細步驟,請參閱「StorageClass 設定」。

如要變更預設的 Kubernetes StorageClass,請按照「StorageClass 設定」一文中的操作說明進行。

本節說明 Cassandra 的建議設定。

設定每日備份時間表

如果設定錯誤,導致多區域 Cassandra 發生問題,Google 將無法還原執行階段資料,造成資料永久遺失。

為避免資料遺失,請設定每日備份排程。 監控備份大小和頻率,並確保備份管道失敗時會收到通知。

遵守 Cassandra 叢集最低需求

請按照 Cassandra 的叢集設定最低需求操作。

將所有面向客戶的環境視為正式版

即使混合式安裝被視為「非正式版」,您可能仍需要正式版設定。舉例來說,使用者接受測試 (UAT) 安裝作業中斷時,應觸發高優先順序事件。

即使是「非正式版」的客戶端混合式安裝,也請使用正式版設定。 建議您遵循本文所述原則,為所有面向消費者的環境 (包括正式伺服器) 採取相同做法。請特別遵循使用 replicaCount 和區域的災難復原原則。詳情請參閱「設定 Cassandra 儲存空間設定」。