このトピックでは、Cassandra データベース コンポーネントを Apigee ハイブリッドの本番環境用に構成するために必要な手順について説明します。
高可用性を確保する
本番環境での可用性を維持するため、Cassandra クラスタには 3 つのアベイラビリティ ゾーンが必要です。1 つのゾーンが停止した場合は、そのゾーンがオンラインに復帰するまでの間、残りのゾーンがリクエストへの応答を継続します。複数のゾーンが停止した場合は、少なくとも 2 つのゾーンがオンラインに戻るまで、Cassandra はリクエストに応答できません。データ更新の欠落リスクを最小限に抑えるため、ゾーンは 3 時間以内にオンラインに戻すことをおすすめします。
Cassandra ストレージ設定を構成する
Apigee ハイブリッドの本番環境のインストールでは、次のストレージとヒープの設定をオーバーライド ファイルに追加してクラスタに適用することをおすすめします。
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
値を決定する際は、次の点を考慮してください。
- プロキシのトラフィック需要を見積もる。
- 負荷テストを行い、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']}"
capacity
本番環境のインストールでは、500 Gi(ギビバイト)以上のストレージ容量をおすすめします。ストレージ容量は、クラスタのストレージ要件に応じて変更できます。ストレージ容量を変更するには、Cassandra の永続ボリュームを拡張するの手順をご覧ください。
現在の容量設定を確認するには、クラスタで次のコマンドを実行します。
kubectl get pvc -n NAMESPACE cassandra-data-apigee-cassandra-default-0 -o=jsonpath='{.spec.resources.requests.storage}'
cpu
と memory
本番環境のインストールでは、Pod あたり 7 個以上の CPU と最小 15 Gi(ギビバイト)をおすすめします。cassandra.resources.requests.cpu
と cassandra.resources.requests.memory
を指定する場合は、トラフィック ボリュームとプロキシの 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 プロセスに割り当てられる最大メモリヒープとメモリの増加量をそれぞれメガバイト単位で指定します(ヒープサイズはメビバイトではなくメガバイト単位で指定されます)。本番環境では、次の値を使用することをおすすめします。
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 の構成の手順に沿って実行します。