Cassandra データベースは、動的に作成された永続ボリュームを使用してデータを保存します。Apigee でデータベースを適切に機能させるには、ソリッド ステート ドライブ(SSD)を基盤とする StorageClass の定義を構成する必要があります。
現在 Cassandra 用に SSD が設定されていない場合、このトピックでは SSD を使用する新しい StorageClass を作成し、それをデフォルト クラスにする方法について説明します。Cassandra が起動すると、このデフォルトの StorageClass が使用されます。
このトピックで説明する StorageClass の構成手順は、新しい Cassandra インストールにのみ適用されます。Cassandra クラスがすでにインストールされている場合は、既存のクラスタを廃止して StorageClass の定義を構成する必要があります。インストール後に既存の Cassandra クラスタの StorageClass 定義を変更することはできません。
セカンダリ リージョンのデータを保持しながら、1 つのリージョンを廃止して再インストールできるよう、2 つ以上のリージョンにハイブリッドをデプロイすることをおすすめします。また、必要な StorageClass の定義を廃止して構成した後、CSI 以外のハイブリッド バックアップを使用して、単一リージョン インストールでデータを復元することもできます。
デフォルトの StorageClass を変更する
以下では、StorageClass を作成し、それをデフォルト クラスにする方法について説明します。詳細については、Kubernetes ドキュメントのデフォルトのストレージ クラスを変更するをご覧ください。
- 現在のデフォルトの StorageClass の名前を取得します。
kubectl get sc
次に例を示します。
kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE premium-rwo pd.csi.storage.gke.io Delete WaitForFirstConsumer true 15h standard kubernetes.io/gce-pd Delete Immediate true 15h standard-rwo (default) pd.csi.storage.gke.io Delete WaitForFirstConsumer true 15h standard-rwo
という StorageClass の詳細を確認します。タイプがpd-balanced
であることにご注意ください。kubectl describe sc standard-rwo
次に例を示します。
kubectl describe sc standard-rwo
Name: standard-rwo IsDefaultClass: Yes Annotations: components.gke.io/layer=addon,storageclass.kubernetes.io/is-default-class=false Provisioner: pd.csi.storage.gke.io Parameters: type=pd-balanced AllowVolumeExpansion: True MountOptions: <none> ReclaimPolicy: Delete VolumeBindingMode: WaitForFirstConsumer Events: <none>
storageclass.yaml
という名前の新しいファイルを作成します。- 次のコードをファイルに追加します。ここでは、新しいクラスの名前を
apigee-sc
にしています。クラスには任意の名前を付けることができます。また、ストレージ タイプをpd-ssd
にしています。--- kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: "apigee-sc" provisioner: pd.csi.storage.gke.io parameters: type: pd-ssd replication-type: none volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true
- 新しい StorageClass を Kubernetes クラスタに適用します。
kubectl apply -f storageclass.yaml
- 次の 2 つのコマンドを実行して、デフォルトの StorageClass を変更します。
kubectl patch storageclass standard-rwo \ -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
kubectl patch storageclass apigee-sc \ -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
- 次のコマンドを実行して、新しいデフォルトの StorageClass が
apigee-sc
であることを確認します。kubectl get sc
次に例を示します。
kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE apigee-sc (default) pd.csi.storage.gke.io Delete WaitForFirstConsumer true 14h premium-rwo pd.csi.storage.gke.io Delete WaitForFirstConsumer true 15h standard kubernetes.io/gce-pd Delete Immediate true 15h standard-rwo pd.csi.storage.gke.io Delete WaitForFirstConsumer true 15h
- 両方の StorageClass を記述して、IsDefaultClass の値を確認します。
kubectl describe sc apigee-sc
Name: apigee-sc IsDefaultClass: Yes Annotations: kubectl.kubernetes.io/last-applied-configuration={"allowVolumeExpansion":true,"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{},"name":"apigee-sc"},"parameters":{"replication-type":"none","type":"pd-ssd"},"provisioner":"pd.csi.storage.gke.io","volumeBindingMode":"WaitForFirstConsumer"} ,storageclass.kubernetes.io/is-default-class=true Provisioner: pd.csi.storage.gke.io Parameters: replication-type=none,type=pd-ssd AllowVolumeExpansion: True MountOptions:
ReclaimPolicy: Delete VolumeBindingMode: WaitForFirstConsumer Events: kubectl describe sc standard-rwo
Name: standard-rwo IsDefaultClass: No Annotations: components.gke.io/layer=addon,storageclass.kubernetes.io/is-default-class=false Provisioner: pd.csi.storage.gke.io Parameters: type=pd-balanced AllowVolumeExpansion: True MountOptions:
ReclaimPolicy: Delete VolumeBindingMode: WaitForFirstConsumer Events: