Apigee Hybrid๋ Cassandra ๋ ธ๋์ ๋ง์ StatefulSet๋ก ์ฌ์ฉํฉ๋๋ค. Cassandra๋ ๋ฐํ์ ์์ญ์ ํน์ Apigee ํญ๋ชฉ์ ์๊ตฌ ์คํ ๋ฆฌ์ง๋ฅผ ์ ๊ณตํฉ๋๋ค. Cassandra์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ฐํ์ ์์ญ ์ ๋ณด๋ฅผ ์ฐธ์กฐํ์ธ์.
Cassandra๋ ๋ฆฌ์์ค ์ง์ฝ์ ์ธ ์๋น์ค์ด๋ฏ๋ก ๋ค๋ฅธ ํ์ด๋ธ๋ฆฌ๋ ์๋น์ค๊ฐ ์๋ ํฌ๋์ ๋ฐฐํฌํด์๋ ์ ๋ฉ๋๋ค. ๋ก๋์ ๋ฐ๋ผ ๋ง์ Cassandra ๋ ธ๋ ์๋ฅผ ํด๋ฌ์คํฐ์ ์ถ์ํ๊ณ ์ ํ ์ ์์ต๋๋ค.
Cassandra ๋ง์ ์ถ์ํ๋ ์ผ๋ฐ์ ์ธ ํ๋ก์ธ์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Cassandra ๋ ธ๋ ํ๋๋ฅผ ์ฌ์ฉ ์ค๋จํ์ธ์.
overrides.yaml
์cassandra.replicaCount
์์ฑ์ ์ ๋ฐ์ดํธํ์ธ์.- ๊ตฌ์ฑ ์ ๋ฐ์ดํธ๋ฅผ ์ ์ฉํ์ธ์.
- ์ญ์ ํ๋ ค๋ ๋ ธ๋๋ง๋ค ์ด ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
- ํด๋ฌ์คํฐ ๊ตฌ์ฑ์ ๋ฐ๋ผ ์๊ตฌ ๋ณผ๋ฅจ ์ ์ฒญ ๋๋ ๋ณผ๋ฅจ์ ์ญ์ ํฉ๋๋ค.
์์๋์ด์ผ ํ ์ฌํญ
- ๋ค์ ๋ ธ๋๋ก ์งํํ๊ธฐ ์ ์ ํ ๋ฒ์ ํ๋์ ๋ ธ๋์์ ์ด ์์ ์ ์ํํฉ๋๋ค.
- ์ฌ์ฉ ์ค๋จํ ๋ ธ๋ ์ด์ธ์ ๋ ธ๋๊ฐ ๋น์ ์์ธ ๊ฒฝ์ฐ ๊ณ์ ์งํํ์ง ๋ง์ธ์. Kubernetes๋ ํด๋ฌ์คํฐ์์ ํฌ๋๋ฅผ ์ถ์ํ ์ ์์ต๋๋ค.
- ํญ์ ๋ ธ๋ 3๊ฐ์ ๋ฐฐ์๋ก ํ์ฅ ๋๋ ์ถ์๋ฉ๋๋ค.
๊ธฐ๋ณธ ์๊ฑด
๋ง์์ Cassandra ๋ ธ๋ ์๋ฅผ ์ถ์ํ๊ธฐ ์ ์ ๋ค์ ์์์ ๊ฐ์ด ํด๋ฌ์คํฐ๊ฐ ์ ์ ์ํ์ด๊ณ ๋ชจ๋ ๋ ธ๋๊ฐ ์คํ ์ค์ธ์ง ํ์ธํฉ๋๋ค.
kubectl get pods -n yourNamespace -l app=apigee-cassandra NAME READY STATUS RESTARTS AGE apigee-cassandra-0 1/1 Running 0 2h apigee-cassandra-1 1/1 Running 0 2h apigee-cassandra-2 1/1 Running 0 2h apigee-cassandra-3 1/1 Running 0 16m apigee-cassandra-4 1/1 Running 0 14m apigee-cassandra-5 1/1 Running 0 13m
kubectl -n yourNamespace exec -it apigee-cassandra-0 nodetool status Datacenter: us-east1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.16.2.6 690.17 KiB 256 48.8% b02089d1-0521-42e1-bbed-900656a58b68 ra-1 UN 10.16.4.6 700.55 KiB 256 51.6% dc6b7faf-6866-4044-9ac9-1269ebd85dab ra-1 to UN 10.16.11.11 144.36 KiB 256 48.3% c7906366-6c98-4ff6-a4fd-17c596c33cf7 ra-1 UN 10.16.1.11 767.03 KiB 256 49.8% ddf221aa-80aa-497d-b73f-67e576ff1a23 ra-1 UN 10.16.5.13 193.64 KiB 256 50.9% 2f01ac42-4b6a-4f9e-a4eb-4734c24def95 ra-1 UN 10.16.8.15 132.42 KiB 256 50.6% a27f93af-f8a0-4c88-839f-2d653596efc2 ra-1
Cassandra ๋ ธ๋ ์ฌ์ฉ ์ค๋จ
-
nodetool ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ์์ Cassandra ๋
ธ๋๋ฅผ ์ฌ์ฉ ์ค๋จํฉ๋๋ค.
kubectl -n yourNamespace exec -it nodeName nodetool decommission
์๋ฅผ ๋ค์ด ์ด ๋ช ๋ น์ด๋ ์ด๋ฆ์์ ์ซ์ ๊ฐ์ด ๊ฐ์ฅ ๋์ ๋ ธ๋
apigee-cassandra-5
๋ฅผ ์ฌ์ฉ ์ค๋จํฉ๋๋ค.kubectl -n apigee exec -it apigee-cassandra-5 nodetool decommission
- ์ฌ์ฉ ์ค๋จ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ ธ๋ค๊ฐ ํด๋ฌ์คํฐ์ ๋
ธ๋๊ฐ ํ ๊ฐ ์ค์๋์ง ํ์ธํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
kubectl -n yourNamespace exec -it nodeName nodetool status Datacenter: us-east1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.16.2.6 710.37 KiB 256 59.0% b02089d1-0521-42e1-bbed-900656a58b68 ra-1 UN 10.16.4.6 720.97 KiB 256 61.3% dc6b7faf-6866-4044-9ac9-1269ebd85dab ra-1 UN 10.16.1.11 777.11 KiB 256 58.9% ddf221aa-80aa-497d-b73f-67e576ff1a23 ra-1 UN 10.16.5.13 209.23 KiB 256 62.2% 2f01ac42-4b6a-4f9e-a4eb-4734c24def95 ra-1 UN 10.16.8.15 143.23 KiB 256 58.6% a27f93af-f8a0-4c88-839f-2d653596efc2 ra-1
overrides.yaml
ํ์ผ์์cassandra.replicaCount
์์ฑ์ ์ ๋ฐ์ดํธํ๊ฑฐ๋ ์ถ๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด ํ์ฌ ๋ ธ๋ ์๊ฐ 6์ด๋ฉด 5๋ก ๋ณ๊ฒฝํฉ๋๋ค.cassandra: replicaCount: 5 # (n-1)
- ํด๋ฌ์คํฐ์ ๊ตฌ์ฑ ๋ณ๊ฒฝ์ ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
./apigeectl apply -v beta2 -c cassandra namespace/apigee unchanged secret/ssl-cassandra unchanged storageclass.storage.k8s.io/apigee-gcepd unchanged service/apigee-cassandra unchanged statefulset.apps/apigee-cassandra configured
- ๋จ์์๋ ๋ชจ๋ Cassandra ๋
ธ๋๊ฐ ์คํ ์ค์ธ์ง ํ์ธํฉ๋๋ค.
kubectl get pods -n yourNamespace -l app=apigee-cassandra NAME READY STATUS RESTARTS AGE apigee-cassandra-0 1/1 Running 0 3h apigee-cassandra-1 1/1 Running 0 3h apigee-cassandra-2 1/1 Running 0 2h apigee-cassandra-3 1/1 Running 0 25m apigee-cassandra-4 1/1 Running 0 24m
- ์ฌ์ฉ ์ค๋จํ๋ ค๋ ๋ ธ๋๋ง๋ค 1~5๋จ๊ณ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
- ๋
ธ๋ ํด์ ๊ฐ ์๋ฃ๋๋ฉด
cassandra.replicaCount
๊ฐ์ดnodetool status
๋ช ๋ น์ด์์ ๋ฐํ๋ ๋ ธ๋ ์์ ๋์ผํ์ง ํ์ธํฉ๋๋ค.kubectl -n yourNamespace exec -it apigee-cassandra-0 nodetool status Datacenter: us-east1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.16.2.6 710.37 KiB 256 59.0% b02089d1-0521-42e1-bbed-900656a58b68 ra-1 UN 10.16.4.6 720.97 KiB 256 61.3% dc6b7faf-6866-4044-9ac9-1269ebd85dab ra-1 UN 10.16.1.11 777.11 KiB 256 58.9% ddf221aa-80aa-497d-b73f-67e576ff1a23 ra-1 UN 10.16.5.13 209.23 KiB 256 62.2% 2f01ac42-4b6a-4f9e-a4eb-4734c24def95 ra-1 UN 10.16.8.15 143.23 KiB 256 58.6% a27f93af-f8a0-4c88-839f-2d653596efc2 ra-1
- Cassandra ํด๋ฌ์คํฐ ํฌ๊ธฐ๋ฅผ ์ค์ธ ํ์๋ pvc(PersistentVolumeClaim)๋ฅผ ์ญ์ ํ์ฌ ๋ค์ ํ์ฅ ์ด๋ฒคํธ๊ฐ ๋์ผํ ์๊ตฌ ๋ณผ๋ฅจ๊ณผ ์ด์ ์ ์์ฑ๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ง ์๋๋ก ์ฃผ์ํด์ผ ํฉ๋๋ค.
kubectl get pvc -n yourNamespace NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE cassandra-data-apigee-cassandra-0 Bound pvc-f9c2a5b9-818c-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 7h cassandra-data-apigee-cassandra-1 Bound pvc-2956cb78-818d-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 7h cassandra-data-apigee-cassandra-2 Bound pvc-79de5407-8190-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 7h cassandra-data-apigee-cassandra-3 Bound pvc-d29ba265-81a2-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 5h cassandra-data-apigee-cassandra-4 Bound pvc-0675a0ff-81a3-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 5h cassandra-data-apigee-cassandra-5 Bound pvc-354afa95-81a3-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 5h
kubectl -n yourNamespace delete pvc cassandra-data-apigee-cassandra-5 persistentvolumeclaim "cassandra-data-apigee-cassandra-5" deleted
kubectl get pvc -n yourNamespace NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE cassandra-data-apigee-cassandra-0 Bound pvc-f9c2a5b9-818c-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 7h cassandra-data-apigee-cassandra-1 Bound pvc-2956cb78-818d-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 7h cassandra-data-apigee-cassandra-2 Bound pvc-79de5407-8190-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 7h cassandra-data-apigee-cassandra-3 Bound pvc-d29ba265-81a2-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 5h cassandra-data-apigee-cassandra-4 Bound pvc-0675a0ff-81a3-11e9-8862-42010a8e014a 100Gi RWO apigee-gcepd 5h
- Anthos ์ค์น๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Anthos Kubernetes ํด๋ฌ์คํฐ์์๋ ์๊ตฌ ๋ณผ๋ฅจ์ ์ญ์ ํฉ๋๋ค.
kubectl get pv -n youNamespace NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-0675a0ff-81a3-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-4 apigee-gcepd 5h pvc-2956cb78-818d-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-1 apigee-gcepd 7h pvc-354afa95-81a3-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-5 apigee-gcepd 5h pvc-79de5407-8190-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-2 apigee-gcepd 7h pvc-d29ba265-81a2-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-3 apigee-gcepd 5h pvc-f9c2a5b9-818c-11e9-8862-42010a8e014a 100Gi RWO Delete Bound apigee/cassandra-data-apigee-cassandra-0 apigee-gcepd 7h
kubectl -n yourNamespace delete pv pvc-354afa95-81a3-11e9-8862-42010a8e014a