Cassandra の永続ボリュームを拡張する

このプロセスでは、Apigee ハイブリッド Cassandra データベースで使用される永続ボリュームを拡張することによって、ストレージ容量増加のニーズに対応できます。ストレージ容量を増やすためだけに新しいノードを作成する必要はありません。

概要

Apigee ハイブリッドの cassandra コンポーネントは、永続ボリュームにデータを保存します。永続ボリュームのサイズは、インストール時と初期構成時に定義されます。ストレージの初期サイズは不変の値であり、変更できません。このため、クラスタに追加された新しいノードはすべて同じサイズの永続ボリュームを使用します。

既存の永続ボリュームのサイズは、永続ボリューム要求で直接変更することによって増やすことができますが、新しく作成したノードでは初期サイズの永続ボリュームが引き続き使用されます。

ハイブリッド Cassandra データベースがストレージ容量の上限に近づいている場合は、以下の手順で既存の永続ボリュームを拡張できます。また、新しいノードでも永続ボリュームを拡張できます。

Cassandra の永続ボリュームを拡張する

  1. ボリューム サイズを任意のサイズに更新します。
    kubectl -n apigee edit pvc
  2. 更新されたボリューム容量を確認します。
     kubectl get pvc -n apigee
    NAME                                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    cassandra-data-apigee-cassandra-default-0   Bound    pvc-92234ba7-941b-4dab-82c6-8a5288a2c8d4   100Gi      RWO            standard       21m
    cassandra-data-apigee-cassandra-default-1   Bound    pvc-6be911fc-91f7-465d-a02e-933428ee10b2   100Gi      RWO            standard       20m
    cassandra-data-apigee-cassandra-default-2   Bound    pvc-14ba34e4-fd5c-4d59-8413-a331dcad3404   100Gi      RWO            standard       19m
  3. StatefulSet をバックアップしてから削除し、新しいストレージ サイズで再作成します。次のコマンドは、現在の Cassandra 構成をキャプチャするために使用できる構成ファイル apigee-cassandra-default.yaml を作成します。次に、この構成を変更して適用します。
    1. kubectl -n apigee get sts apigee-cassandra-default -o yaml > apigee-cassandra-default.yaml
    2. kubectl -n apigee delete sts --cascade=orphan apigee-cassandra-default
    3. delete オペレーションが完了していることを確認します。
      kubectl get sts -n apigee

      出力は次のようになります。

      No resources found in apigee namespace.
    4. apigee-cassandra-default.yaml ファイルのストレージ サイズを新しいストレージ サイズで更新します。これは overrides.yaml に適用するサイズと一致する必要があります。次に例を示します。
           resources:
              requests:
                storage: 100Gi
    5. 更新されたストレージ サイズで StatefulSet 構成を再適用します。
      kubectl apply -f apigee-cassandra-default.yaml
    6. StatefulSet が正しく再作成されたことを確認します。
      kubectl get sts -n apigee

      出力は次のようになります。

      NAME                       READY   AGE
      apigee-cassandra-default   3/3     6m56s
  4. pvc の編集時に指定した新しいボリューム サイズでオーバーライド ファイルを更新します。
    cassandra:
      storage:
        capacity: 100Gi
  5. 更新された構成をクラスタに適用します。

    Helm

    helm upgrade datastore apigee-datastore/ \
    --namespace apigee \
    --atomic \
    -f OVERRIDES_FILE.yaml
    

    apigeectl

    $APIGEECTL_HOME/apigeectl apply datastore -f OVERRIDES_FILE.yaml
    Parsing file: config/values.yaml
    Parsing file: overrides/overrides.yaml
    cleansing older AD's (v1alpha1) istio resources...
    
    Invoking "kubectl apply" with YAML config...
    
    apigeedatastore.apigee.cloud.google.com/apigee-cassandra unchanged
  6. 新しく作成された sts で更新後のストレージ サイズが使用されているかどうか確認します。
    kubectl get sts -n apigee apigee-cassandra -o yaml |grep storage
    storage: 100Gi
  7. C* Pod のデータ ボリュームが新しいサイズに更新されたかどうかを確認します。

    kubectl exec -n apigee -it apigee-cassandra-default-0 -- df -h|grep "/opt/apigee/data"
    /dev/sdb         99G   69M   99G   1% /opt/apigee/data