本番環境用に Cassandra を構成する

このトピックでは、Cassandra データベース コンポーネントを Apigee ハイブリッドの本番環境用に構成するために必要な手順について説明します。

高可用性を確保する

本番環境での可用性を維持するため、Cassandra クラスタには 3 つのアベイラビリティ ゾーンが必要です。1 つのゾーンが停止した場合は、そのゾーンがオンラインに復帰するまでの間、残りのゾーンがリクエストへの応答を継続します。複数のゾーンが停止した場合は、少なくとも 2 つのゾーンがオンラインに戻るまで、Cassandra はリクエストに応答できません。データ更新の欠落リスクを最小限に抑えるため、ゾーンは 3 時間以内にオンラインに戻すことをおすすめします。

Cassandra ストレージ設定を適用する

オーバーライド ファイルで Cassandra ストレージ設定の変更を適用するには、次のコマンドを実行します。

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

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

replicaCount

replicaCount の値は 3 の倍数にする必要があります。指定する replicaCount 値を決定する際は、次の点を考慮してください。

  • プロキシのトラフィック需要を見積もる。
  • 負荷テストを行い、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

本番環境のインストールでは、500 Gi(ギビバイト)以上のストレージ容量をおすすめします。ストレージ容量は、クラスタのストレージ要件に応じて変更できます。ストレージ容量を変更するには、Cassandra の永続ボリュームを拡張するの手順をご覧ください。

現在の容量設定を確認するには、クラスタで次のコマンドを実行します。

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

cpumemory

本番環境のインストールでは、Pod あたり 7 個以上の CPU と最小 15 Gi(ギビバイト)をおすすめします。cassandra.resources.requests.cpucassandra.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}'
  

maxHeapSizeheapNewSize

これらのプロパティは、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 の構成の手順に沿って操作します。