本主題將說明為 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 建議儲存空間容量至少為 500Gi (千兆位元組)。您可以根據叢集的儲存空間需求變更儲存空間容量。如要變更儲存空間容量,請參閱「擴充 Cassandra 永久磁碟區」中的操作說明。
如要查看目前的容量設定,請在叢集上執行下列指令:
kubectl get pvc -n NAMESPACE cassandra-data-apigee-cassandra-default-0 -o=jsonpath='{.spec.resources.requests.storage}'
cpu
和 memory
對於正式版安裝作業,Google 建議每個 Pod 至少有 7 個 CPU 和 15 Gi (gibibytes)。指定 cassandra.resources.requests.cpu
和 cassandra.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}'
maxHeapSize
和 heapNewSize
這些屬性會決定分配給 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 設定」中的操作說明進行。