Apigee ๋ฐ Apigee Hybrid ๋ฌธ์์
๋๋ค.
์ด ์ฃผ์ ์ ํด๋นํ๋ Apigee Edge ๋ฌธ์๊ฐ ์์ต๋๋ค.
์ด ์ฃผ์ ์์๋ Cassandra Datastore ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ทจํ ์ ์๋ ์กฐ์น๋ฅผ ์ค๋ช
ํฉ๋๋ค. Cassandra๋ ํ์ด๋ธ๋ฆฌ๋ ๋ฐํ์ ์ํคํ
์ฒ์ cassandra
๊ตฌ์ฑ์์์์ ์คํ๋๋ ์๊ตฌ Datastore์
๋๋ค.
๋ฐํ์ ์๋น์ค ๊ตฌ์ฑ ๊ฐ์๋ ์ฐธ์กฐํ์ธ์.
Cassandra ํฌ๋๊ฐ Releasing ์ํ๋ก ๋ฉ์ถฐ ์์
์ฆ์
Cassandra ํฌ๋์ ๋ํ ์ ๋ฐ์ดํธ๋ฅผ ์๋ํ๋ฉด ๋ฐ์ดํฐ ์คํ ์ด์์ ํด์ ์ค์ธ ์ํ๋ก ๋ฉ์ถฐ ์๋ค๊ณ ๋ณด๊ณ ํฉ๋๋ค.
์ค๋ฅ ๋ฉ์์ง
kubectl
์ ์ฌ์ฉํ์ฌ ํฌ๋ ์ํ๋ฅผ ๋ณด๋ฉด ํ๋ ์ด์์ Cassandra ํฌ๋๊ฐ ํด์ ์ค์ธ ์ํ๋ก ๋ฉ์ถฐ ์์ต๋๋ค.
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Ack 57s (x7 over 24h) apigee-datastore release started
๊ฐ๋ฅํ ์์ธ
ํฌ๋๊ฐ ํด์ ์ค์ธ ์ํ๋ก ๋ฉ์ถฐ ์์ ์ ์๋ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์ธ | ์ค๋ช |
---|---|
์คํ ๋ฆฌ์ง ์ฉ๋ ๋ณ๊ฒฝ |
override.yaml ํ์ผ์ ์คํ ๋ฆฌ์ง ์ฉ๋์ ๋ณ๊ฒฝํ๋ ์กฐ์น๊ฐ ์คํ๋์์ต๋๋ค.
|
๊ธฐํ ๊ตฌ์ฑ ๋ณ๊ฒฝ |
override.yaml ํ์ผ์ cassandra ์์ฑ์ด ์
๋ฐ์ดํธ๋์์ง๋ง ๋ณ๊ฒฝ์ฌํญ์ด ์ ์ฉ๋์ง ์์์ต๋๋ค.
|
์คํ ๋ฆฌ์ง ์ฉ๋ ๋ณ๊ฒฝ
์ง๋จ
-
kubectl
์ ์ฌ์ฉํ์ฌapigee
๋ฐ์ดํฐ ์คํ ์ด ํฌ๋์ ํ์ฌ ์ํ๋ฅผ ํ์ธํฉ๋๋ค.kubectl get apigeeds -n apigee
NAME STATE AGE default releasing 122d
-
override.yaml
ํ์ผ์ ๋ณ๊ฒฝ์ฌํญ์ด ์๋์ง ํ์ธํฉ๋๋ค. -
๋ฒ์ ์ ์ด ์์คํ
์ ์ฌ์ฉํ์ฌ
override.yaml
ํ์ผ์ ์ด์ ๋ฒ์ ์ ํ์ฌ ๋ฒ์ ๊ณผ ๋น๊ตํฉ๋๋ค.diff OVERRIDES_BEFORE.yaml OVERRIDES_AFTER.yaml
-
override.yaml
์ diff ์ถ๋ ฅ์ ์คํ ๋ฆฌ์ง ์ฉ๋ ํฌ๊ธฐ์ ๊ด๋ จ๋ ๊ฐ๋ฅํ ๋ฌธ์ ๋ฅผ ๋ณด์ฌ์ค ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.# Overrides.yaml before: cassandra: storage: capacity: 500Gi # Overrides.yaml after: cassandra: storage: capacity: 100Gi
๋จ๊ณ๋ฅผ ๊ฑด๋๋ฐ๊ณ ์คํ ๋ฆฌ์ง ์ฉ๋์ ๋ณ๊ฒฝํ ์์ ์ด ์์๊ณ , ์
override.yaml
์ด ์ง์ ์ ์ฉ๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์คํ ์ด๊ฐ ํด์ ์ค์ธ ์ํ๊ฐ ๋ ์ ์์ต๋๋ค. -
statefulset
์ ํ์ธํ์ฌapigee-cassandra-default
์ ์ด๋ฌํ ์์ ์ด ์๋์ง ํ์ธํฉ๋๋ค.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 ์ํ๋ฅผ ์ฌ์ค์ ํ์ฌ ์คํ ์ค์ธ ์ํ๋ก ๋๋๋ฆด ์ ์์ต๋๋ค.
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 ๋ฐฐํฌ ๋ฐ ํฌ๋๊ฐ ์คํ ์ค์ธ ์ํ์ธ์ง ํ์ธํฉ๋๋ค.
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 cluster-info dump:
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 ํฌ๋๊ฐ ๋๊ธฐ์ค ์ํ๋ก ๋ฉ์ถฐ ์์
์ฆ์
์์ํ๋ฉด Cassandra ํฌ๋๊ฐ ๋๊ธฐ์ค ์ํ๋ก ์ ์ง๋ฉ๋๋ค.
์ค๋ฅ ๋ฉ์์ง
kubectl
๋ฅผ ์ฌ์ฉํ์ฌ ํฌ๋ ์ํ๋ฅผ ๋ณด๋ฉด ํ๋ ์ด์์ Cassandra ํฌ๋๊ฐ Pending
์ํ๋ก ๋ฉ์ถฐ ์์ต๋๋ค. Pending
์ํ๋ Kubernetes๊ฐ ๋
ธ๋์์ ํฌ๋๋ฅผ ์์ฝํ ์ ์์์ ๋ํ๋
๋๋ค. ํฌ๋๋ ์์ฑ ๋ถ๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
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
...
๊ฐ๋ฅํ ์์ธ
ํฌ๋๊ฐ ๋๊ธฐ์ค ์ํ๋ก ๋ฉ์ถฐ ์๋ ์ด์ ๋ ์ฌ๋ฌ ๊ฐ์ง์ผ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์ธ | ์ค๋ช |
---|---|
๋ฆฌ์์ค ๋ถ์กฑ | ํฌ๋๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ CPU ๋๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํฉ๋๋ค. |
๋ณผ๋ฅจ์ด ์์ฑ๋์ง ์์ | ํฌ๋๋ ์๊ตฌ ๋ณผ๋ฅจ์ด ์์ฑ๋ ๋๊น์ง ๋๊ธฐํฉ๋๋ค. |
Amazon EBS CSI ๋๋ผ์ด๋ฒ ๋๋ฝ | EKS ์ค์น์ ๊ฒฝ์ฐ ํ์ Amazon EBS CSI ๋๋ผ์ด๋ฒ๊ฐ ์ค์น๋์ง ์์์ต๋๋ค. |
์ง๋จ
์ค๋ฅ ์์ธ์ ํ์
ํ๊ธฐ ์ํด kubectl
์ ์ฌ์ฉํ์ฌ ํฌ๋๋ฅผ ์ค๋ช
ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
kubectl -n NAMESPACE describe pods POD_NAME
์:
kubectl describe pods apigee-cassandra-default-0 -n apigee
์ถ๋ ฅ์ ๋ค์ ๋ฌธ์ ์ค ํ๋๊ฐ ๋ํ๋ ์ ์์ต๋๋ค.
- ๋ฆฌ์์ค ๋ถ์กฑ์ด ๋ฌธ์ ๊ฐ ๋ ๊ฒฝ์ฐ CPU ๋๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ๋ค๋ ๊ฒฝ๊ณ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.
- Pod์ ๋ฐ์ธ๋ฉ๋์ง ์์ ์ฆ๊ฐ์ ์ธ PersistentVolumeClaim(PVC)์ด ์์์ ๋ํ๋ด๋ ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋ํ๋ ๊ฒฝ์ฐ Pod์์ ์๊ตฌ ๋ณผ๋ฅจ์ ๋ง๋ค ์ ์๋ค๋ ์๋ฏธ์ ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
๋ฆฌ์์ค ๋ถ์กฑ
CPU ๋ฐ ๋ฉ๋ชจ๋ฆฌ ๋ฆฌ์์ค๊ฐ ์ถฉ๋ถํ๋๋ก Cassandra ๋ ธ๋ ํ์ ์์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ ธ๋ ํ ํฌ๊ธฐ ์กฐ์ ์ ์ฐธ์กฐํ์ธ์.
์๊ตฌ ๋ณผ๋ฅจ์ด ์์ฑ๋์ง ์์
์๊ตฌ ๋ณผ๋ฅจ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ํ๋จ๋๋ฉด 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 ...
- ์คํจํ ํฌ๋์ PVC๋ฅผ ์ค๋ช
ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์ ๋ช
๋ น์ด๋ ํฌ๋
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๋ฅผ ๋ง๋ญ๋๋ค.
ํฌ๋ ๋๋ฒ๊น ๋ ์ฐธ์กฐํ์ธ์.
Amazon EBS CSI ๋๋ผ์ด๋ฒ ๋๋ฝ
ํ์ด๋ธ๋ฆฌ๋ ์ธ์คํด์ค๊ฐ EKS ํด๋ฌ์คํฐ์์ ์คํ๋๋ ๊ฒฝ์ฐ EKS ํด๋ฌ์คํฐ๊ฐ Amazon EBS ์ปจํ ์ด๋ ์คํ ๋ฆฌ์ง ์ธํฐํ์ด์ค(CSI) ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ๋์ง ํ์ธํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ Amazon EBS CSI ๋ง์ด๊ทธ๋ ์ด์ ์์ฃผ ๋ฌป๋ ์ง๋ฌธ(FAQ)์ ์ฐธ์กฐํ์ธ์.
Cassandra ํฌ๋๊ฐ CrashLoopBackoff ์ํ๋ก ๋ฉ์ถฐ ์์
์ฆ์
์์ํ๋ฉด Cassandra ํฌ๋๊ฐ CrashLoopBackoff ์ํ๋ก ์ ์ง๋ฉ๋๋ค.
์ค๋ฅ ๋ฉ์์ง
kubectl
๋ฅผ ์ฌ์ฉํ์ฌ ํฌ๋ ์ํ๋ฅผ ๋ณด๋ฉด ํ๋ ์ด์์ Cassandra ํฌ๋๊ฐ CrashLoopBackoff
์ํ๊ฐ ๋ฉ๋๋ค.
์ด ์ํ๋ Kubernetes๊ฐ ํฌ๋๋ฅผ ๋ง๋ค ์ ์์์ ๋ํ๋
๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
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
...
๊ฐ๋ฅํ ์์ธ
ํฌ๋๊ฐ CrashLoopBackoff
์ํ๋ก ๋ฉ์ถฐ ์๋ ์ด์ ๋ ์ฌ๋ฌ ๊ฐ์ง์ผ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์ธ | ์ค๋ช |
---|---|
๋ฐ์ดํฐ ์ผํฐ๊ฐ ์ด์ ๋ฐ์ดํฐ ์ผํฐ์ ๋ค๋ฆ | ์ด ์ค๋ฅ๋ ์ด์ ํด๋ฌ์คํฐ์ ๋ฐ์ดํฐ๊ฐ ์๋ ์๊ตฌ ๋ณผ๋ฅจ์ด Cassandra ํฌ๋์ ์์ผ๋ฉฐ ์ ํฌ๋๊ฐ ์ด์ ํด๋ฌ์คํฐ์ ์กฐ์ธํ ์ ์์์ ๋ํ๋ ๋๋ค. ์ด๋ฌํ ํ์์ ๋ณดํต ๋นํ์ฑ ์๊ตฌ ๋ณผ๋ฅจ์ด ๋์ผํ Kubernetes ๋ ธ๋์ ์๋ ์ด์ Cassandra ํด๋ฌ์คํฐ์์ ์ง์๋ ๋ ๋ฐ์ํฉ๋๋ค. ์ด ๋ฌธ์ ๋ ํด๋ฌ์คํฐ์์ Cassandra๋ฅผ ์ญ์ ํ๊ณ ๋ค์ ๋ง๋๋ ๊ฒฝ์ฐ์ ๋ฐ์ํ ์ ์์ต๋๋ค. |
Kubernetes ์ ๊ทธ๋ ์ด๋ | Kubernetes ์ ๊ทธ๋ ์ด๋๋ Cassandra ํด๋ฌ์คํฐ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค. ์ด๋ Cassandra ํฌ๋๋ฅผ ํธ์คํ ํ๋ Anthos ์์ปค ๋ ธ๋๊ฐ ์ OS ๋ฒ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋๋๋ฉด ๋ฐ์ํ ์ ์์ต๋๋ค. |
์ง๋จ
Cassandra ์ค๋ฅ ๋ก๊ทธ๋ฅผ ํ์ธํ์ฌ ๋ฌธ์ ์ ์์ธ์ ํ์ ํฉ๋๋ค.
- ํฌ๋๋ฅผ ๋์ดํ์ฌ ์คํจํ Cassandra ํฌ๋์ ID๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
kubectl get pods -n NAMESPACE
- ์คํจํ ํฌ๋์ ๋ก๊ทธ๋ฅผ ํ์ธํฉ๋๋ค.
kubectl logs POD_ID -n NAMESPACE
ํด๊ฒฐ ๋ฐฉ๋ฒ
ํฌ๋ ๋ก๊ทธ์์ ๋ค์ ๋จ์๋ฅผ ํ์ธํฉ๋๋ค.
๋ฐ์ดํฐ ์ผํฐ๊ฐ ์ด์ ๋ฐ์ดํฐ ์ผํฐ์ ๋ค๋ฆ
์ด ๋ก๊ทธ ๋ฉ์์ง๊ฐ ํ์๋๋ ๊ฒฝ์ฐ:
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 ํฌ๋์์ ์์ฐจ์ ์ฌ์์์ ์ํํฉ๋๋ค.
๋๋ฒ๊น ์ ์ํ ํด๋ผ์ด์ธํธ ์ปจํ ์ด๋ ๋ง๋ค๊ธฐ
์ด ์น์
์์๋ cqlsh
์ ๊ฐ์ด Cassandra ๋๋ฒ๊น
์ ํธ๋ฆฌํฐ์ ์ก์ธ์คํ ์ ์๋ ํด๋ผ์ด์ธํธ ์ปจํ
์ด๋๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํฉ๋๋ค. ์ด๋ฌํ ์ ํธ๋ฆฌํฐ๋ Cassandra ํ
์ด๋ธ์ ์ฟผ๋ฆฌํ ์ ์๊ณ ๋๋ฒ๊น
๋ชฉ์ ์ ์ ์ฉํ ์ ์์ต๋๋ค.
ํด๋ผ์ด์ธํธ ์ปจํ ์ด๋ ๋ง๋ค๊ธฐ
ํด๋ผ์ด์ธํธ ์ปจํ ์ด๋๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
- ์ปจํ
์ด๋๊ฐ
apigee-cassandra-user-setup
ํฌ๋์ TLS ์ธ์ฆ์๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ Kubernetes ๋ณด์ ๋น๋ฐ๋ก ์ ์ฅ๋ฉ๋๋ค. ์ด ์ธ์ฆ์๋ฅผ ์ ์ฅํ๋ ๋ณด์ ๋น๋ฐ์ ์ด๋ฆ์ ๊ฐ์ ธ์ต๋๋ค.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
ํ๋์์ ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. - ์ ํ์ผ์ ์ด๊ณ ๋ค์ ํฌ๋ ์ฌ์์ ์ฌ๊ธฐ์ ๋ถ์ฌ๋ฃ์ต๋๋ค.
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
ํด๋ผ์ด์ธํธ ํฌ๋ ์ญ์
๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ Cassandra ํด๋ผ์ด์ธํธ ํฌ๋๋ฅผ ์ญ์ ํฉ๋๋ค.
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 ํฌ๋์ ์ก์ธ์คํฉ๋๋ค.kubectl exec -it -n apigee apigee-cassandra-default-0 -- /bin/bash
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋๋จธ์ง Cassandra ํฌ๋๋ฅผ ์ฌ์ฉ ์ค๋จํฉ๋๋ค.
nodetool -u CASSANDRA_DB_USER -pw CASSANDRA_DB_PASSWORD decommission
- Helm์ ์ฌ์ฉํ์ฌ ๋ ๋ฒ์งธ ๋ฐ์ดํฐ ์ผํฐ์์ Cassandra ํฌ๋๋ฅผ ์ญ์ ํฉ๋๋ค.
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 ํฌ๋์ IP ์ฃผ์์ธ์ง ํ์ธํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์ ์ถ๋ ฅ์์ IP ์ฃผ์
10.100.0.39
๋ ์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ ์ผํฐ์ ํฌ๋์ ์ฌ์ฉ๋์ด์ผ ํฉ๋๋ค.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 ํฌ๋ ์ค ํ๋์ ์ก์ธ์คํ๊ณ ๋ฐ์ดํฐ ์ผํฐ 2๊ฐ๊ฐ ์๋์ง ํ์ธํฉ๋๋ค."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 ํฌ๋์์ ๋จ์ ์ค๋ ์ท ์๊ฐ 0๋ณด๋ค ํฌ๋ฉด ์ค์น๊ฐ ์ด ๋ฌธ์ ์ ์ํฅ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์๋ ๋จ๊ณ์ ๋ฐ๋ผ ์ฌ์ฉ ์ค์ธ ๋ฐฑ์ ์ ํ๊ณผ Apigee Hybrid ๋ง์ด๋ ๋ฒ์ ์ ์ ํํ์ธ์.
Cloud Storage ๋ฐฑ์
-
Cloud Storage ๋ฐฑ์
์ ์ฌ๋ฐ๋ฅธ ๊ตฌ์ฑ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ๋ฌธ์ ์๋ ๋ค์์ด ํฌํจ๋์ง๋ง ์ด์ ๊ตญํ๋์ง ์์ต๋๋ค.
- ์๋ชป๋ Google ์๋น์ค ๊ณ์ ์ด ์ฌ์ฉ๋์์ต๋๋ค.
- cassandra.backup.dbStorageBucket์ ์๋ชป๋ Cloud Storage ๋ฒํท ์ด๋ฆ์ด ์ง์ ๋์์ต๋๋ค.
- ํ๋ก์๋ฅผ ํตํด 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 ๋ฒํท์ ์ ๋ก๋๋์๋์ง ํ์ธํฉ๋๋ค. - ์์ ์ง๋จ ์น์ ์ ๋์จ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ Cassandra ํฌ๋์ ๋จ์ ์ค๋ ์ท ์๊ฐ 0์ธ์ง ํ์ธํฉ๋๋ค.
์๊ฒฉ ์๋ฒ ๋ฐฑ์
-
์๊ฒฉ ๋ฐฑ์
์๋ฒ๊ฐ ์ ์ ์ํ์ด๊ณ Cassandra ํฌ๋์์ ์ฐ๊ฒฐํ ์ ์๋์ง ํ์ธํฉ๋๋ค.
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 ํฌ๋์ ๋จ์ ์ค๋ ์ท ์๊ฐ 0์ธ์ง ํ์ธํฉ๋๋ค.
์ถ๊ฐ ๋ฆฌ์์ค
Apigee X ๋ฐ Apigee Hybrid ํ๋ ์ด๋ถ ์๊ฐ๋ฅผ ์ฐธ์กฐํ์ธ์.