管理 Cassandra 永久磁碟區大小

這個程序可讓您擴充 Apigee 混合 Cassandra 資料庫使用的持久性磁碟區,以便因應更大的儲存空間需求,而不需要為了提供更多儲存空間而建立新節點。

總覽

Apigee 混合 cassandra 元件會使用永久性磁碟區儲存資料。在安裝和初始設定期間定義永久性磁碟區大小。這個初始儲存空間大小是不可變動的值,無法變更。因此,新增至叢集的任何新節點都會使用相同的永久性磁碟區大小。

您可以直接在永久磁碟區要求上進行變更,藉此增加現有永久磁碟區的大小。新節點仍會使用較小的初始永久磁碟區大小。

如果混合型 Cassandra 資料庫的儲存空間即將用盡,您可以使用這個程序來擴充現有的永久磁碟區,並允許新節點擴充其永久磁碟區。

擴充 Cassandra 永久磁碟區

  1. 將磁碟區大小更新為所需大小:
    kubectl -n APIGEE_NAMESPACE edit pvc
  2. 查看更新後的磁碟區容量:
     kubectl get pvc -n APIGEE_NAMESPACE
    NAME                                       STATUS  VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    cassandra-data-apigee-cassandra-default-0  Bound   pvc-92234ba7-941b-4dab-82c6-8a5288a2c8d4   500Gi      RWO            standard       21m
    cassandra-data-apigee-cassandra-default-1  Bound   pvc-6be911fc-91f7-465d-a02e-933428ee10b2   500Gi      RWO            standard       20m
    cassandra-data-apigee-cassandra-default-2  Bound   pvc-14ba34e4-fd5c-4d59-8413-a331dcad3404   500Gi      RWO            standard       19m
    
  3. 備份、刪除並重新建立具有新儲存空間大小的 StatefulSet。下列指令會建立設定檔 apigee-cassandra-default.yaml,您可以使用該檔案擷取目前的 Cassandra 設定。接著,您可以修改並套用這項設定:
    1. kubectl -n APIGEE_NAMESPACE get sts apigee-cassandra-default -o yaml > apigee-cassandra-default.yaml
    2. kubectl -n APIGEE_NAMESPACE delete sts --cascade=orphan apigee-cassandra-default
    3. 確認 delete 作業已完成:
      kubectl get sts -n APIGEE_NAMESPACE

      輸出內容應如下所示:

      No resources found in apigee namespace.
    4. 使用新的儲存空間大小更新 apigee-cassandra-default.yaml 檔案中的儲存空間大小。這個值必須與您打算在 overrides.yaml 中套用的大小相符。 例如:
           resources:
              requests:
                storage: 500Gi
    5. 重新套用具有更新儲存空間大小的 statefulset 設定:
      kubectl apply -f apigee-cassandra-default.yaml
    6. 確認 statefulset 是否已正確重新建立:
      kubectl get sts -n APIGEE_NAMESPACE

      輸出內容應如下所示:

      NAME                       READY   AGE
      apigee-cassandra-default   3/3     6m56s
  4. 更新覆寫檔案,加入您在編輯 PVC 時指定的新磁碟大小:
    cassandra:
      storage:
        storageSize: 500Gi
  5. 詳情請參閱 cassandra.storage.capacity

  6. 將更新後的設定套用至叢集:
    helm upgrade datastore apigee-datastore/ \
    --namespace APIGEE_NAMESPACE \
    --atomic \
    -f OVERRIDES_FILE.yaml
    
  7. 檢查新建立的 sts 是否已更新儲存空間大小:
    kubectl get sts -n APIGEE_NAMESPACE apigee-cassandra -o yaml |grep storage
    storage: 500Gi
  8. 檢查 C* pods 資料磁碟區是否已更新為新大小:

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