您目前正在查看 Apigee 和 Apigee Hybrid 說明文件。
這個主題沒有對應的
Apigee Edge 說明文件。
本主題將說明如何排解及修正 Cassandra 資料儲存區的問題。Cassandra 是持續性資料儲存空間,可在混合執行階段架構的 cassandra
元件中執行。另請參閱執行階段服務設定總覽。
Cassandra pod 停滯在「正在釋放」狀態
問題
嘗試更新 Cassandra Pod 後,資料儲存庫會回報卡在發布狀態。
錯誤訊息
使用 kubectl
查看 Pod 狀態時,您會看到一或多個 Cassandra Pod 停滯在發布狀態:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Ack 57s (x7 over 24h) apigee-datastore release started
可能原因
Pod 停滯在發布狀態的原因可能如下:
原因 | 說明 |
---|---|
儲存空間容量異動 |
已執行步驟,變更 override.yaml 檔案中的儲存空間容量。
|
其他設定變更 |
override.yaml 檔案中的 Cassandra 屬性已更新,但變更未生效。
|
儲存空間容量變更
診斷
-
使用
kubectl
查看apigee
資料存放區 Pod 的目前狀態:kubectl get apigeeds -n apigee
NAME STATE AGE default releasing 122d
-
檢查
override.yaml
檔案是否有任何變更: -
使用版本控管系統,比較
override.yaml
檔案的先前版本與目前版本:diff OVERRIDES_BEFORE.yaml OVERRIDES_AFTER.yaml
-
override.yaml
中的差異輸出內容可能會顯示儲存空間大小可能存在的問題。例如:# Overrides.yaml before: cassandra: storage: capacity: 500Gi # Overrides.yaml after: cassandra: storage: capacity: 100Gi
如果曾 變更儲存空間容量,並略過部分步驟,直接套用新的
override.yaml
,可能會導致資料儲存庫處於釋出狀態。 -
檢查
statefulset
,確認apigee-cassandra-default
中有statefulset
:kubectl describe sts -n apigee
輸出結果看起來會與下列內容相似:
Name: apigee-cassandra-default Namespace: apigee CreationTimestamp: Tue, 18 Jul 2023 00:40:57 +0000 Selector: app=apigee-cassandra,name=default Labels: apigee.cloud.google.com.revision=v1-2cc098050836c6b4 apigee.cloud.google.com.version=v1 apigee.cloud.google.com/platform=apigee app=apigee-cassandra name=default Annotations: <none> Replicas: 3 desired | 3 total Update Strategy: RollingUpdate Partition: 0 Pods Status: 3 Running / 0 Waiting / 0 Succeeded / 0 Failed Pod Template: Labels: apigee.cloud.google.com/apigee_servicename=production apigee.cloud.google.com/billing_type=subscription apigee.cloud.google.com/platform=apigee app=apigee-cassandra name=default revision=v1 runtime_type=hybrid Annotations: apigee.cloud.google.com/pod-template-spec-hash: 2cc098050836c6b4 prometheus.io/path: /metrics prometheus.io/port: 7070 prometheus.io/scheme: https prometheus.io/scrape: true Containers: apigee-cassandra: Image: gcr.io/apigee-release/hybrid/apigee-hybrid-cassandra:1.10.1 Ports: 7000/TCP, 7001/TCP, 7199/TCP, 9042/TCP, 8778/TCP Host Ports: 7000/TCP, 7001/TCP, 7199/TCP, 9042/TCP, 8778/TCP Requests: cpu: 500m memory: 1Gi Readiness: exec [/bin/bash -c /opt/apigee/ready-probe.sh] delay=0s timeout=5s period=10s #success=1 #failure=2 Environment: POD_NAME: (v1:metadata.name) POD_IP: (v1:status.podIP) MAX_HEAP_SIZE: 512M HEAP_NEWSIZE: 100M CASSANDRA_SEEDS: apigee-cassandra-default-0.apigee-cassandra-default.apigee.svc.cluster.local CASSANDRA_CLUSTER_NAME: apigeecluster CASSANDRA_DC: dc-1 CASSANDRA_RACK: ra-1 CASSANDRA_OPEN_JMX: true CPS_ADMIN_USER: <set to the key 'admin.user' in secret 'apigee-datastore-default-creds'> Optional: false CPS_ADMIN_PASSWORD: <set to the key 'admin.password' in secret 'apigee-datastore-default-creds'> Optional: false APIGEE_JMX_USER: <set to the key 'jmx.user' in secret 'apigee-datastore-default-creds'> Optional: false APIGEE_JMX_PASSWORD: <set to the key 'jmx.password' in secret 'apigee-datastore-default-creds'> Optional: false CASS_PASSWORD: <set to the key 'default.password' in secret 'apigee-datastore-default-creds'> Optional: false APIGEE_JOLOKIA_USER: <set to the key 'jolokia.user' in secret 'apigee-datastore-default-creds'> Optional: false APIGEE_JOLOKIA_PASSWORD: <set to the key 'jolokia.password' in secret 'apigee-datastore-default-creds'> Optional: false Mounts: /opt/apigee/apigee-cassandra/conf from appsfs (rw) /opt/apigee/customer from cwc-volume (ro) /opt/apigee/data from cassandra-data (rw) /opt/apigee/ssl from tls-volume (ro) /var/secrets/google from apigee-cassandra-backup (rw) /var/secrets/keys from apigee-cassandra-backup-key-file (rw) Volumes: cwc-volume: Type: Secret (a volume populated by a Secret) SecretName: config-cassandra-default Optional: false tls-volume: Type: Secret (a volume populated by a Secret) SecretName: apigee-cassandra-default-tls Optional: false appsfs: Type: EmptyDir (a temporary directory that shares a pod's lifetime) Medium: SizeLimit: <unset> apigee-cassandra-backup: Type: Secret (a volume populated by a Secret) SecretName: apigee-cassandra-backup-svc-account Optional: true apigee-cassandra-backup-key-file: Type: Secret (a volume populated by a Secret) SecretName: apigee-cassandra-backup-key-file Optional: true Volume Claims: Name: cassandra-data StorageClass: Labels: <none> Annotations: <none> Capacity: 10Gi Access Modes: [ReadWriteOnce] Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulCreate 47m statefulset-controller create Pod apigee-cassandra-default-2 in StatefulSet apigee-cassandra-default successful
-
檢查 apigee 控制器是否有錯誤:
kubectl logs -f apigee-controller-manager-59cf595c77-wtwnr -n apigee-system -c manager | grep apigeedatastore
結果:
"error creating apigee-cassandra object: failed to update resource apigee/apigee-cassandra-default: StatefulSet.apps \"apigee-cassandra-default\" is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'template', 'updateStrategy', 'persistentVolumeClaimRetentionPolicy' and 'minReadySeconds' are forbiddenerror creating apigee-cassandra object: failed to update resource apigee/apigee-cassandra-default: StatefulSet.apps \"apigee-cassandra-default\" is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'template', 'updateStrategy', 'persistentVolumeClaimRetentionPolicy' and 'minReadySeconds' are forbidden"
解決方法
如要重設 Cassandra 的狀態,請按照下列步驟操作,讓 Cassandra 恢復執行狀態:
-
停用
apigee-controller
:kubectl -n apigee-system edit deployments and set --enable-controllers=true to --enable-controllers=false
-
使用
PATCH
指令,將資料儲存區還原為執行狀態:curl -XPATCH \-H "Accept: application/json" -H "Content-Type: application/json-patch+json" --data '[{"op": "replace", "path": "/status/nestedState", "value": ""},{"op": "replace", "path": "/status/state", "value": "running"}]' 'http://127.0.0.1:8001/apis/apigee.cloud.google.com/v1alpha1/namespaces/apigee/apigeedatastores/default/status'
-
使用 Helm 重新套用原始
override.yaml
檔案:helm upgrade datastore apigee-datastore/ \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE \ --dry-run=server
請務必加入顯示的所有設定,包括
--atomic
,以便在動作失敗時回溯。安裝圖表:
helm upgrade datastore apigee-datastore/ \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE
-
啟用
apigee-controller
:kubectl -n apigee-system edit deployments and set --enable-controllers=false to --enable-controllers=true
-
等待資料儲存庫恢復運作,並使用下列項目進行驗證:
kubectl get apigeeds --namespace apigee
-
確認 Apigee 部署作業和 Pod 處於執行狀態,且
apigeeds
不再處於發布狀態:kubectl get ad -n apigee
kubectl get pods -n apigee
kubectl get apigeeds -n apigee
NAME STATE AGE default running 24d
其他設定變更
您在 override.yaml
中更新了 cassandra
屬性,但變更未生效。這可能是因為密碼變更,或是 override.yaml
中的資源有所變動。或是錯誤地將錯誤的 override.yaml
套用至叢集。
診斷
請參閱「診斷」一節中的步驟。
解決方法
請參閱「解決方案」一節中的步驟。
必須收集診斷資訊
如果按照上述指示操作後問題仍未解決,請收集下列診斷資訊,然後與 Google Cloud Customer Care 團隊聯絡:
-
Overrides.yaml
安裝中的每個叢集。 -
從 Apigee Hybrid 安裝作業傾印的 Kubernetes 叢集資訊:
產生 Kubernetes
cluster-info dump
:kubectl cluster-info dump -A --output-directory=/tmp/kubectl-cluster-info-dump
使用 zip 壓縮 Kubernetes
cluster-info dump
:zip -r kubectl-cluster-info-dump`date +%Y.%m.%d_%H.%M.%S`.zip /tmp/kubectl-cluster-info-dump/*
Cassandra Pod 停滯在「Pending」狀態
症狀
啟動時,Cassandra Pod 會維持在「Pending」(待處理) 狀態。
錯誤訊息
使用 kubectl
查看 Pod 狀態時,您會發現一或多個 Cassandra Pod 停滯在 Pending
狀態。Pending
狀態表示 Kubernetes 無法在節點上排定 Pod,因此無法建立 Pod。例如:
kubectl get pods -n NAMESPACE
NAME READY STATUS RESTARTS AGE
adah-resources-install-4762w 0/4 Completed 0 10m
apigee-cassandra-default-0 0/1 Pending 0 10m
...
可能原因
Pod 停滯在「待處理」狀態的原因有很多,例如:
原因 | 說明 |
---|---|
資源不足 | CPU 或記憶體不足,無法建立 Pod。 |
未建立磁碟區 | Pod 正在等待建立永久磁碟區。 |
缺少 Amazon EBS CSI 驅動程式 | 如果是 EKS 安裝作業,系統不會安裝必要的 Amazon EBS CSI 驅動程式。 |
診斷
使用 kubectl
說明 Pod,判斷錯誤來源。例如:
kubectl -n NAMESPACE describe pods POD_NAME
例如:
kubectl describe pods apigee-cassandra-default-0 -n apigee
輸出內容可能會顯示下列其中一個可能問題:
- 如果問題是資源不足,您會看到「警告」訊息,指出 CPU 或記憶體不足。
- 如果錯誤訊息指出 Pod 具有未繫結的即時 PersistentVolumeClaim (PVC),表示 Pod 無法建立 PersistentVolume。
解決方法
資源不足
修改 Cassandra 節點集區,確保有足夠的 CPU 和記憶體資源。 詳情請參閱「 調整節點集區大小」。
未建立永久磁碟區
如果判斷是永久磁碟區問題,請說明 PersistentVolumeClaim (PVC),判斷為何未建立:
- 列出叢集中的 PVC:
kubectl -n NAMESPACE get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE cassandra-data-apigee-cassandra-default-0 Bound pvc-b247faae-0a2b-11ea-867b-42010a80006e 10Gi RWO standard 15m ...
- 說明發生故障的 Pod 的 PVC。舉例來說,下列指令會說明繫結至 Pod
apigee-cassandra-default-0
的 PVC:kubectl apigee describe pvc cassandra-data-apigee-cassandra-default-0 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning ProvisioningFailed 3m (x143 over 5h) persistentvolume-controller storageclass.storage.k8s.io "apigee-sc" not found
請注意,在這個範例中,名為
apigee-sc
的 StorageClass 不存在。如要解決這個問題,請在叢集中建立缺少的 StorageClass,詳情請參閱「 變更預設的 StorageClass」。
另請參閱「 偵錯 Pod」。
缺少 Amazon EBS CSI 驅動程式
如果混合執行個體在 EKS 叢集上執行,請確認 EKS 叢集使用 Amazon EBS 容器儲存介面 (CSI) 驅動程式。詳情請參閱 Amazon EBS CSI 遷移作業常見問題。
Cassandra pod 停滯在 CrashLoopBackoff 狀態
症狀
啟動時,Cassandra Pod 會維持在 CrashLoopBackoff 狀態。
錯誤訊息
使用 kubectl
查看 Pod 狀態時,您會發現一或多個 Cassandra Pod 處於 CrashLoopBackoff
狀態。這個狀態表示 Kubernetes 無法建立 Pod。例如:
kubectl get pods -n NAMESPACE
NAME READY STATUS RESTARTS AGE
adah-resources-install-4762w 0/4 Completed 0 10m
apigee-cassandra-default-0 0/1 CrashLoopBackoff 0 10m
...
可能原因
Pod 停滯在 CrashLoopBackoff
狀態的原因有很多種,例如:
原因 | 說明 |
---|---|
資料中心與先前的資料中心不同 | 這項錯誤表示 Cassandra Pod 具有來自先前叢集的資料的持續性磁碟區,而新的 Pod 無法加入舊叢集。如果先前 Cassandra 叢集在同一個 Kubernetes 節點上保留過時的永久磁碟區,通常就會發生這種情況。如果您刪除並重新建立叢集中的 Cassandra,就可能發生這個問題。 |
Kubernetes 升級 | Kubernetes 升級可能會影響 Cassandra 叢集。如果裝載 Cassandra Pod 的 Anthos 工作人員節點升級至新版作業系統,就可能發生這種情況。 |
診斷
查看 Cassandra 錯誤記錄,判斷問題原因。
- 列出 Pod,取得發生故障的 Cassandra Pod ID:
kubectl get pods -n NAMESPACE
- 檢查失敗的 Pod 記錄:
kubectl logs POD_ID -n NAMESPACE
解決方法
在 Pod 的記錄中尋找下列線索:
資料中心與先前的資料中心不同
如果看到這則記錄訊息:
Cannot start node if snitch's data center (us-east1) differs from previous data center
- 檢查叢集中是否有任何過時或舊的 PVC,並將其刪除。
- 如果是全新安裝,請刪除所有 PVC,然後重新嘗試設定。例如:
kubectl -n NAMESPACE get pvc
kubectl -n NAMESPACE delete pvc cassandra-data-apigee-cassandra-default-0
Anthos 升級會變更安全性設定
檢查 Cassandra 記錄檔中是否有以下錯誤訊息:
/opt/apigee/run.sh: line 68: ulimit: max locked memory: cannot modify limit: Operation not permitted
- 如果混合執行個體是多區域,請停用受影響的混合執行個體,然後重新擴展至受影響的區域。
- 如果混合執行個體是單一區域,請對混合執行個體中的每個 Cassandra Pod 執行輪動式重新啟動。
建立用於偵錯的用戶端容器
本節說明如何建立用戶端容器,從中存取 Cassandra 偵錯公用程式,例如 cqlsh
:CQL Shell。這些公用程式可讓您查詢 Cassandra 資料表,有助於偵錯。
建立用戶端容器
如要建立用戶端容器,請按照下列步驟操作:
- 容器必須使用
apigee-cassandra-user-setup
Pod 中的 TLS 憑證。這會儲存為 Kubernetes Secret。擷取儲存這個憑證的 Secret 名稱:kubectl get secrets -n apigee --field-selector type=kubernetes.io/tls | grep apigee-cassandra-user-setup | awk '{print $1}'
這項指令會傳回密鑰名稱。例如:
apigee-cassandra-user-setup-rg-hybrid-b7d3b9c-tls
。 您會在下方的 YAML 檔案中使用此項目,填入secretName
欄位。 - 開啟新檔案,並將下列 Pod 規格貼入其中:
apiVersion: v1 kind: Pod metadata: labels: name: CASSANDRA_CLIENT_NAME # For example: my-cassandra-client namespace: apigee spec: containers: - name: CASSANDRA_CLIENT_NAME image: "gcr.io/apigee-release/hybrid/apigee-hybrid-cassandra-client:YOUR_APIGEE_HYBRID_VERSION" # For example, 1.10.5. imagePullPolicy: Always command: - sleep - "3600" env: - name: CASSANDRA_SEEDS value: apigee-cassandra-default.apigee.svc.cluster.local - name: APIGEE_DML_USER valueFrom: secretKeyRef: key: dml.user name: apigee-datastore-default-creds - name: APIGEE_DML_PASSWORD valueFrom: secretKeyRef: key: dml.password name: apigee-datastore-default-creds volumeMounts: - mountPath: /opt/apigee/ssl name: tls-volume readOnly: true volumes: - name: tls-volume secret: defaultMode: 420 secretName: YOUR_SECRET_NAME # For example: apigee-cassandra-user-setup-rg-hybrid-b7d3b9c-tls restartPolicy: Never
- 使用
.yaml
副檔名儲存檔案。例如:my-spec.yaml
。 - 將規格套用至叢集:
kubectl apply -f YOUR_SPEC_FILE.yaml -n apigee
- 登入容器:
kubectl exec -n apigee CASSANDRA_CLIENT_NAME -it -- bash
- 使用下列指令連線至 Cassandra
cqlsh
介面。完全按照畫面所示輸入指令:cqlsh ${CASSANDRA_SEEDS} -u ${APIGEE_DML_USER} -p ${APIGEE_DML_PASSWORD} --ssl
刪除用戶端 Pod
使用下列指令刪除 Cassandra 用戶端 Pod:
kubectl delete pods -n apigee cassandra-client
區域擴充設定錯誤:所有 Cassandra 節點都位於同一個資料中心
這種情況發生在 GKE 和 GKE On-Prem (Anthos) 平台的多區域擴充作業中。請盡量避免在同一個資料中心建立所有 Cassandra 節點。
症狀
Cassandra 節點無法在第二個區域的資料中心建立。
錯誤訊息
failed to rebuild from dc-1: java.lang.RuntimeException : Error while rebuilding node: Stream failed
解決方法
如要修正設定錯誤的區域擴展功能,請按照下列步驟操作:
- 在第二個資料中心的
overrides.yaml
檔案中,將 CassandrareplicaCount
更新為1
。例如:cassandra: . . . replicaCount: 1
使用 Helm 套用設定:
helm upgrade datastore apigee-datastore \ --namespace APIGEE_NAMESPACE \ --atomic \ -f 2ND_DATACENTER_OVERRIDES_FILE \ --dry-run=server
請務必加入顯示的所有設定,包括
--atomic
,以便在動作失敗時回溯。安裝圖表:
helm upgrade datastore apigee-datastore \ --namespace APIGEE_NAMESPACE \ --atomic \ -f 2ND_DATACENTER_OVERRIDES_FILE
- 使用
kubectl exec
透過下列指令存取其餘 Cassandra Pod:kubectl exec -it -n apigee apigee-cassandra-default-0 -- /bin/bash
- 使用下列指令停用其餘 Cassandra Pod:
nodetool -u CASSANDRA_DB_USER -pw CASSANDRA_DB_PASSWORD decommission
- 使用 Helm 從第二個資料中心刪除 Cassandra Pod:
helm uninstall datastore -n APIGEE_NAMESPACE
- 將 Kubernetes 內容切換至第一個資料中心的叢集:
kubectl config use-context FIRST_DATACENTER_CLUSTER
- 確認第一個資料中心沒有處於停機狀態的 Cassandra 節點。
nodetool -u CASSANDRA_DB_USER -pw CASSANDRA_DB_PASSWORD status
- 確認已從第一個資料中心移除設定錯誤的 Cassandra 節點 (適用於第二個資料中心)。請確認 nodetool 狀態輸出內容中顯示的 IP 位址,僅為第一個資料中心適用的 Cassandra Pod IP 位址。舉例來說,在下列輸出內容中,IP 位址
10.100.0.39
應為第一個資料中心內的 Pod。kubectl exec -it -n apigee apigee-cassandra-default-0 -- /bin/bash
nodetool -u CASSANDRA_DB_USER -pw CASSANDRA_DB_PASSWORD status
Datacenter: dc-1 ================ Status=U/D (Up/Down) | State=N/L/J/M (Normal/Leaving/Joining/Moving) -- Address Load Tokens Owns (effective) Host ID Rack UN 10.100.0.39 4.21 MiB 256 100.0% a0b1c2d3-e4f5-6a7b-8c9d-0e1f2a3b4c5d ra-1 - 確認第二個資料中心的
overrides.yaml
檔案包含 cassandra 區段下的資料中心名稱設定。例如:cassandra: datacenter: DATA_CENTER_2 rack: "RACK_NAME" # "ra-1" is the default value. . . .
- 將第二個資料中心的
overrides.yaml
檔案中cassandra:replicaCount
設定更新為所需數字。例如:cassandra: datacenter: DATA_CENTER_2 . . . replicaCount: 3
- 使用
datastore
引數,為第二個資料中心套用overrides.yaml
檔案。例如:helm upgrade datastore apigee-datastore \ --namespace APIGEE_NAMESPACE \ --atomic \ -f 2ND_DATACENTER_OVERRIDES_FILE \ --dry-run=server
請務必加入顯示的所有設定,包括
--atomic
,以便在動作失敗時回溯。安裝圖表:
helm upgrade datastore apigee-datastore \ --namespace APIGEE_NAMESPACE \ --atomic \ -f 2ND_DATACENTER_OVERRIDES_FILE
- 使用
kubectl exec
存取第二個資料中心的新 Cassandra Pod,並確認有兩個資料中心:"nodetool -u CASSANDRA_DB_USER -pw CASSANDRA_DB_PASSWORD status"
已知問題 388608440 的解決方法
本節說明如何檢查安裝作業是否受到已知問題 388608440 影響,以及如何解決問題。
診斷
如要確認是否受到這個已知問題影響,請執行下列指令:
kubectl -n APIGEE_NAMESPACE get pods -l app=apigee-cassandra -o name | \ xargs -i -P0 kubectl -n APIGEE_NAMESPACE -c apigee-cassandra exec {} -- \ bash -c 'echo "{}: Found $(nodetool -u cassandra -pw $CASS_PASSWORD listsnapshots | grep -c compaction_history) leftover snapshots"'
例如:
kubectl -n apigee get pods -l app=apigee-cassandra -o name | xargs -i -P0 kubectl -n apigee -c apigee-cassandra exec {} -- bash -c 'echo "{}: Found $(nodetool -u cassandra -pw $CASS_PASSWORD listsnapshots | grep -c compaction_history) leftover snapshots"'
pod/apigee-cassandra-default-0: Found 0 leftover snapshots pod/apigee-cassandra-default-1: Found 0 leftover snapshots pod/apigee-cassandra-default-2: Found 0 leftover snapshots
如果任何 Cassandra Pod 的剩餘快照數量大於 0,表示您的安裝作業受到這個問題影響。
解決方法
如要解決這個問題,請按照下列步驟操作,並選取您使用的備份類型和 Apigee Hybrid 次要版本:
Cloud Storage 備份
-
請務必正確設定 Cloud Storage 備份。常見問題包括但不限於:
- 使用錯誤的 Google 服務帳戶。
- cassandra.backup.dbStorageBucket 中指定的 Cloud Storage bucket 名稱有誤。
- 無法透過 Proxy 連線至 Google API (如果使用 cassandra.backup.httpproxy)。
如果設定有任何問題,請先修正再繼續操作。
-
使用下列指令手動刪除剩餘的快照:
Apigee Hybrid 1.12
kubectl -n APIGEE_NAMESPACE get pods -l app=apigee-cassandra -o name | xargs -i -P0 kubectl -n APIGEE_NAMESPACE -c apigee-cassandra exec {} -- bash -c 'echo "{}: $(nodetool -u cassandra -pw $CASS_PASSWORD clearsnapshot --all)"'
例如:
kubectl -n apigee get pods -l app=apigee-cassandra -o name | xargs -i -P0 kubectl -n apigee -c apigee-cassandra exec {} -- bash -c 'echo "{}: $(nodetool -u cassandra -pw $CASS_PASSWORD clearsnapshot --all)"'
Apigee Hybrid 1.11
kubectl -n APIGEE_NAMESPACE get pods -l app=apigee-cassandra -o name | xargs -i -P0 kubectl -n APIGEE_NAMESPACE -c apigee-cassandra exec {} -- bash -c 'echo "{}: $(nodetool -u cassandra -pw $CASS_PASSWORD clearsnapshot)"'
例如:
kubectl -n apigee get pods -l app=apigee-cassandra -o name | xargs -i -P0 kubectl -n apigee -c apigee-cassandra exec {} -- bash -c 'echo "{}: $(nodetool -u cassandra -pw $CASS_PASSWORD clearsnapshot)"'
pod/apigee-cassandra-default-1: Requested clearing snapshot(s) for [all keyspaces] with [all snapshots] pod/apigee-cassandra-default-2: Requested clearing snapshot(s) for [all keyspaces] with [all snapshots] pod/apigee-cassandra-default-0: Requested clearing snapshot(s) for [all keyspaces] with [all snapshots]
- 觸發手動備份工作,並驗證工作是否成功完成。
-
確認手動備份工作建立的備份封存檔已成功上傳至
overrides.yaml
檔案中指定的 cassandra.backup.dbStorageBucket Cloud Storage bucket。 - 使用「診斷」一節中稍早提供的指令,確認所有 Cassandra Pod 的剩餘快照數量為 0。
遠端伺服器備份
-
確認遠端備份伺服器運作正常,且可從 Cassandra Pod 連線。
請參閱疑難排解一節,瞭解如何驗證 SSH 連線。常見問題包括但不限於:
- 網路防火牆封鎖連線。
- 安全殼層 (SSH) 金鑰組設定有誤。
- 無法連線至遠端備份伺服器。
- 遠端備份伺服器的可用儲存空間不足。
如果發現遠端備份伺服器有任何問題,請先修正問題再繼續操作。
-
使用下列指令手動刪除剩餘的快照:
Apigee Hybrid 1.12
kubectl -n APIGEE_NAMESPACE get pods -l app=apigee-cassandra -o name | xargs -i -P0 kubectl -n APIGEE_NAMESPACE -c apigee-cassandra exec {} -- bash -c 'echo "{}: $(nodetool -u cassandra -pw $CASS_PASSWORD clearsnapshot --all)"'
例如:
kubectl -n apigee get pods -l app=apigee-cassandra -o name | xargs -i -P0 kubectl -n apigee -c apigee-cassandra exec {} -- bash -c 'echo "{}: $(nodetool -u cassandra -pw $CASS_PASSWORD clearsnapshot --all)"'
Apigee Hybrid 1.11
kubectl -n APIGEE_NAMESPACE get pods -l app=apigee-cassandra -o name | xargs -i -P0 kubectl -n APIGEE_NAMESPACE -c apigee-cassandra exec {} -- bash -c 'echo "{}: $(nodetool -u cassandra -pw $CASS_PASSWORD clearsnapshot)"'
例如:
kubectl -n apigee get pods -l app=apigee-cassandra -o name | xargs -i -P0 kubectl -n apigee -c apigee-cassandra exec {} -- bash -c 'echo "{}: $(nodetool -u cassandra -pw $CASS_PASSWORD clearsnapshot)"'
pod/apigee-cassandra-default-1: Requested clearing snapshot(s) for [all keyspaces] with [all snapshots] pod/apigee-cassandra-default-2: Requested clearing snapshot(s) for [all keyspaces] with [all snapshots] pod/apigee-cassandra-default-0: Requested clearing snapshot(s) for [all keyspaces] with [all snapshots]
- 觸發手動備份工作,並驗證工作是否成功完成。
- 確認手動備份作業建立的備份封存檔已成功上傳至遠端備份伺服器。
- 使用「診斷」一節中稍早提供的指令,確認所有 Cassandra Pod 的剩餘快照數量為 0。
其他資源
請參閱「 Apigee X 和 Apigee Hybrid 教戰手冊簡介」。