Cassandra ์˜๊ตฌ ๋ณผ๋ฅจ ํ™•์žฅ

์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋” ๋งŽ์€ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ ๋…ธ๋“œ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๊ณ ๋„ Apigee Hybrid Cassandra ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์˜๊ตฌ ๋ณผ๋ฅจ์„ ํ™•์žฅํ•˜์—ฌ ์Šคํ† ๋ฆฌ์ง€ ์ถ”๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์š”

Apigee Hybrid 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. ํด๋Ÿฌ์Šคํ„ฐ์— ์—…๋ฐ์ดํŠธ๋œ ๊ตฌ์„ฑ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
    ../apigeectl apply --datastore -f overrides/overrides.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