為實際工作環境設定 Cassandra

本主題說明為 Apigee Hybrid 實際工作環境安裝作業設定 Cassandra 資料庫元件的必要步驟。

確保高可用性

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

套用 Cassandra 儲存空間設定

如要將變更套用至覆寫檔案中的 Cassandra 儲存空間設定,請執行下列指令:

$APIGEECTL_HOME/apigeectl init -f overrides/OVERRIDES_FILE
$APIGEECTL_HOME/apigeectl apply -f overrides/OVERRIDES_FILE

設定 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

replicaCount

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

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

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

kubectl get sts -n NAMESPACE apigee-cassandra-default -o=jsonpath='{.spec.replicas}'
  

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='{.metadata.annotations.volume\.beta\.kubernetes\.io/storage-class}'
  

capacity

如果是用於實際工作環境,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 設定」中的操作說明進行。