์ด ์ฃผ์ ์์๋ GKE์ Apigee Hybrid, ์จํ๋ , Microsoftยฎ Azure Kubernetes Service(AKS), Amazon Elastic Kubernetes Service(EKS), RedHat OpenShift์ ๋ฐฐํฌ๋ Anthos GKE์ ๋ฉํฐ ๋ฆฌ์ ๋ฐฐํฌ๋ฅผ ์ค๋ช ํฉ๋๋ค. ๊ธฐ๋ณธ ์๊ฑด๊ณผ ์ ์ฐจ์์ ํ๋ซํผ์ ์ ํํฉ๋๋ค.
๋ฉํฐ ๋ฆฌ์ ๋ฐฐํฌ๋ฅผ ์ํ ํ ํด๋ก์ง๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํ์ฑ-ํ์ฑ: ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ๋ฌ ์ง๋ฆฌ์ ์์น์ ๋ฐฐํฌ๋๊ณ ๋ฐฐํฌ์ ๋ํ ์ง์ฐ ์๊ฐ์ด ์งง์ API ์๋ต์ด ํ์ํ ๊ฒฝ์ฐ. ํด๋ผ์ด์ธํธ์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ฌ๋ฌ ์ง๋ฆฌ์ ์์น์ ํ์ด๋ธ๋ฆฌ๋๋ฅผ ๋ฐฐํฌํ ์ ์๋ ์ต์ ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ฏธ๊ตญ ์๋ถ ํด์, ๋ฏธ๊ตญ ๋๋ถ ํด์, ์ ๋ฝ, APAC์ด ์์ต๋๋ค.
- ํ์ฑ-์๋: ๊ธฐ๋ณธ ๋ฆฌ์ ๊ณผ ์ฅ์ ์กฐ์น ๋๋ ์ฌํด ๋ณต๊ตฌ ๋ฆฌ์ ์ด ์๋ ๊ฒฝ์ฐ.
๋ค์ ์ด๋ฏธ์ง์ ๊ฐ์ด ๋ฉํฐ ๋ฆฌ์ ํ์ด๋ธ๋ฆฌ๋ ๋ฐฐํฌ์ ๋ฆฌ์ ์ Cassandra๋ฅผ ํตํด ํต์ ํฉ๋๋ค.
๊ธฐ๋ณธ ์๊ฑด
์ฌ๋ฌ ์ง์ญ์ ํ์ด๋ธ๋ฆฌ๋๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ ์ ๋ค์ ๊ธฐ๋ณธ ์๊ฑด์ ๋ง์กฑํด์ผ ํฉ๋๋ค.
GKE
- ์ฌ๋ฌ ๋คํธ์ํฌ(์: ๋ค์ํ ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด, ๋ค๋ฅธ VPC ๋คํธ์ํฌ, ํด๋ผ์ฐ๋ ๋ฐ ์จํ๋ ) ๊ฐ์ ๋ฉํฐ ๋ฆฌ์ Apigee ๋ฐฐํฌ๋ฅผ ์ค์นํ ๋๋ Cassandra๊ฐ ๋ ธ๋ ๊ฐ ํต์ ์ ์ํด ์ฌ์ฉํ ์ ์๋ ์ด๋ฌํ ๊ฐ๋ณ ๋คํธ์ํฌ ๊ฐ์ ๋ด๋ถ ์ฐ๊ฒฐ์ ์ ๊ณตํด์ผ ํฉ๋๋ค. ์ด๋ VPN ๋๋ ํด๋ผ์ฐ๋๋ณ ์ฐ๊ฒฐ ์๋ฃจ์ ์ผ๋ก ์ํํ ์ ์์ต๋๋ค.
- ์ํฌ๋ก๋ ์์ด๋ดํฐํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋จ์ผ ํด๋ฌ์คํฐ์์ ์๋น์ค ๊ณ์ ์ ์ธ์ฆํ๋ ๊ฒฝ์ฐ ํ์ฅํ๋ ค๋ ๋ชจ๋ ํด๋ฌ์คํฐ์ ๋ํด ์ํฌ๋ก๋ ์์ด๋ดํฐํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. GKE์์ ์ํฌ๋ก๋ ์์ด๋ดํฐํฐ ์ฌ์ฉ ์ค์ ๋๋ AKS ๋ฐ EKS์์ ์ํฌ๋ก๋ ์์ด๋ดํฐํฐ ์ ํด ์ฌ์ฉ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
- ์ฌ๋ฌ ๊ฐ์ง CIDR ๋ธ๋ก์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๋ฆฌ์ ์ Kubernetes ํด๋ฌ์คํฐ๋ฅผ ์ค์ ํฉ๋๋ค.
- ๊ฐ ํด๋ฌ์คํฐ์ cert-manager๊ฐ ์ค์น๋์ด ์๋์ง ํ์ธํฉ๋๋ค.
- ๋ฆฌ์ ๊ฐ ํต์ ์ ์ค์ ํฉ๋๋ค.
- ๋ชจ๋ Cassandra ํฌ๋์์ ์์ฒด ํธ์คํธ ์ด๋ฆ์ ํ์ธํ ์ ์๋์ง ํ์ธํฉ๋๋ค. hostNetwork๊ฐ false๋ก ์ค์ ๋ ๊ฒฝ์ฐ ํธ์คํธ ์ด๋ฆ์ Cassandra ํฌ๋ ์ด๋ฆ์ ๋๋ค. hostNetwork๊ฐ true๋ก ์ค์ ๋ ๊ฒฝ์ฐ ํธ์คํธ ์ด๋ฆ์ Cassandra ํฌ๋๋ฅผ ์คํํ๋ Kubernetes ๋ ธ๋ ํธ์คํธ ์ด๋ฆ์ ๋๋ค.
- Cassandra ๋ฉํฐ ๋ฆฌ์ ์๊ตฌ์ฌํญ:
- ํฌ๋ ๋คํธ์ํฌ ๋ค์์คํ์ด์ค์ ๋ฐฉํ๋ฒฝ, VPN, VPC ํผ์ด๋ง, vNet ํผ์ด๋ง์ ๋น๋กฏํ ๋ฆฌ์ ๊ฐ ์ฐ๊ฒฐ์ด ์๋์ง ํ์ธํฉ๋๋ค. ์ด๋ ๋๋ถ๋ถ์ GKE ์ค์น์ ํด๋น๋ฉ๋๋ค.
- ํฌ๋ ๋คํธ์ํฌ ๋ค์์คํ์ด์ค์ ํด๋ฌ์คํฐ ๊ฐ ์ฐ๊ฒฐ์ด ์์ผ๋ฉด('์ฌ(island) ๋คํธ์ํฌ ๋ชจ๋'๋ก ์คํ๋๋ ํด๋ฌ์คํฐ) Apigee Hybrid ๋ฉํฐ ๋ฆฌ์ ์ค์น์์ ๋ชจ๋ ๋ฆฌ์ ์ ๋ํ ์ฌ์ ์ ํ์ผ์
cassandra.hostNetwork: true
๋ฅผ ์ค์ ํ์ฌ KuberneteshostNetwork
๊ธฐ๋ฅ์ ์ฌ์ฉ ์ค์ ํ์ธ์.hostNetwork
์ ํ์์ฑ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์๋์ ์ฌ(island) ๋ชจ๋ ํด๋ฌ์คํฐ ๋ฐ hostNetwork๋ฅผ ์ฐธ์กฐํ์ธ์. - ๋ฉํฐ ๋ฆฌ์ ๊ตฌ์ฑ์ ์ ๋ฆฌ์ ์ผ๋ก ํ์ฅํ๊ธฐ ์ ๊ธฐ์กด ํด๋ฌ์คํฐ์์
hostNetwork
๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค. hostNetwork
๊ฐ ์ฌ์ฉ ์ค์ ๋์์ผ๋ฉด ์์ปค ๋ ธ๋๊ฐ ํธ์คํธ ์ด๋ฆ์ ์ ๋ฐฉํฅ DNS ์กฐํ๋ฅผ ์ํํ ์ ์๋์ง ํ์ธํฉ๋๋ค. Apigee Cassandra๋ ์ ๋ฐฉํฅ DNS ์กฐํ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ค์ ํธ์คํธ IP๋ฅผ ํ๋ํฉ๋๋ค.- ๋ชจ๋ ๋ฆฌ์ ์ Kubernetes ํด๋ฌ์คํฐ ๊ฐ์ TCP ํฌํธ 7001์ ์ด์ด ๋ฆฌ์ ๋ฐ ๋ฐ์ดํฐ ์ผํฐ ๊ฐ์ ์์ปค ๋ ธ๋๊ฐ ํต์ ํ๋๋ก ์ฌ์ฉ ์ค์ ํฉ๋๋ค. Cassandra ํฌํธ ๋ฒํธ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํฌํธ ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
์์ธํ ๋ด์ฉ์ Kubernetes ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
GKE On-Prem
- ์ฌ๋ฌ ๋คํธ์ํฌ(์: ๋ค์ํ ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด, ๋ค๋ฅธ VPC ๋คํธ์ํฌ, ํด๋ผ์ฐ๋ ๋ฐ ์จํ๋ ) ๊ฐ์ ๋ฉํฐ ๋ฆฌ์ Apigee ๋ฐฐํฌ๋ฅผ ์ค์นํ ๋๋ Cassandra๊ฐ ๋ ธ๋ ๊ฐ ํต์ ์ ์ํด ์ฌ์ฉํ ์ ์๋ ์ด๋ฌํ ๊ฐ๋ณ ๋คํธ์ํฌ ๊ฐ์ ๋ด๋ถ ์ฐ๊ฒฐ์ ์ ๊ณตํด์ผ ํฉ๋๋ค. ์ด๋ VPN ๋๋ ํด๋ผ์ฐ๋๋ณ ์ฐ๊ฒฐ ์๋ฃจ์ ์ผ๋ก ์ํํ ์ ์์ต๋๋ค.
- ์ฌ๋ฌ ๊ฐ์ง CIDR ๋ธ๋ก์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๋ฆฌ์ ์ Kubernetes ํด๋ฌ์คํฐ๋ฅผ ์ค์ ํฉ๋๋ค.
- ๊ฐ ํด๋ฌ์คํฐ์ cert-manager๊ฐ ์ค์น๋์ด ์๋์ง ํ์ธํฉ๋๋ค.
- ๋ฆฌ์ ๊ฐ ํต์ ์ ์ค์ ํฉ๋๋ค.
- ๋ชจ๋ Cassandra ํฌ๋์์ ์์ฒด ํธ์คํธ ์ด๋ฆ์ ํ์ธํ ์ ์๋์ง ํ์ธํฉ๋๋ค. hostNetwork๊ฐ false๋ก ์ค์ ๋ ๊ฒฝ์ฐ ํธ์คํธ ์ด๋ฆ์ Cassandra ํฌ๋ ์ด๋ฆ์ ๋๋ค. hostNetwork๊ฐ true๋ก ์ค์ ๋ ๊ฒฝ์ฐ ํธ์คํธ ์ด๋ฆ์ Cassandra ํฌ๋๋ฅผ ์คํํ๋ Kubernetes ๋ ธ๋ ํธ์คํธ ์ด๋ฆ์ ๋๋ค.
- Cassandra ๋ฉํฐ ๋ฆฌ์ ์๊ตฌ์ฌํญ:
- ํฌ๋ ๋คํธ์ํฌ ๋ค์์คํ์ด์ค์ ํด๋ฌ์คํฐ ๊ฐ ์ฐ๊ฒฐ์ด ์์ผ๋ฉด(GKE On-Prem ์ค์น์ ๊ธฐ๋ณธ ์ฌ๋ก์ธ '์ฌ(island) ๋คํธ์ํฌ ๋ชจ๋'๋ก ์คํ๋๋ ํด๋ฌ์คํฐ) Apigee Hybrid ๋ฉํฐ ๋ฆฌ์ ์ค์น์์ ๋ชจ๋ ๋ฆฌ์ ์ ๋ํ ์ฌ์ ์ ํ์ผ์
cassandra.hostNetwork: true
๋ฅผ ์ค์ ํ์ฌ KuberneteshostNetwork
๊ธฐ๋ฅ์ ์ฌ์ฉ ์ค์ ํ์ธ์.hostNetwork
์ ํ์์ฑ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์๋์ ์ฌ(island) ๋ชจ๋ ํด๋ฌ์คํฐ ๋ฐ hostNetwork๋ฅผ ์ฐธ์กฐํ์ธ์. - ๋ฉํฐ ๋ฆฌ์ ๊ตฌ์ฑ์ ์ ๋ฆฌ์ ์ผ๋ก ํ์ฅํ๊ธฐ ์ ๊ธฐ์กด ํด๋ฌ์คํฐ์์
hostNetwork
๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค. hostNetwork
๊ฐ ์ฌ์ฉ ์ค์ ๋์์ผ๋ฉด ์์ปค ๋ ธ๋๊ฐ ํธ์คํธ ์ด๋ฆ์ ์ ๋ฐฉํฅ DNS ์กฐํ๋ฅผ ์ํํ ์ ์๋์ง ํ์ธํฉ๋๋ค. Apigee Cassandra๋ ์ ๋ฐฉํฅ DNS ์กฐํ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ค์ ํธ์คํธ IP๋ฅผ ํ๋ํฉ๋๋ค.- ๋ชจ๋ ๋ฆฌ์ ์ Kubernetes ํด๋ฌ์คํฐ ๊ฐ์ Cassandra ํฌํธ๋ฅผ ์ด์ด ๋ฆฌ์ ๊ณผ ๋ฐ์ดํฐ ์ผํฐ ์ฌ์ด์ ์์ปค ๋ ธ๋๊ฐ ํต์ ํ๋๋ก ์ฌ์ฉ ์ค์ ํฉ๋๋ค. Cassandra ํฌํธ ๋ฒํธ๋ ํฌํธ ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
- ํฌ๋ ๋คํธ์ํฌ ๋ค์์คํ์ด์ค์ ํด๋ฌ์คํฐ ๊ฐ ์ฐ๊ฒฐ์ด ์์ผ๋ฉด(GKE On-Prem ์ค์น์ ๊ธฐ๋ณธ ์ฌ๋ก์ธ '์ฌ(island) ๋คํธ์ํฌ ๋ชจ๋'๋ก ์คํ๋๋ ํด๋ฌ์คํฐ) Apigee Hybrid ๋ฉํฐ ๋ฆฌ์ ์ค์น์์ ๋ชจ๋ ๋ฆฌ์ ์ ๋ํ ์ฌ์ ์ ํ์ผ์
์์ธํ ๋ด์ฉ์ Kubernetes ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
AKS
- ์ฌ๋ฌ ๋คํธ์ํฌ(์: ๋ค์ํ ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด, ๋ค๋ฅธ VPC ๋คํธ์ํฌ, ํด๋ผ์ฐ๋ ๋ฐ ์จํ๋ ) ๊ฐ์ ๋ฉํฐ ๋ฆฌ์ Apigee ๋ฐฐํฌ๋ฅผ ์ค์นํ ๋๋ Cassandra๊ฐ ๋ ธ๋ ๊ฐ ํต์ ์ ์ํด ์ฌ์ฉํ ์ ์๋ ์ด๋ฌํ ๊ฐ๋ณ ๋คํธ์ํฌ ๊ฐ์ ๋ด๋ถ ์ฐ๊ฒฐ์ ์ ๊ณตํด์ผ ํฉ๋๋ค. ์ด๋ VPN ๋๋ ํด๋ผ์ฐ๋๋ณ ์ฐ๊ฒฐ ์๋ฃจ์ ์ผ๋ก ์ํํ ์ ์์ต๋๋ค.
- ํด๋ฌ์คํฐ ์ค์ ๋จ๊ณ๋ก ์ด๋ํ๊ธฐ ์ ์ Google Cloud ๋ฐ ์กฐ์ง ๊ตฌ์ฑ๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ์๊ฑด์ ์ถฉ์กฑํ ์ ์๋๋ก ํ์ด๋ธ๋ฆฌ๋ ์ค์น ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด์ธ์.
- ๊ฐ ํด๋ฌ์คํฐ์ cert-manager๊ฐ ์ค์น๋์ด ์๋์ง ํ์ธํฉ๋๋ค.
- ๋ชจ๋ Cassandra ํฌ๋์์ ์์ฒด ํธ์คํธ ์ด๋ฆ์ ํ์ธํ ์ ์๋์ง ํ์ธํฉ๋๋ค. hostNetwork๊ฐ false๋ก ์ค์ ๋ ๊ฒฝ์ฐ ํธ์คํธ ์ด๋ฆ์ Cassandra ํฌ๋ ์ด๋ฆ์ ๋๋ค. hostNetwork๊ฐ true๋ก ์ค์ ๋ ๊ฒฝ์ฐ ํธ์คํธ ์ด๋ฆ์ Cassandra ํฌ๋๋ฅผ ์คํํ๋ Kubernetes ๋ ธ๋ ํธ์คํธ ์ด๋ฆ์ ๋๋ค.
- Cassandra ๋ฉํฐ ๋ฆฌ์ ์๊ตฌ์ฌํญ:
- ํฌ๋ ๋คํธ์ํฌ ๋ค์์คํ์ด์ค์ ํด๋ฌ์คํฐ ๊ฐ ์ฐ๊ฒฐ์ด ์์ผ๋ฉด(AKS ์ค์น์ ๊ธฐ๋ณธ ์ฌ๋ก์ธ '์ฌ(island) ๋คํธ์ํฌ ๋ชจ๋'๋ก ์คํ๋๋ ํด๋ฌ์คํฐ) Apigee Hybrid ๋ฉํฐ ๋ฆฌ์ ์ค์น์์ ๋ชจ๋ ๋ฆฌ์ ์ ๋ํ ์ฌ์ ์ ํ์ผ์
cassandra.hostNetwork: true
๋ฅผ ์ค์ ํ์ฌ KuberneteshostNetwork
๊ธฐ๋ฅ์ ์ฌ์ฉ ์ค์ ํ์ธ์.hostNetwork
์ ํ์์ฑ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์๋์ ์ฌ(island) ๋ชจ๋ ํด๋ฌ์คํฐ ๋ฐ hostNetwork๋ฅผ ์ฐธ์กฐํ์ธ์. - ๋ฉํฐ ๋ฆฌ์ ๊ตฌ์ฑ์ ์ ๋ฆฌ์ ์ผ๋ก ํ์ฅํ๊ธฐ ์ ๊ธฐ์กด ํด๋ฌ์คํฐ์์
hostNetwork
๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค. hostNetwork
๊ฐ ์ฌ์ฉ ์ค์ ๋์์ผ๋ฉด ์์ปค ๋ ธ๋๊ฐ ํธ์คํธ ์ด๋ฆ์ ์ ๋ฐฉํฅ DNS ์กฐํ๋ฅผ ์ํํ ์ ์๋์ง ํ์ธํฉ๋๋ค. Apigee Cassandra๋ ์ ๋ฐฉํฅ DNS ์กฐํ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ค์ ํธ์คํธ IP๋ฅผ ํ๋ํฉ๋๋ค.- ๋ชจ๋ ๋ฆฌ์ ์ Kubernetes ํด๋ฌ์คํฐ ๊ฐ์ Cassandra ํฌํธ๋ฅผ ์ด์ด ๋ฆฌ์ ๊ณผ ๋ฐ์ดํฐ ์ผํฐ ์ฌ์ด์ ์์ปค ๋ ธ๋๊ฐ ํต์ ํ๋๋ก ์ฌ์ฉ ์ค์ ํฉ๋๋ค. Cassandra ํฌํธ ๋ฒํธ๋ ํฌํธ ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
- ํฌ๋ ๋คํธ์ํฌ ๋ค์์คํ์ด์ค์ ํด๋ฌ์คํฐ ๊ฐ ์ฐ๊ฒฐ์ด ์์ผ๋ฉด(AKS ์ค์น์ ๊ธฐ๋ณธ ์ฌ๋ก์ธ '์ฌ(island) ๋คํธ์ํฌ ๋ชจ๋'๋ก ์คํ๋๋ ํด๋ฌ์คํฐ) Apigee Hybrid ๋ฉํฐ ๋ฆฌ์ ์ค์น์์ ๋ชจ๋ ๋ฆฌ์ ์ ๋ํ ์ฌ์ ์ ํ์ผ์
์์ธํ ๋ด์ฉ์ Kubernetes ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
EKS
- ์ฌ๋ฌ ๋คํธ์ํฌ(์: ๋ค์ํ ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด, ๋ค๋ฅธ VPC ๋คํธ์ํฌ, ํด๋ผ์ฐ๋ ๋ฐ ์จํ๋ ) ๊ฐ์ ๋ฉํฐ ๋ฆฌ์ Apigee ๋ฐฐํฌ๋ฅผ ์ค์นํ ๋๋ Cassandra๊ฐ ๋ ธ๋ ๊ฐ ํต์ ์ ์ํด ์ฌ์ฉํ ์ ์๋ ์ด๋ฌํ ๊ฐ๋ณ ๋คํธ์ํฌ ๊ฐ์ ๋ด๋ถ ์ฐ๊ฒฐ์ ์ ๊ณตํด์ผ ํฉ๋๋ค. ์ด๋ VPN ๋๋ ํด๋ผ์ฐ๋๋ณ ์ฐ๊ฒฐ ์๋ฃจ์ ์ผ๋ก ์ํํ ์ ์์ต๋๋ค.
- ํด๋ฌ์คํฐ ์ค์ ๋จ๊ณ๋ก ์ด๋ํ๊ธฐ ์ ์ Google Cloud ๋ฐ ์กฐ์ง ๊ตฌ์ฑ๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ์๊ฑด์ ์ถฉ์กฑํ ์ ์๋๋ก ํ์ด๋ธ๋ฆฌ๋ ์ค์น ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด์ธ์.
- ๊ฐ ํด๋ฌ์คํฐ์ cert-manager๊ฐ ์ค์น๋์ด ์๋์ง ํ์ธํฉ๋๋ค.
- ๋ชจ๋ Cassandra ํฌ๋์์ ์์ฒด ํธ์คํธ ์ด๋ฆ์ ํ์ธํ ์ ์๋์ง ํ์ธํฉ๋๋ค. hostNetwork๊ฐ false๋ก ์ค์ ๋ ๊ฒฝ์ฐ ํธ์คํธ ์ด๋ฆ์ Cassandra ํฌ๋ ์ด๋ฆ์ ๋๋ค. hostNetwork๊ฐ true๋ก ์ค์ ๋ ๊ฒฝ์ฐ ํธ์คํธ ์ด๋ฆ์ Cassandra ํฌ๋๋ฅผ ์คํํ๋ Kubernetes ๋ ธ๋ ํธ์คํธ ์ด๋ฆ์ ๋๋ค.
- Cassandra ๋ฉํฐ ๋ฆฌ์ ์๊ตฌ์ฌํญ:
- ํฌ๋ ๋คํธ์ํฌ ๋ค์์คํ์ด์ค์ ํด๋ฌ์คํฐ ๊ฐ ์ฐ๊ฒฐ์ด ์์ผ๋ฉด('์ฌ(Island) ๋คํธ์ํฌ ๋ชจ๋'๋ก ์คํ๋๋ ํด๋ฌ์คํฐ) Apigee Hybrid ๋ฉํฐ ๋ฆฌ์ ์ค์น์์ ๋ชจ๋ ๋ฆฌ์ ์ ๋ํ ์ฌ์ ์ ํ์ผ์
cassandra.hostNetwork: true
๋ฅผ ์ค์ ํ์ฌ KuberneteshostNetwork
๊ธฐ๋ฅ์ ์ฌ์ฉ ์ค์ ํ์ธ์. Amazon EKS๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ ํตํฉํ ๋คํธ์ํฌ ๋ชจ๋ธ์ ์ฌ์ฉํฉ๋๋ค.hostNetwork
์ ํ์์ฑ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์๋์ ์ฌ(island) ๋ชจ๋ ํด๋ฌ์คํฐ ๋ฐ hostNetwork๋ฅผ ์ฐธ์กฐํ์ธ์. - ๋ฉํฐ ๋ฆฌ์ ๊ตฌ์ฑ์ ์ ๋ฆฌ์ ์ผ๋ก ํ์ฅํ๊ธฐ ์ ๊ธฐ์กด ํด๋ฌ์คํฐ์์
hostNetwork
๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค. hostNetwork
๊ฐ ์ฌ์ฉ ์ค์ ๋์์ผ๋ฉด ์์ปค ๋ ธ๋๊ฐ ํธ์คํธ ์ด๋ฆ์ ์ ๋ฐฉํฅ DNS ์กฐํ๋ฅผ ์ํํ ์ ์๋์ง ํ์ธํฉ๋๋ค. Apigee Cassandra๋ ์ ๋ฐฉํฅ DNS ์กฐํ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ค์ ํธ์คํธ IP๋ฅผ ํ๋ํฉ๋๋ค.- ๋ชจ๋ ๋ฆฌ์ ์ Kubernetes ํด๋ฌ์คํฐ ๊ฐ์ Cassandra ํฌํธ๋ฅผ ์ด์ด ๋ฆฌ์ ๊ณผ ๋ฐ์ดํฐ ์ผํฐ ์ฌ์ด์ ์์ปค ๋ ธ๋๊ฐ ํต์ ํ๋๋ก ์ฌ์ฉ ์ค์ ํฉ๋๋ค. Cassandra ํฌํธ ๋ฒํธ๋ ํฌํธ ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
- ํฌ๋ ๋คํธ์ํฌ ๋ค์์คํ์ด์ค์ ํด๋ฌ์คํฐ ๊ฐ ์ฐ๊ฒฐ์ด ์์ผ๋ฉด('์ฌ(Island) ๋คํธ์ํฌ ๋ชจ๋'๋ก ์คํ๋๋ ํด๋ฌ์คํฐ) Apigee Hybrid ๋ฉํฐ ๋ฆฌ์ ์ค์น์์ ๋ชจ๋ ๋ฆฌ์ ์ ๋ํ ์ฌ์ ์ ํ์ผ์
์์ธํ ๋ด์ฉ์ Kubernetes ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
OpenShift
- ์ฌ๋ฌ ๋คํธ์ํฌ(์: ๋ค์ํ ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด, ๋ค๋ฅธ VPC ๋คํธ์ํฌ, ํด๋ผ์ฐ๋ ๋ฐ ์จํ๋ ) ๊ฐ์ ๋ฉํฐ ๋ฆฌ์ Apigee ๋ฐฐํฌ๋ฅผ ์ค์นํ ๋๋ Cassandra๊ฐ ๋ ธ๋ ๊ฐ ํต์ ์ ์ํด ์ฌ์ฉํ ์ ์๋ ์ด๋ฌํ ๊ฐ๋ณ ๋คํธ์ํฌ ๊ฐ์ ๋ด๋ถ ์ฐ๊ฒฐ์ ์ ๊ณตํด์ผ ํฉ๋๋ค. ์ด๋ VPN ๋๋ ํด๋ผ์ฐ๋๋ณ ์ฐ๊ฒฐ ์๋ฃจ์ ์ผ๋ก ์ํํ ์ ์์ต๋๋ค.
- ํด๋ฌ์คํฐ ์ค์ ๋จ๊ณ๋ก ์ด๋ํ๊ธฐ ์ ์ Google Cloud ๋ฐ ์กฐ์ง ๊ตฌ์ฑ๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ์๊ฑด์ ์ถฉ์กฑํ ์ ์๋๋ก ํ์ด๋ธ๋ฆฌ๋ ์ค์น ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด์ธ์.
- ๊ฐ ํด๋ฌ์คํฐ์ cert-manager๊ฐ ์ค์น๋์ด ์๋์ง ํ์ธํฉ๋๋ค.
- ๋ชจ๋ Cassandra ํฌ๋์์ ์์ฒด ํธ์คํธ ์ด๋ฆ์ ํ์ธํ ์ ์๋์ง ํ์ธํฉ๋๋ค. hostNetwork๊ฐ false๋ก ์ค์ ๋ ๊ฒฝ์ฐ ํธ์คํธ ์ด๋ฆ์ Cassandra ํฌ๋ ์ด๋ฆ์ ๋๋ค. hostNetwork๊ฐ true๋ก ์ค์ ๋ ๊ฒฝ์ฐ ํธ์คํธ ์ด๋ฆ์ Cassandra ํฌ๋๋ฅผ ์คํํ๋ Kubernetes ๋ ธ๋ ํธ์คํธ ์ด๋ฆ์ ๋๋ค.
- Cassandra ๋ฉํฐ ๋ฆฌ์ ์๊ตฌ์ฌํญ:
- ํฌ๋ ๋คํธ์ํฌ ๋ค์์คํ์ด์ค์ ํด๋ฌ์คํฐ ๊ฐ ์ฐ๊ฒฐ์ด ์์ผ๋ฉด(OpenShift ์ค์น์ ๊ธฐ๋ณธ ์ฌ๋ก์ธ '์ฌ(island) ๋คํธ์ํฌ ๋ชจ๋'๋ก ์คํ๋๋ ํด๋ฌ์คํฐ) Apigee Hybrid ๋ฉํฐ ๋ฆฌ์ ์ค์น์์ ๋ชจ๋ ๋ฆฌ์ ์ ๋ํ ์ฌ์ ์ ํ์ผ์
cassandra.hostNetwork: true
๋ฅผ ์ค์ ํ์ฌ KuberneteshostNetwork
๊ธฐ๋ฅ์ ์ฌ์ฉ ์ค์ ํ์ธ์.hostNetwork
์ ํ์์ฑ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์๋์ ์ฌ(island) ๋ชจ๋ ํด๋ฌ์คํฐ ๋ฐ hostNetwork๋ฅผ ์ฐธ์กฐํ์ธ์. - ๋ฉํฐ ๋ฆฌ์ ๊ตฌ์ฑ์ ์ ๋ฆฌ์ ์ผ๋ก ํ์ฅํ๊ธฐ ์ ๊ธฐ์กด ํด๋ฌ์คํฐ์์
hostNetwork
๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค. hostNetwork
๊ฐ ์ฌ์ฉ ์ค์ ๋์์ผ๋ฉด ์์ปค ๋ ธ๋๊ฐ ํธ์คํธ ์ด๋ฆ์ ์ ๋ฐฉํฅ DNS ์กฐํ๋ฅผ ์ํํ ์ ์๋์ง ํ์ธํฉ๋๋ค. Apigee Cassandra๋ ์ ๋ฐฉํฅ DNS ์กฐํ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ค์ ํธ์คํธ IP๋ฅผ ํ๋ํฉ๋๋ค.- ๋ชจ๋ ๋ฆฌ์ ์ Kubernetes ํด๋ฌ์คํฐ ๊ฐ์ Cassandra ํฌํธ๋ฅผ ์ด์ด ๋ฆฌ์ ๊ณผ ๋ฐ์ดํฐ ์ผํฐ ์ฌ์ด์ ์์ปค ๋ ธ๋๊ฐ ํต์ ํ๋๋ก ์ฌ์ฉ ์ค์ ํฉ๋๋ค. Cassandra ํฌํธ ๋ฒํธ๋ ํฌํธ ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
- ํฌ๋ ๋คํธ์ํฌ ๋ค์์คํ์ด์ค์ ํด๋ฌ์คํฐ ๊ฐ ์ฐ๊ฒฐ์ด ์์ผ๋ฉด(OpenShift ์ค์น์ ๊ธฐ๋ณธ ์ฌ๋ก์ธ '์ฌ(island) ๋คํธ์ํฌ ๋ชจ๋'๋ก ์คํ๋๋ ํด๋ฌ์คํฐ) Apigee Hybrid ๋ฉํฐ ๋ฆฌ์ ์ค์น์์ ๋ชจ๋ ๋ฆฌ์ ์ ๋ํ ์ฌ์ ์ ํ์ผ์
์์ธํ ๋ด์ฉ์ Kubernetes ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
์ฌ(Island) ๋ชจ๋ ํด๋ฌ์คํฐ ๋ฐ hostNetwork
Kubernetes ํด๋ฌ์คํฐ์๋ ์์ ํตํฉ(ํ๋ซ) ๋ชจ๋์ ์ฌ(island) ๋ชจ๋๋ผ๋ ๋ ๊ฐ์ง ๊ธฐ๋ณธ ๋คํธ์ํฌ ๋ชจ๋ธ์ด ์์ต๋๋ค. Apigee๋ ๋ฉํฐ ๋ฆฌ์ Cassandra ์ฐ๊ฒฐ์ด ๋จ์ํ๋๋ฏ๋ก ๊ฐ๊ธ์ ํ๋ซ ๋คํธ์ํฌ ๋ชจ๋ธ์ ์ฌ์ฉํ๋๋ก ๊ถ์ฅํฉ๋๋ค. Kubernetes ํด๋ฌ์คํฐ๊ฐ ์ฌ(island) ๋ชจ๋๋ก ๊ตฌ์ฑ๋๋ฉด ํฌ๋ ๋คํธ์ํฌ๊ฐ ๊ฒฉ๋ฆฌ๋ฉ๋๋ค. ํฌ๋๋ ํฌ๋ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ํด๋ฌ์คํฐ์์ ์คํ ์ค์ธ ํฌ๋์ ์ง์ ํต์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ ๋คํธ์ํฌ ๋ชจ๋ธ์ ์์ธํ ์ฐจ์ด์ ๊ณผ ๊ฐ ๋ชจ๋ธ์ ์์๋ ์ผ๋ฐ์ ์ธ ๋คํธ์ํฌ ๋ชจ๋ธ ๊ตฌํ์ ์ฐธ์กฐํ์ธ์.
Apigee Hybrid๊ฐ ๋ ์ด์์ Kubernetes ํด๋ฌ์คํฐ์์ ์ฌ(Island) ๋ชจ๋ ๋คํธ์ํน ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์คํ๋๋ ๊ฒฝ์ฐ, cassandra.hostNetwork ์์ฑ์ ํตํด Cassandra์ hostNetwork
์ค์ ์ ์ฌ์ฉ ์ค์ ํด์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Kubernetes ํฌ๋๋ Kubernetes ์์ปค ๋
ธ๋ IP๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๊ฐ๋ณ ๋คํธ์ํฌ ๋ค์์คํ์ด์ค๋ก ๊ฒฉ๋ฆฌ๋ฉ๋๋ค. hostNetwork
๊ฐ true
๋ก ์ค์ ๋๋ฉด ํฌ๋๊ฐ ์์ฒด ๋คํธ์ํฌ ๋ค์์คํ์ด์ค ๋ด์์ ๊ฒฉ๋ฆฌ๋์ง ์๊ณ ํฌ๋๊ฐ ์์ฝ๋ Kubernetes ์์ปค ๋
ธ๋์ IP ์ฃผ์์ ํธ์คํธ ์ด๋ฆ์ ๋์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด Cassandra๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก Kubernetes ์์ปค ๋
ธ๋ IP๋ฅผ ํด๋น IP๋ก ์ฌ์ฉํ๋ฏ๋ก Cassandra๊ฐ ์ฌ(island) ๋ชจ๋๋ก ์คํ๋๋ ์ฌ๋ฌ ํด๋ฌ์คํฐ์ ๋ชจ๋ Cassandra ํฌ๋ ๊ฐ์ ํ ๋ฉ์๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
Cassandra ํธ์คํธ ์ด๋ฆ ํ์ธ
Cassandra ํฌ๋๋ ๋ค๋ฅธ Cassandra ํฌ๋๋ฅผ ํธ์คํธ ์ด๋ฆ์ผ๋ก ํ์ธํ์ง ์์ง๋ง Cassandra๋ ์์ ์ ์์ฒด ํธ์คํธ ์ด๋ฆ์ด DNS๋ก ํ์ธ ๊ฐ๋ฅํ์ง ํ์ธํฉ๋๋ค. hostNetwork
์ด true๋ก ์ค์ ๋ ๊ฒฝ์ฐ ํฌ๋ ํธ์คํธ ์ด๋ฆ์ Kubernetes ์์ปค ๋
ธ๋ ํธ์คํธ ์ด๋ฆ๊ณผ ๋์ผํ๋ฏ๋ก ์์ปค ๋
ธ๋ ํธ์คํธ ์ด๋ฆ์ ํด๋ฌ์คํฐ DNS ์๋น์ค๋ฅผ ํตํด IP ์ฃผ์๋ก ํ์ธ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค. Kubernetes ์์ปค ๋
ธ๋ ํธ์คํธ ์ด๋ฆ์ ํ์ธํ ์ ์๋ ๊ฒฝ์ฐ Cassandra ํฌ๋๊ฐ ์์ ํ ์์๋์ง ์์ต๋๋ค. ๋ฐ๋ผ์ hostNetwork
์ true
๋ก ์ค์ ํ๋ ๊ฒฝ์ฐ ํด๋ฌ์คํฐ์ ํฌ๋์์ Kubernetes ์์ปค ๋
ธ๋ ํธ์คํธ ์ด๋ฆ์ ํ์ธํ ์ ์์ด์ผ ํฉ๋๋ค.
๋ฉํฐ ๋ฆฌ์ ์ Apigee Hybrid ๊ตฌ์ฑ
์ด ์น์ ์์๋ ๋ฉํฐ ๋ฆฌ์ ์ Apigee Hybrid๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
GKE
๋ฉํฐ ๋ฆฌ์ ์๋ ํธ์คํธ ๊ตฌ์ฑ
์ด ์น์ ์์๋ ๊ธฐ์กด Cassandra ํด๋ฌ์คํฐ๋ฅผ ์ ๋ฆฌ์ ์ผ๋ก ํ์ฅํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. ์ด ์ค์ ์ ์ฌ์ฉํ๋ฉด ์ ๋ฆฌ์ ์์ ํด๋ฌ์คํฐ๋ฅผ ๋ถํธ์คํธ๋ฉํ๊ณ ๊ธฐ์กด ๋ฐ์ดํฐ ์ผํฐ์ ์กฐ์ธํ ์ ์์ต๋๋ค. ์ด ๊ตฌ์ฑ์ด ์์ผ๋ฉด ๋ฉํฐ ๋ฆฌ์ Kubernetes ํด๋ฌ์คํฐ๊ฐ ์๋ก๋ฅผ ์์ง ๋ชปํฉ๋๋ค.
-
์ฒซ ๋ฒ์งธ๋ก ์์ฑ๋ ๋ฆฌ์ ์ ๋ํด apigee ๋ค์์คํ์ด์ค์์ ํฌ๋๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
kubectl get pods -o wide -n APIGEE_NAMESPACE
- ์ด ๋ฆฌ์ ์์ Cassandra์ ๋ฉํฐ ๋ฆฌ์ ์๋ ํธ์คํธ ์ฃผ์๋ฅผ ์๋ณํฉ๋๋ค(์:
10.0.0.11
). -
๋ ๋ฒ์งธ ๋ฆฌ์ ์
overrides.yaml
ํ์ผ์ ์ค๋นํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์๋ ํธ์คํธ IP ์ฃผ์๋ฅผ ์ถ๊ฐํฉ๋๋ค.cassandra: multiRegionSeedHost: "SEED_HOST_IP_ADDRESS" datacenter: "DATACENTER_NAME" rack: "RACK_NAME" hostNetwork: false clusterName: CLUSTER_NAME
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- SEED_HOST_IP_ADDRESS๋ฅผ ์๋ ํธ์คํธ IP ์ฃผ์๋ก ๋ฐ๊ฟ๋๋ค(์:
10.0.0.11
). - DATACENTER_NAME์ ๋ฐ์ดํฐ ์ผํฐ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค(์:
dc-2
). - RACK_NAME์ ๋ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค(์:
ra-1
). - CLUSTER_NAME์ Cassandra ํด๋ฌ์คํฐ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค. ๊ธฐ๋ณธ๊ฐ์
apigeecluster
์ ๋๋ค. ๋ค๋ฅธ ํด๋ฌ์คํฐ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ cassandra.clusterName์ ๊ฐ์ ์ง์ ํด์ผ ํฉ๋๋ค. ๊ฐ์ ์ํ๋ ๋๋ก ์ ํํ ์ ์์ง๋ง ๋ชจ๋ ๋ฆฌ์ ์์ ๋์ผํด์ผ ํฉ๋๋ค.
- SEED_HOST_IP_ADDRESS๋ฅผ ์๋ ํธ์คํธ IP ์ฃผ์๋ก ๋ฐ๊ฟ๋๋ค(์:
๋ ๋ฒ์งธ ๋ฆฌ์ ๊ตฌ์ฑ
์ ๋ฆฌ์ ์ ์ค์ ํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
-
๋ ๋ฒ์งธ ๋ฆฌ์ ์ cert-manager๋ฅผ ์ค์นํฉ๋๋ค.
- ๊ธฐ์กด ํด๋ฌ์คํฐ์์ ์ ํด๋ฌ์คํฐ๋ก ์ธ์ฆ์๋ฅผ ๋ณต์ฌํฉ๋๋ค.
์ CA ๋ฃจํธ๋ Cassandra ๋ฐ mTLS์ฉ ๊ธฐํ ํ์ด๋ธ๋ฆฌ๋ ๊ตฌ์ฑ์์์์ ์ฌ์ฉ๋ฉ๋๋ค.
๋ฐ๋ผ์ ํด๋ฌ์คํฐ ๊ฐ์ ์ผ๊ด๋ ์ธ์ฆ์๊ฐ ์์ด์ผ ํฉ๋๋ค.
-
์ปจํ ์คํธ๋ฅผ ์๋ ๋ค์์คํ์ด์ค๋ก ์ค์ ํฉ๋๋ค.
kubectl config use-context ORIGINAL_CLUSTER_NAME
-
ํ์ฌ ๋ค์์คํ์ด์ค ๊ตฌ์ฑ์ ํ์ผ๋ก ๋ด๋ณด๋ ๋๋ค.
kubectl get namespace APIGEE_NAMESPACE -o yaml > apigee-namespace.yaml
-
apigee-ca
๋ณด์ ๋น๋ฐ์ ํ์ผ๋ก ๋ด๋ณด๋ ๋๋ค.kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
-
์ปจํ ์คํธ๋ฅผ ์ ๋ฆฌ์ ์ ํด๋ฌ์คํฐ ์ด๋ฆ์ผ๋ก ์ค์ ํฉ๋๋ค.
kubectl config use-context NEW_CLUSTER_NAME
-
๋ค์์คํ์ด์ค ๊ตฌ์ฑ์ ์ ํด๋ฌ์คํฐ๋ก ๊ฐ์ ธ์ต๋๋ค. ์ ๋ฆฌ์ ์์ ๋ค๋ฅธ ๋ค์์คํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํ์ผ์ ๋ค์์คํ์ด์ค๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
kubectl apply -f apigee-namespace.yaml
-
๋ณด์ ๋น๋ฐ์ ์ ํด๋ฌ์คํฐ๋ก ๊ฐ์ ธ์ต๋๋ค.
kubectl -n cert-manager apply -f apigee-ca.yaml
-
-
๋จ๊ณ์ ๋ฐ๋ผ ์ ๋ฆฌ์ ์ Apigee Hybrid CRD๋ฅผ ์ค์นํฉ๋๋ค.
-
์ด์ Helm ์ฐจํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์ 1์์์ ๊ฐ์ด ๋ค์ Helm ์ฐจํธ ๋ช ๋ น์ด๋ก ์ ๋ฆฌ์ ์ Apigee Hybrid๋ฅผ ์ค์นํฉ๋๋ค.
helm upgrade operator apigee-operator \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade datastore apigee-datastore \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade telemetry apigee-telemetry \ --install \ --namespace APIGEE_NAMESPACE> \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade redis apigee-redis \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade ingress-manager apigee-ingress-manager \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade ORG_NAME apigee-org \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
# repeat the below command for each env mentioned on the overrideshelm upgrade ENV_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set env=ENV_NAME \ -f overrides-DATACENTER_NAME.yaml
# repeat the below command for each env group mentioned on the overrideshelm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f overrides-DATACENTER_NAME.yaml
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ์ฌ Cassandra ํด๋ฌ์คํฐ ์ค์ ์ ํ์ธํฉ๋๋ค. ๊ธฐ์กด ๋ฐ์ดํฐ ์ผํฐ์ ์๋ก์ด ๋ฐ์ดํฐ ์ผํฐ ๋ชจ๋ ์ถ๋ ฅ์ ํ์๋์ด์ผ ํฉ๋๋ค.
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE \ -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
๋ค์์ ์ฑ๊ณต์ ์ธ ์ค์ ์ ๋ณด์ฌ์ฃผ๋ ์์์ ๋๋ค.
Datacenter: dc-1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.132.87.93 68.07 GiB 256 ? fb51465c-167a-42f7-98c9-b6eba1de34de c UN 10.132.84.94 69.9 GiB 256 ? f621a5ac-e7ee-48a9-9a14-73d69477c642 b UN 10.132.84.105 76.95 GiB 256 ? 0561086f-e95b-4232-ba6c-ad519ff30336 d Datacenter: dc-2 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.132.0.8 71.61 GiB 256 ? 8894a98b-8406-45de-99e2-f404ab10b5d6 c UN 10.132.9.204 75.1 GiB 256 ? afa0ffa3-630b-4f1e-b46f-fc3df988092e a UN 10.132.3.133 68.08 GiB 256 ? 25ae39ab-b39e-4d4f-9cb7-de095ab873db b
- ์ ๋ฐ์ดํฐ ์ผํฐ์ ๋ชจ๋ ํฌ๋์ Cassandra๋ฅผ ์ค์ ํฉ๋๋ค.
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ์์
apigeeorg
๋ฅผ ๊ฐ์ ธ์ต๋๋ค.kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name"
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Ex: kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name" "rg-hybrid-b7d3b9c"
- Cassandra ๋ฐ์ดํฐ ๋ณต์ ์ปค์คํ
๋ฆฌ์์ค(
YAML
) ํ์ผ์ ๋ง๋ญ๋๋ค. ํ์ผ ์ด๋ฆ์๋ ์ ํ์ด ์์ต๋๋ค. ๋ค์ ์์์์ ํ์ผ ์ด๋ฆ์datareplication.yaml
์ ๋๋ค.ํ์ผ์๋ ๋ค์์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค.
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: REGION_EXPANSION namespace: NAMESPACE spec: organizationRef: APIGEEORG_VALUE force: false source: region: SOURCE_REGION
๊ฐ ํญ๋ชฉ์ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- REGION_EXPANSION์ ์ด ๋ฉํ๋ฐ์ดํฐ์ ์ง์ ํ ์ด๋ฆ์ ๋๋ค. ์ด๋ฆ์๋ ์ ํ์ด ์์ต๋๋ค.
- NAMESPACE๋
overrides.yaml
์ ์ ๊ณต๋ ๋ค์์คํ์ด์ค์ ๋์ผํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก 'apigee
'์ ๋๋ค. - APIGEEORG_VALUE๋ ์ด์ ๋จ๊ณ์
kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name"
๋ช ๋ น์ด์์ ์ถ๋ ฅ๋ ๊ฐ์ ๋๋ค. ์๋ฅผ ๋ค๋ฉดrg-hybrid-b7d3b9c
์ ๋๋ค. - SOURCE_REGION์ ์์ค ๋ฆฌ์ ์ด๋ฉฐ ์์ค ๋ฆฌ์ overrides.yaml์ cassandra ์น์ ์๋์ ์๋ ๋ฐ์ดํฐ ์ผํฐ ๊ฐ์ ๋๋ค.
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: region-expansion namespace: apigee spec: organizationRef: rg-hybrid-b7d3b9c force: false source: region: "dc-1"
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ
CassandraDataReplication
์ ์ ์ฉํฉ๋๋ค.kubectl apply -f datareplication.yaml
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ์์
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ ๋น๋ ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
kubectl -n APIGEE_NAMESPACE get apigeeds -o json | jq ".items[].status.cassandraDataReplication"
๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ํ์๋ฉ๋๋ค.
{ "rebuildDetails": { "apigee-cassandra-default-0": { "state": "complete", "updated": 1623105760 }, "apigee-cassandra-default-1": { "state": "complete", "updated": 1623105765 }, "apigee-cassandra-default-2": { "state": "complete", "updated": 1623105770 } }, "state": "complete", "updated": 1623105770 }
- ๋ฐ์ดํฐ ๋ณต์ ๊ฐ ์๋ฃ๋๊ณ ํ์ธ๋๋ฉด ์๋ ํธ์คํธ๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค.
-
overrides-DATACENTER_NAME.yaml
์์multiRegionSeedHost: 10.0.0.11
๊ฐ ์ญ์ ๋จ -
๋ณ๊ฒฝ์ฌํญ์ ๋ค์ ์ ์ฉํ์ฌ Apigee Datastore CR์ ์ ๋ฐ์ดํธํฉ๋๋ค.
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
-
- ๋ก๊ทธ์์ ์ฌ๋น๋ ํ๋ก์ธ์ค๋ฅผ ํ์ธํฉ๋๋ค. ๋ํ
nodetool status
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ํ์ธํฉ๋๋ค.kubectl logs apigee-cassandra-default-0 -f -n APIGEE_NAMESPACE
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
๋ค์ ์์๋ ๋ก๊ทธ ํญ๋ชฉ์ ์์๋ฅผ ๋ณด์ฌ์ค๋๋ค.
INFO 01:42:24 rebuild from dc: dc-1, (All keyspaces), (All tokens) INFO 01:42:24 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Executing streaming plan for Rebuild INFO 01:42:24 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.1.45 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.1.45 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.4.36 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 1 files(0.432KiB), sending 0 files(0.000KiB) INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.1.45 is complete INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.4.36 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.5.22 INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 1 files(0.693KiB), sending 0 files(0.000KiB) INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.4.36 is complete INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.5.22 INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 3 files(0.720KiB), sending 0 files(0.000KiB) INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.5.22 is complete INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] All sessions completed
Cassandra ํด๋ฌ์คํฐ ์ํ ํ์ธ
๋ค์ ๋ช ๋ น์ด๋ ๋ ๋ฐ์ดํฐ ์ผํฐ์์ ํด๋ฌ์คํฐ ์ค์ ์ด ์ฑ๊ณตํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค. ์ด ๋ช ๋ น์ด๋ ๋ ๋ฆฌ์ ์ nodetool ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status Datacenter: dc-1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.12.1.45 112.09 KiB 256 100.0% 3c98c816-3f4d-48f0-9717-03d0c998637f ra-1 UN 10.12.4.36 95.27 KiB 256 100.0% 0a36383d-1d9e-41e2-924c-7b62be12d6cc ra-1 UN 10.12.5.22 88.7 KiB 256 100.0% 3561f4fa-af3d-4ea4-93b2-79ac7e938201 ra-1 Datacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.0.4.33 78.69 KiB 256 100.0% a200217d-260b-45cd-b83c-182b27ff4c99 ra-1 UN 10.0.0.21 78.68 KiB 256 100.0% 9f3364b9-a7a1-409c-9356-b7d1d312e52b ra-1 UN 10.0.1.26 15.46 KiB 256 100.0% 1666df0f-702e-4c5b-8b6e-086d0f2e47fa ra-1
GKE On-Prem
๋ฉํฐ ๋ฆฌ์ ์๋ ํธ์คํธ ๊ตฌ์ฑ
์ด ์น์ ์์๋ ๊ธฐ์กด Cassandra ํด๋ฌ์คํฐ๋ฅผ ์ ๋ฆฌ์ ์ผ๋ก ํ์ฅํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. ์ด ์ค์ ์ ์ฌ์ฉํ๋ฉด ์ ๋ฆฌ์ ์์ ํด๋ฌ์คํฐ๋ฅผ ๋ถํธ์คํธ๋ฉํ๊ณ ๊ธฐ์กด ๋ฐ์ดํฐ ์ผํฐ์ ์กฐ์ธํ ์ ์์ต๋๋ค. ์ด ๊ตฌ์ฑ์ด ์์ผ๋ฉด ๋ฉํฐ ๋ฆฌ์ Kubernetes ํด๋ฌ์คํฐ๊ฐ ์๋ก๋ฅผ ์์ง ๋ชปํฉ๋๋ค.
-
์ฒซ ๋ฒ์งธ๋ก ์์ฑ๋ ๋ฆฌ์ ์ ๋ํด apigee ๋ค์์คํ์ด์ค์์ ํฌ๋๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
kubectl get pods -o wide -n APIGEE_NAMESPACE
- ์ด ๋ฆฌ์ ์์ Cassandra์ ๋ฉํฐ ๋ฆฌ์ ์๋ ํธ์คํธ ์ฃผ์๋ฅผ ์๋ณํฉ๋๋ค(์:
10.0.0.11
). -
๋ ๋ฒ์งธ ๋ฆฌ์ ์
overrides.yaml
ํ์ผ์ ์ค๋นํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์๋ ํธ์คํธ IP ์ฃผ์๋ฅผ ์ถ๊ฐํฉ๋๋ค.cassandra: multiRegionSeedHost: "SEED_HOST_IP_ADDRESS" datacenter: "DATACENTER_NAME" rack: "RACK_NAME" hostNetwork: false clusterName: CLUSTER_NAME
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- SEED_HOST_IP_ADDRESS๋ฅผ ์๋ ํธ์คํธ IP ์ฃผ์๋ก ๋ฐ๊ฟ๋๋ค(์:
10.0.0.11
). - DATACENTER_NAME์ ๋ฐ์ดํฐ ์ผํฐ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค(์:
dc-2
). - RACK_NAME์ ๋ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค(์:
ra-1
). - CLUSTER_NAME์ Cassandra ํด๋ฌ์คํฐ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค. ๊ธฐ๋ณธ๊ฐ์
apigeecluster
์ ๋๋ค. ๋ค๋ฅธ ํด๋ฌ์คํฐ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ cassandra.clusterName์ ๊ฐ์ ์ง์ ํด์ผ ํฉ๋๋ค. ๊ฐ์ ์ํ๋ ๋๋ก ์ ํํ ์ ์์ง๋ง ๋ชจ๋ ๋ฆฌ์ ์์ ๋์ผํด์ผ ํฉ๋๋ค.
- SEED_HOST_IP_ADDRESS๋ฅผ ์๋ ํธ์คํธ IP ์ฃผ์๋ก ๋ฐ๊ฟ๋๋ค(์:
๋ ๋ฒ์งธ ๋ฆฌ์ ๊ตฌ์ฑ
์ ๋ฆฌ์ ์ ์ค์ ํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
-
๋ ๋ฒ์งธ ๋ฆฌ์ ์ cert-manager๋ฅผ ์ค์นํฉ๋๋ค.
- ๊ธฐ์กด ํด๋ฌ์คํฐ์์ ์ ํด๋ฌ์คํฐ๋ก ์ธ์ฆ์๋ฅผ ๋ณต์ฌํฉ๋๋ค.
์ CA ๋ฃจํธ๋ Cassandra ๋ฐ mTLS์ฉ ๊ธฐํ ํ์ด๋ธ๋ฆฌ๋ ๊ตฌ์ฑ์์์์ ์ฌ์ฉ๋ฉ๋๋ค.
๋ฐ๋ผ์ ํด๋ฌ์คํฐ ๊ฐ์ ์ผ๊ด๋ ์ธ์ฆ์๊ฐ ์์ด์ผ ํฉ๋๋ค.
-
์ปจํ ์คํธ๋ฅผ ์๋ ๋ค์์คํ์ด์ค๋ก ์ค์ ํฉ๋๋ค.
kubectl config use-context ORIGINAL_CLUSTER_NAME
-
ํ์ฌ ๋ค์์คํ์ด์ค ๊ตฌ์ฑ์ ํ์ผ๋ก ๋ด๋ณด๋ ๋๋ค.
kubectl get namespace APIGEE_NAMESPACE -o yaml > apigee-namespace.yaml
-
apigee-ca
๋ณด์ ๋น๋ฐ์ ํ์ผ๋ก ๋ด๋ณด๋ ๋๋ค.kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
-
์ปจํ ์คํธ๋ฅผ ์ ๋ฆฌ์ ์ ํด๋ฌ์คํฐ ์ด๋ฆ์ผ๋ก ์ค์ ํฉ๋๋ค.
kubectl config use-context NEW_CLUSTER_NAME
-
๋ค์์คํ์ด์ค ๊ตฌ์ฑ์ ์ ํด๋ฌ์คํฐ๋ก ๊ฐ์ ธ์ต๋๋ค. ์ ๋ฆฌ์ ์์ ๋ค๋ฅธ ๋ค์์คํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํ์ผ์ ๋ค์์คํ์ด์ค๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
kubectl apply -f apigee-namespace.yaml
-
๋ณด์ ๋น๋ฐ์ ์ ํด๋ฌ์คํฐ๋ก ๊ฐ์ ธ์ต๋๋ค.
kubectl -n cert-manager apply -f apigee-ca.yaml
-
-
๋จ๊ณ์ ๋ฐ๋ผ ์ ๋ฆฌ์ ์ Apigee Hybrid CRD๋ฅผ ์ค์นํฉ๋๋ค.
-
์ด์ Helm ์ฐจํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์ 1์์์ ๊ฐ์ด ๋ค์ Helm ์ฐจํธ ๋ช ๋ น์ด๋ก ์ ๋ฆฌ์ ์ Apigee Hybrid๋ฅผ ์ค์นํฉ๋๋ค.
helm upgrade operator apigee-operator \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade datastore apigee-datastore \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade telemetry apigee-telemetry \ --install \ --namespace APIGEE_NAMESPACE> \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade redis apigee-redis \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade ingress-manager apigee-ingress-manager \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade ORG_NAME apigee-org \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
# repeat the below command for each env mentioned on the overrideshelm upgrade ENV_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set env=ENV_NAME \ -f overrides-DATACENTER_NAME.yaml
# repeat the below command for each env group mentioned on the overrideshelm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f overrides-DATACENTER_NAME.yaml
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ์ฌ Cassandra ํด๋ฌ์คํฐ ์ค์ ์ ํ์ธํฉ๋๋ค. ๊ธฐ์กด ๋ฐ์ดํฐ ์ผํฐ์ ์๋ก์ด ๋ฐ์ดํฐ ์ผํฐ ๋ชจ๋ ์ถ๋ ฅ์ ํ์๋์ด์ผ ํฉ๋๋ค.
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE \ -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
๋ค์์ ์ฑ๊ณต์ ์ธ ์ค์ ์ ๋ณด์ฌ์ฃผ๋ ์์์ ๋๋ค.
Datacenter: dc-1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.132.87.93 68.07 GiB 256 ? fb51465c-167a-42f7-98c9-b6eba1de34de c UN 10.132.84.94 69.9 GiB 256 ? f621a5ac-e7ee-48a9-9a14-73d69477c642 b UN 10.132.84.105 76.95 GiB 256 ? 0561086f-e95b-4232-ba6c-ad519ff30336 d Datacenter: dc-2 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.132.0.8 71.61 GiB 256 ? 8894a98b-8406-45de-99e2-f404ab10b5d6 c UN 10.132.9.204 75.1 GiB 256 ? afa0ffa3-630b-4f1e-b46f-fc3df988092e a UN 10.132.3.133 68.08 GiB 256 ? 25ae39ab-b39e-4d4f-9cb7-de095ab873db b
- ์ ๋ฐ์ดํฐ ์ผํฐ์ ๋ชจ๋ ํฌ๋์ Cassandra๋ฅผ ์ค์ ํฉ๋๋ค.
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ์์
apigeeorg
๋ฅผ ๊ฐ์ ธ์ต๋๋ค.kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name"
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Ex: kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name" "rg-hybrid-b7d3b9c"
- Cassandra ๋ฐ์ดํฐ ๋ณต์ ์ปค์คํ
๋ฆฌ์์ค(
YAML
) ํ์ผ์ ๋ง๋ญ๋๋ค. ํ์ผ ์ด๋ฆ์๋ ์ ํ์ด ์์ต๋๋ค. ๋ค์ ์์์์ ํ์ผ ์ด๋ฆ์datareplication.yaml
์ ๋๋ค.ํ์ผ์๋ ๋ค์์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค.
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: REGION_EXPANSION namespace: NAMESPACE spec: organizationRef: APIGEEORG_VALUE force: false source: region: SOURCE_REGION
๊ฐ ํญ๋ชฉ์ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- REGION_EXPANSION์ ์ด ๋ฉํ๋ฐ์ดํฐ์ ์ง์ ํ ์ด๋ฆ์ ๋๋ค. ์ด๋ฆ์๋ ์ ํ์ด ์์ต๋๋ค.
- NAMESPACE๋
overrides.yaml
์ ์ ๊ณต๋ ๋ค์์คํ์ด์ค์ ๋์ผํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก 'apigee
'์ ๋๋ค. - APIGEEORG_VALUE๋ ์ด์ ๋จ๊ณ์
kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name"
๋ช ๋ น์ด์์ ์ถ๋ ฅ๋ ๊ฐ์ ๋๋ค. ์๋ฅผ ๋ค๋ฉดrg-hybrid-b7d3b9c
์ ๋๋ค. - SOURCE_REGION์ ์์ค ๋ฆฌ์ ์ด๋ฉฐ ์์ค ๋ฆฌ์ overrides.yaml์ cassandra ์น์ ์๋์ ์๋ ๋ฐ์ดํฐ ์ผํฐ ๊ฐ์ ๋๋ค.
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: region-expansion namespace: apigee spec: organizationRef: rg-hybrid-b7d3b9c force: false source: region: "dc-1"
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ
CassandraDataReplication
์ ์ ์ฉํฉ๋๋ค.kubectl apply -f datareplication.yaml
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ์์
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ ๋น๋ ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
kubectl -n APIGEE_NAMESPACE get apigeeds -o json | jq ".items[].status.cassandraDataReplication"
๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ํ์๋ฉ๋๋ค.
{ "rebuildDetails": { "apigee-cassandra-default-0": { "state": "complete", "updated": 1623105760 }, "apigee-cassandra-default-1": { "state": "complete", "updated": 1623105765 }, "apigee-cassandra-default-2": { "state": "complete", "updated": 1623105770 } }, "state": "complete", "updated": 1623105770 }
- ๋ฐ์ดํฐ ๋ณต์ ๊ฐ ์๋ฃ๋๊ณ ํ์ธ๋๋ฉด ์๋ ํธ์คํธ๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค.
-
overrides-DATACENTER_NAME.yaml
์์multiRegionSeedHost: 10.0.0.11
๊ฐ ์ญ์ ๋จ -
๋ณ๊ฒฝ์ฌํญ์ ๋ค์ ์ ์ฉํ์ฌ Apigee Datastore CR์ ์ ๋ฐ์ดํธํฉ๋๋ค.
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
-
- ๋ก๊ทธ์์ ์ฌ๋น๋ ํ๋ก์ธ์ค๋ฅผ ํ์ธํฉ๋๋ค. ๋ํ
nodetool status
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ํ์ธํฉ๋๋ค.kubectl logs apigee-cassandra-default-0 -f -n APIGEE_NAMESPACE
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
๋ค์ ์์๋ ๋ก๊ทธ ํญ๋ชฉ์ ์์๋ฅผ ๋ณด์ฌ์ค๋๋ค.
INFO 01:42:24 rebuild from dc: dc-1, (All keyspaces), (All tokens) INFO 01:42:24 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Executing streaming plan for Rebuild INFO 01:42:24 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.1.45 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.1.45 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.4.36 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 1 files(0.432KiB), sending 0 files(0.000KiB) INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.1.45 is complete INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.4.36 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.5.22 INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 1 files(0.693KiB), sending 0 files(0.000KiB) INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.4.36 is complete INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.5.22 INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 3 files(0.720KiB), sending 0 files(0.000KiB) INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.5.22 is complete INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] All sessions completed
Cassandra ํด๋ฌ์คํฐ ์ํ ํ์ธ
๋ค์ ๋ช ๋ น์ด๋ ๋ ๋ฐ์ดํฐ ์ผํฐ์์ ํด๋ฌ์คํฐ ์ค์ ์ด ์ฑ๊ณตํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค. ์ด ๋ช ๋ น์ด๋ ๋ ๋ฆฌ์ ์ nodetool ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status Datacenter: dc-1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.12.1.45 112.09 KiB 256 100.0% 3c98c816-3f4d-48f0-9717-03d0c998637f ra-1 UN 10.12.4.36 95.27 KiB 256 100.0% 0a36383d-1d9e-41e2-924c-7b62be12d6cc ra-1 UN 10.12.5.22 88.7 KiB 256 100.0% 3561f4fa-af3d-4ea4-93b2-79ac7e938201 ra-1 Datacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.0.4.33 78.69 KiB 256 100.0% a200217d-260b-45cd-b83c-182b27ff4c99 ra-1 UN 10.0.0.21 78.68 KiB 256 100.0% 9f3364b9-a7a1-409c-9356-b7d1d312e52b ra-1 UN 10.0.1.26 15.46 KiB 256 100.0% 1666df0f-702e-4c5b-8b6e-086d0f2e47fa ra-1
AKS
๊ฐ ๋ฆฌ์ ์ ๊ฐ์ ๋คํธ์ํฌ ๋ง๋ค๊ธฐ
Azure ๊ถ์ฅ์ฌํญ์ ๋ฐ๋ผ ์ฌ๊ธฐ์์ ๋ฆฌ์ ๊ฐ ํต์ ์ ์ค์ ํฉ๋๋ค. VNet-to-VNet: Azure์์ ์ฌ๋ฌ ๋ฆฌ์ ๊ฐ ๊ฐ์ ๋คํธ์ํฌ ์ฐ๊ฒฐ.
๋ค์ค ๋ฆฌ์ ํด๋ฌ์คํฐ ๋ง๋ค๊ธฐ
์ฌ๋ฌ ๊ฐ์ง CIDR ๋ธ๋ก์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๋ฆฌ์ ์ Kubernetes ํด๋ฌ์คํฐ๋ฅผ ์ค์ ํฉ๋๋ค. 1๋จ๊ณ: ํด๋ฌ์คํฐ ๋ง๋ค๊ธฐ๋ ์ฐธ์กฐํ์ธ์. ์์์ ๋ง๋ ์์น ๋ฐ ๊ฐ์ ๋คํธ์ํฌ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค.
๋ชจ๋ ๋ฆฌ์ ์ Kubernetes ํด๋ฌ์คํฐ ๊ฐ์ Cassandra ํฌํธ๋ฅผ ์ด์ด ๋ฆฌ์ ๊ณผ ๋ฐ์ดํฐ ์ผํฐ ์ฌ์ด์ ์์ปค ๋ ธ๋๊ฐ ํต์ ํ๋๋ก ์ฌ์ฉ ์ค์ ํฉ๋๋ค. Cassandra ํฌํธ ๋ฒํธ๋ ํฌํธ ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
๋ฉํฐ ๋ฆฌ์ ์๋ ํธ์คํธ ๊ตฌ์ฑ
์ด ์น์ ์์๋ ๊ธฐ์กด Cassandra ํด๋ฌ์คํฐ๋ฅผ ์ ๋ฆฌ์ ์ผ๋ก ํ์ฅํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. ์ด ์ค์ ์ ์ฌ์ฉํ๋ฉด ์ ๋ฆฌ์ ์์ ํด๋ฌ์คํฐ๋ฅผ ๋ถํธ์คํธ๋ฉํ๊ณ ๊ธฐ์กด ๋ฐ์ดํฐ ์ผํฐ์ ์กฐ์ธํ ์ ์์ต๋๋ค. ์ด ๊ตฌ์ฑ์ด ์์ผ๋ฉด ๋ฉํฐ ๋ฆฌ์ Kubernetes ํด๋ฌ์คํฐ๊ฐ ์๋ก๋ฅผ ์์ง ๋ชปํฉ๋๋ค.
-
์ฒซ ๋ฒ์งธ๋ก ์์ฑ๋ ๋ฆฌ์ ์ ๋ํด apigee ๋ค์์คํ์ด์ค์์ ํฌ๋๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
kubectl get pods -o wide -n APIGEE_NAMESPACE
- ์ด ๋ฆฌ์ ์์ Cassandra์ ๋ฉํฐ ๋ฆฌ์ ์๋ ํธ์คํธ ์ฃผ์๋ฅผ ์๋ณํฉ๋๋ค(์:
10.0.0.11
). -
๋ ๋ฒ์งธ ๋ฆฌ์ ์
overrides.yaml
ํ์ผ์ ์ค๋นํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์๋ ํธ์คํธ IP ์ฃผ์๋ฅผ ์ถ๊ฐํฉ๋๋ค.cassandra: multiRegionSeedHost: "SEED_HOST_IP_ADDRESS" datacenter: "DATACENTER_NAME" rack: "RACK_NAME" hostNetwork: false clusterName: CLUSTER_NAME
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- SEED_HOST_IP_ADDRESS๋ฅผ ์๋ ํธ์คํธ IP ์ฃผ์๋ก ๋ฐ๊ฟ๋๋ค(์:
10.0.0.11
). - DATACENTER_NAME์ ๋ฐ์ดํฐ ์ผํฐ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค(์:
dc-2
). - RACK_NAME์ ๋ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค(์:
ra-1
). - CLUSTER_NAME์ Cassandra ํด๋ฌ์คํฐ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค. ๊ธฐ๋ณธ๊ฐ์
apigeecluster
์ ๋๋ค. ๋ค๋ฅธ ํด๋ฌ์คํฐ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ cassandra.clusterName์ ๊ฐ์ ์ง์ ํด์ผ ํฉ๋๋ค. ๊ฐ์ ์ํ๋ ๋๋ก ์ ํํ ์ ์์ง๋ง ๋ชจ๋ ๋ฆฌ์ ์์ ๋์ผํด์ผ ํฉ๋๋ค.
- SEED_HOST_IP_ADDRESS๋ฅผ ์๋ ํธ์คํธ IP ์ฃผ์๋ก ๋ฐ๊ฟ๋๋ค(์:
๋ ๋ฒ์งธ ๋ฆฌ์ ๊ตฌ์ฑ
์ ๋ฆฌ์ ์ ์ค์ ํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
-
๋ ๋ฒ์งธ ๋ฆฌ์ ์ cert-manager๋ฅผ ์ค์นํฉ๋๋ค.
- ๊ธฐ์กด ํด๋ฌ์คํฐ์์ ์ ํด๋ฌ์คํฐ๋ก ์ธ์ฆ์๋ฅผ ๋ณต์ฌํฉ๋๋ค.
์ CA ๋ฃจํธ๋ Cassandra ๋ฐ mTLS์ฉ ๊ธฐํ ํ์ด๋ธ๋ฆฌ๋ ๊ตฌ์ฑ์์์์ ์ฌ์ฉ๋ฉ๋๋ค.
๋ฐ๋ผ์ ํด๋ฌ์คํฐ ๊ฐ์ ์ผ๊ด๋ ์ธ์ฆ์๊ฐ ์์ด์ผ ํฉ๋๋ค.
-
์ปจํ ์คํธ๋ฅผ ์๋ ๋ค์์คํ์ด์ค๋ก ์ค์ ํฉ๋๋ค.
kubectl config use-context ORIGINAL_CLUSTER_NAME
-
ํ์ฌ ๋ค์์คํ์ด์ค ๊ตฌ์ฑ์ ํ์ผ๋ก ๋ด๋ณด๋ ๋๋ค.
kubectl get namespace APIGEE_NAMESPACE -o yaml > apigee-namespace.yaml
-
apigee-ca
๋ณด์ ๋น๋ฐ์ ํ์ผ๋ก ๋ด๋ณด๋ ๋๋ค.kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
-
์ปจํ ์คํธ๋ฅผ ์ ๋ฆฌ์ ์ ํด๋ฌ์คํฐ ์ด๋ฆ์ผ๋ก ์ค์ ํฉ๋๋ค.
kubectl config use-context NEW_CLUSTER_NAME
-
๋ค์์คํ์ด์ค ๊ตฌ์ฑ์ ์ ํด๋ฌ์คํฐ๋ก ๊ฐ์ ธ์ต๋๋ค. ์ ๋ฆฌ์ ์์ ๋ค๋ฅธ ๋ค์์คํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํ์ผ์ ๋ค์์คํ์ด์ค๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
kubectl apply -f apigee-namespace.yaml
-
๋ณด์ ๋น๋ฐ์ ์ ํด๋ฌ์คํฐ๋ก ๊ฐ์ ธ์ต๋๋ค.
kubectl -n cert-manager apply -f apigee-ca.yaml
-
-
๋จ๊ณ์ ๋ฐ๋ผ ์ ๋ฆฌ์ ์ Apigee Hybrid CRD๋ฅผ ์ค์นํฉ๋๋ค.
-
์ด์ Helm ์ฐจํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์ 1์์์ ๊ฐ์ด ๋ค์ Helm ์ฐจํธ ๋ช ๋ น์ด๋ก ์ ๋ฆฌ์ ์ Apigee Hybrid๋ฅผ ์ค์นํฉ๋๋ค.
helm upgrade operator apigee-operator \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade datastore apigee-datastore \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade telemetry apigee-telemetry \ --install \ --namespace APIGEE_NAMESPACE> \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade redis apigee-redis \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade ingress-manager apigee-ingress-manager \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade ORG_NAME apigee-org \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
# repeat the below command for each env mentioned on the overrideshelm upgrade ENV_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set env=ENV_NAME \ -f overrides-DATACENTER_NAME.yaml
# repeat the below command for each env group mentioned on the overrideshelm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f overrides-DATACENTER_NAME.yaml
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ์ฌ Cassandra ํด๋ฌ์คํฐ ์ค์ ์ ํ์ธํฉ๋๋ค. ๊ธฐ์กด ๋ฐ์ดํฐ ์ผํฐ์ ์๋ก์ด ๋ฐ์ดํฐ ์ผํฐ ๋ชจ๋ ์ถ๋ ฅ์ ํ์๋์ด์ผ ํฉ๋๋ค.
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE \ -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
๋ค์์ ์ฑ๊ณต์ ์ธ ์ค์ ์ ๋ณด์ฌ์ฃผ๋ ์์์ ๋๋ค.
Datacenter: dc-1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.132.87.93 68.07 GiB 256 ? fb51465c-167a-42f7-98c9-b6eba1de34de c UN 10.132.84.94 69.9 GiB 256 ? f621a5ac-e7ee-48a9-9a14-73d69477c642 b UN 10.132.84.105 76.95 GiB 256 ? 0561086f-e95b-4232-ba6c-ad519ff30336 d Datacenter: dc-2 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.132.0.8 71.61 GiB 256 ? 8894a98b-8406-45de-99e2-f404ab10b5d6 c UN 10.132.9.204 75.1 GiB 256 ? afa0ffa3-630b-4f1e-b46f-fc3df988092e a UN 10.132.3.133 68.08 GiB 256 ? 25ae39ab-b39e-4d4f-9cb7-de095ab873db b
- ์ ๋ฐ์ดํฐ ์ผํฐ์ ๋ชจ๋ ํฌ๋์ Cassandra๋ฅผ ์ค์ ํฉ๋๋ค.
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ์์
apigeeorg
๋ฅผ ๊ฐ์ ธ์ต๋๋ค.kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name"
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Ex: kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name" "rg-hybrid-b7d3b9c"
- Cassandra ๋ฐ์ดํฐ ๋ณต์ ์ปค์คํ
๋ฆฌ์์ค(
YAML
) ํ์ผ์ ๋ง๋ญ๋๋ค. ํ์ผ ์ด๋ฆ์๋ ์ ํ์ด ์์ต๋๋ค. ๋ค์ ์์์์ ํ์ผ ์ด๋ฆ์datareplication.yaml
์ ๋๋ค.ํ์ผ์๋ ๋ค์์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค.
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: REGION_EXPANSION namespace: NAMESPACE spec: organizationRef: APIGEEORG_VALUE force: false source: region: SOURCE_REGION
๊ฐ ํญ๋ชฉ์ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- REGION_EXPANSION์ ์ด ๋ฉํ๋ฐ์ดํฐ์ ์ง์ ํ ์ด๋ฆ์ ๋๋ค. ์ด๋ฆ์๋ ์ ํ์ด ์์ต๋๋ค.
- NAMESPACE๋
overrides.yaml
์ ์ ๊ณต๋ ๋ค์์คํ์ด์ค์ ๋์ผํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก 'apigee
'์ ๋๋ค. - APIGEEORG_VALUE๋ ์ด์ ๋จ๊ณ์
kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name"
๋ช ๋ น์ด์์ ์ถ๋ ฅ๋ ๊ฐ์ ๋๋ค. ์๋ฅผ ๋ค๋ฉดrg-hybrid-b7d3b9c
์ ๋๋ค. - SOURCE_REGION์ ์์ค ๋ฆฌ์ ์ด๋ฉฐ ์์ค ๋ฆฌ์ overrides.yaml์ cassandra ์น์ ์๋์ ์๋ ๋ฐ์ดํฐ ์ผํฐ ๊ฐ์ ๋๋ค.
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: region-expansion namespace: apigee spec: organizationRef: rg-hybrid-b7d3b9c force: false source: region: "dc-1"
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ
CassandraDataReplication
์ ์ ์ฉํฉ๋๋ค.kubectl apply -f datareplication.yaml
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ์์
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ ๋น๋ ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
kubectl -n APIGEE_NAMESPACE get apigeeds -o json | jq ".items[].status.cassandraDataReplication"
๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ํ์๋ฉ๋๋ค.
{ "rebuildDetails": { "apigee-cassandra-default-0": { "state": "complete", "updated": 1623105760 }, "apigee-cassandra-default-1": { "state": "complete", "updated": 1623105765 }, "apigee-cassandra-default-2": { "state": "complete", "updated": 1623105770 } }, "state": "complete", "updated": 1623105770 }
- ๋ฐ์ดํฐ ๋ณต์ ๊ฐ ์๋ฃ๋๊ณ ํ์ธ๋๋ฉด ์๋ ํธ์คํธ๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค.
-
overrides-DATACENTER_NAME.yaml
์์multiRegionSeedHost: 10.0.0.11
๊ฐ ์ญ์ ๋จ -
๋ณ๊ฒฝ์ฌํญ์ ๋ค์ ์ ์ฉํ์ฌ Apigee Datastore CR์ ์ ๋ฐ์ดํธํฉ๋๋ค.
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
-
- ๋ก๊ทธ์์ ์ฌ๋น๋ ํ๋ก์ธ์ค๋ฅผ ํ์ธํฉ๋๋ค. ๋ํ
nodetool status
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ํ์ธํฉ๋๋ค.kubectl logs apigee-cassandra-default-0 -f -n APIGEE_NAMESPACE
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
๋ค์ ์์๋ ๋ก๊ทธ ํญ๋ชฉ์ ์์๋ฅผ ๋ณด์ฌ์ค๋๋ค.
INFO 01:42:24 rebuild from dc: dc-1, (All keyspaces), (All tokens) INFO 01:42:24 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Executing streaming plan for Rebuild INFO 01:42:24 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.1.45 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.1.45 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.4.36 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 1 files(0.432KiB), sending 0 files(0.000KiB) INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.1.45 is complete INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.4.36 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.5.22 INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 1 files(0.693KiB), sending 0 files(0.000KiB) INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.4.36 is complete INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.5.22 INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 3 files(0.720KiB), sending 0 files(0.000KiB) INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.5.22 is complete INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] All sessions completed
Cassandra ํด๋ฌ์คํฐ ์ํ ํ์ธ
๋ค์ ๋ช ๋ น์ด๋ ๋ ๋ฐ์ดํฐ ์ผํฐ์์ ํด๋ฌ์คํฐ ์ค์ ์ด ์ฑ๊ณตํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค. ์ด ๋ช ๋ น์ด๋ ๋ ๋ฆฌ์ ์ nodetool ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status Datacenter: dc-1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.12.1.45 112.09 KiB 256 100.0% 3c98c816-3f4d-48f0-9717-03d0c998637f ra-1 UN 10.12.4.36 95.27 KiB 256 100.0% 0a36383d-1d9e-41e2-924c-7b62be12d6cc ra-1 UN 10.12.5.22 88.7 KiB 256 100.0% 3561f4fa-af3d-4ea4-93b2-79ac7e938201 ra-1 Datacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.0.4.33 78.69 KiB 256 100.0% a200217d-260b-45cd-b83c-182b27ff4c99 ra-1 UN 10.0.0.21 78.68 KiB 256 100.0% 9f3364b9-a7a1-409c-9356-b7d1d312e52b ra-1 UN 10.0.1.26 15.46 KiB 256 100.0% 1666df0f-702e-4c5b-8b6e-086d0f2e47fa ra-1
EKS
๊ฐ ๋ฆฌ์ ์ ๊ฐ์ ๋คํธ์ํฌ ๋ง๋ค๊ธฐ
VPC ํผ์ด๋ง์ด๋ ๋ฌด์์ธ๊ฐ์?์ ์ค๋ช ๋ ๋๋ก ๋ฆฌ์ ๊ฐ ํต์ ์ ์ค์ ํ๊ธฐ ์ํ AWS ๊ถ์ฅ์ฌํญ์ ๋ฐ๋ฅด์ธ์. ๋ค๋ฅธ ๋ฆฌ์ ์ ์ฌ์ฉํ๋ AWS ์ฉ์ด๋ ๋ฆฌ์ ๊ฐ VPC ํผ์ด๋ง์ ๋๋ค.
๋ค์ค ๋ฆฌ์ ํด๋ฌ์คํฐ ๋ง๋ค๊ธฐ
์ฌ๋ฌ ๊ฐ์ง CIDR ๋ธ๋ก์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๋ฆฌ์ ์ Kubernetes ํด๋ฌ์คํฐ๋ฅผ ์ค์ ํฉ๋๋ค. 1๋จ๊ณ: ํด๋ฌ์คํฐ ๋ง๋ค๊ธฐ๋ ์ฐธ์กฐํ์ธ์. ์์์ ๋ง๋ ์์น ๋ฐ ๊ฐ์ ๋คํธ์ํฌ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค.
๋ชจ๋ ๋ฆฌ์ ์ Kubernetes ํด๋ฌ์คํฐ ๊ฐ์ Cassandra ํฌํธ๋ฅผ ์ด์ด ๋ฆฌ์ ๊ณผ ๋ฐ์ดํฐ ์ผํฐ ์ฌ์ด์ ์์ปค ๋ ธ๋๊ฐ ํต์ ํ๋๋ก ์ฌ์ฉ ์ค์ ํฉ๋๋ค. Cassandra ํฌํธ ๋ฒํธ๋ ํฌํธ ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
๋ฉํฐ ๋ฆฌ์ ์๋ ํธ์คํธ ๊ตฌ์ฑ
์ด ์น์ ์์๋ ๊ธฐ์กด Cassandra ํด๋ฌ์คํฐ๋ฅผ ์ ๋ฆฌ์ ์ผ๋ก ํ์ฅํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. ์ด ์ค์ ์ ์ฌ์ฉํ๋ฉด ์ ๋ฆฌ์ ์์ ํด๋ฌ์คํฐ๋ฅผ ๋ถํธ์คํธ๋ฉํ๊ณ ๊ธฐ์กด ๋ฐ์ดํฐ ์ผํฐ์ ์กฐ์ธํ ์ ์์ต๋๋ค. ์ด ๊ตฌ์ฑ์ด ์์ผ๋ฉด ๋ฉํฐ ๋ฆฌ์ Kubernetes ํด๋ฌ์คํฐ๊ฐ ์๋ก๋ฅผ ์์ง ๋ชปํฉ๋๋ค.
-
์ฒซ ๋ฒ์งธ๋ก ์์ฑ๋ ๋ฆฌ์ ์ ๋ํด apigee ๋ค์์คํ์ด์ค์์ ํฌ๋๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
kubectl get pods -o wide -n APIGEE_NAMESPACE
- ์ด ๋ฆฌ์ ์์ Cassandra์ ๋ฉํฐ ๋ฆฌ์ ์๋ ํธ์คํธ ์ฃผ์๋ฅผ ์๋ณํฉ๋๋ค(์:
10.0.0.11
). -
๋ ๋ฒ์งธ ๋ฆฌ์ ์
overrides.yaml
ํ์ผ์ ์ค๋นํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์๋ ํธ์คํธ IP ์ฃผ์๋ฅผ ์ถ๊ฐํฉ๋๋ค.cassandra: multiRegionSeedHost: "SEED_HOST_IP_ADDRESS" datacenter: "DATACENTER_NAME" rack: "RACK_NAME" hostNetwork: false clusterName: CLUSTER_NAME
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- SEED_HOST_IP_ADDRESS๋ฅผ ์๋ ํธ์คํธ IP ์ฃผ์๋ก ๋ฐ๊ฟ๋๋ค(์:
10.0.0.11
). - DATACENTER_NAME์ ๋ฐ์ดํฐ ์ผํฐ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค(์:
dc-2
). - RACK_NAME์ ๋ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค(์:
ra-1
). - CLUSTER_NAME์ Cassandra ํด๋ฌ์คํฐ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค. ๊ธฐ๋ณธ๊ฐ์
apigeecluster
์ ๋๋ค. ๋ค๋ฅธ ํด๋ฌ์คํฐ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ cassandra.clusterName์ ๊ฐ์ ์ง์ ํด์ผ ํฉ๋๋ค. ๊ฐ์ ์ํ๋ ๋๋ก ์ ํํ ์ ์์ง๋ง ๋ชจ๋ ๋ฆฌ์ ์์ ๋์ผํด์ผ ํฉ๋๋ค.
- SEED_HOST_IP_ADDRESS๋ฅผ ์๋ ํธ์คํธ IP ์ฃผ์๋ก ๋ฐ๊ฟ๋๋ค(์:
๋ ๋ฒ์งธ ๋ฆฌ์ ๊ตฌ์ฑ
์ ๋ฆฌ์ ์ ์ค์ ํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
-
๋ ๋ฒ์งธ ๋ฆฌ์ ์ cert-manager๋ฅผ ์ค์นํฉ๋๋ค.
- ๊ธฐ์กด ํด๋ฌ์คํฐ์์ ์ ํด๋ฌ์คํฐ๋ก ์ธ์ฆ์๋ฅผ ๋ณต์ฌํฉ๋๋ค.
์ CA ๋ฃจํธ๋ Cassandra ๋ฐ mTLS์ฉ ๊ธฐํ ํ์ด๋ธ๋ฆฌ๋ ๊ตฌ์ฑ์์์์ ์ฌ์ฉ๋ฉ๋๋ค.
๋ฐ๋ผ์ ํด๋ฌ์คํฐ ๊ฐ์ ์ผ๊ด๋ ์ธ์ฆ์๊ฐ ์์ด์ผ ํฉ๋๋ค.
-
์ปจํ ์คํธ๋ฅผ ์๋ ๋ค์์คํ์ด์ค๋ก ์ค์ ํฉ๋๋ค.
kubectl config use-context ORIGINAL_CLUSTER_NAME
-
ํ์ฌ ๋ค์์คํ์ด์ค ๊ตฌ์ฑ์ ํ์ผ๋ก ๋ด๋ณด๋ ๋๋ค.
kubectl get namespace APIGEE_NAMESPACE -o yaml > apigee-namespace.yaml
-
apigee-ca
๋ณด์ ๋น๋ฐ์ ํ์ผ๋ก ๋ด๋ณด๋ ๋๋ค.kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
-
์ปจํ ์คํธ๋ฅผ ์ ๋ฆฌ์ ์ ํด๋ฌ์คํฐ ์ด๋ฆ์ผ๋ก ์ค์ ํฉ๋๋ค.
kubectl config use-context NEW_CLUSTER_NAME
-
๋ค์์คํ์ด์ค ๊ตฌ์ฑ์ ์ ํด๋ฌ์คํฐ๋ก ๊ฐ์ ธ์ต๋๋ค. ์ ๋ฆฌ์ ์์ ๋ค๋ฅธ ๋ค์์คํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํ์ผ์ ๋ค์์คํ์ด์ค๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
kubectl apply -f apigee-namespace.yaml
-
๋ณด์ ๋น๋ฐ์ ์ ํด๋ฌ์คํฐ๋ก ๊ฐ์ ธ์ต๋๋ค.
kubectl -n cert-manager apply -f apigee-ca.yaml
-
-
๋จ๊ณ์ ๋ฐ๋ผ ์ ๋ฆฌ์ ์ Apigee Hybrid CRD๋ฅผ ์ค์นํฉ๋๋ค.
-
์ด์ Helm ์ฐจํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์ 1์์์ ๊ฐ์ด ๋ค์ Helm ์ฐจํธ ๋ช ๋ น์ด๋ก ์ ๋ฆฌ์ ์ Apigee Hybrid๋ฅผ ์ค์นํฉ๋๋ค.
helm upgrade operator apigee-operator \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade datastore apigee-datastore \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade telemetry apigee-telemetry \ --install \ --namespace APIGEE_NAMESPACE> \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade redis apigee-redis \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade ingress-manager apigee-ingress-manager \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade ORG_NAME apigee-org \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
# repeat the below command for each env mentioned on the overrideshelm upgrade ENV_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set env=ENV_NAME \ -f overrides-DATACENTER_NAME.yaml
# repeat the below command for each env group mentioned on the overrideshelm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f overrides-DATACENTER_NAME.yaml
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ์ฌ Cassandra ํด๋ฌ์คํฐ ์ค์ ์ ํ์ธํฉ๋๋ค. ๊ธฐ์กด ๋ฐ์ดํฐ ์ผํฐ์ ์๋ก์ด ๋ฐ์ดํฐ ์ผํฐ ๋ชจ๋ ์ถ๋ ฅ์ ํ์๋์ด์ผ ํฉ๋๋ค.
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE \ -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
๋ค์์ ์ฑ๊ณต์ ์ธ ์ค์ ์ ๋ณด์ฌ์ฃผ๋ ์์์ ๋๋ค.
Datacenter: dc-1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.132.87.93 68.07 GiB 256 ? fb51465c-167a-42f7-98c9-b6eba1de34de c UN 10.132.84.94 69.9 GiB 256 ? f621a5ac-e7ee-48a9-9a14-73d69477c642 b UN 10.132.84.105 76.95 GiB 256 ? 0561086f-e95b-4232-ba6c-ad519ff30336 d Datacenter: dc-2 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.132.0.8 71.61 GiB 256 ? 8894a98b-8406-45de-99e2-f404ab10b5d6 c UN 10.132.9.204 75.1 GiB 256 ? afa0ffa3-630b-4f1e-b46f-fc3df988092e a UN 10.132.3.133 68.08 GiB 256 ? 25ae39ab-b39e-4d4f-9cb7-de095ab873db b
- ์ ๋ฐ์ดํฐ ์ผํฐ์ ๋ชจ๋ ํฌ๋์ Cassandra๋ฅผ ์ค์ ํฉ๋๋ค.
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ์์
apigeeorg
๋ฅผ ๊ฐ์ ธ์ต๋๋ค.kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name"
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Ex: kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name" "rg-hybrid-b7d3b9c"
- Cassandra ๋ฐ์ดํฐ ๋ณต์ ์ปค์คํ
๋ฆฌ์์ค(
YAML
) ํ์ผ์ ๋ง๋ญ๋๋ค. ํ์ผ ์ด๋ฆ์๋ ์ ํ์ด ์์ต๋๋ค. ๋ค์ ์์์์ ํ์ผ ์ด๋ฆ์datareplication.yaml
์ ๋๋ค.ํ์ผ์๋ ๋ค์์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค.
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: REGION_EXPANSION namespace: NAMESPACE spec: organizationRef: APIGEEORG_VALUE force: false source: region: SOURCE_REGION
๊ฐ ํญ๋ชฉ์ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- REGION_EXPANSION์ ์ด ๋ฉํ๋ฐ์ดํฐ์ ์ง์ ํ ์ด๋ฆ์ ๋๋ค. ์ด๋ฆ์๋ ์ ํ์ด ์์ต๋๋ค.
- NAMESPACE๋
overrides.yaml
์ ์ ๊ณต๋ ๋ค์์คํ์ด์ค์ ๋์ผํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก 'apigee
'์ ๋๋ค. - APIGEEORG_VALUE๋ ์ด์ ๋จ๊ณ์
kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name"
๋ช ๋ น์ด์์ ์ถ๋ ฅ๋ ๊ฐ์ ๋๋ค. ์๋ฅผ ๋ค๋ฉดrg-hybrid-b7d3b9c
์ ๋๋ค. - SOURCE_REGION์ ์์ค ๋ฆฌ์ ์ด๋ฉฐ ์์ค ๋ฆฌ์ overrides.yaml์ cassandra ์น์ ์๋์ ์๋ ๋ฐ์ดํฐ ์ผํฐ ๊ฐ์ ๋๋ค.
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: region-expansion namespace: apigee spec: organizationRef: rg-hybrid-b7d3b9c force: false source: region: "dc-1"
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ
CassandraDataReplication
์ ์ ์ฉํฉ๋๋ค.kubectl apply -f datareplication.yaml
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ์์
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ ๋น๋ ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
kubectl -n APIGEE_NAMESPACE get apigeeds -o json | jq ".items[].status.cassandraDataReplication"
๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ํ์๋ฉ๋๋ค.
{ "rebuildDetails": { "apigee-cassandra-default-0": { "state": "complete", "updated": 1623105760 }, "apigee-cassandra-default-1": { "state": "complete", "updated": 1623105765 }, "apigee-cassandra-default-2": { "state": "complete", "updated": 1623105770 } }, "state": "complete", "updated": 1623105770 }
- ๋ฐ์ดํฐ ๋ณต์ ๊ฐ ์๋ฃ๋๊ณ ํ์ธ๋๋ฉด ์๋ ํธ์คํธ๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค.
-
overrides-DATACENTER_NAME.yaml
์์multiRegionSeedHost: 10.0.0.11
๊ฐ ์ญ์ ๋จ -
๋ณ๊ฒฝ์ฌํญ์ ๋ค์ ์ ์ฉํ์ฌ Apigee Datastore CR์ ์ ๋ฐ์ดํธํฉ๋๋ค.
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
-
- ๋ก๊ทธ์์ ์ฌ๋น๋ ํ๋ก์ธ์ค๋ฅผ ํ์ธํฉ๋๋ค. ๋ํ
nodetool status
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ํ์ธํฉ๋๋ค.kubectl logs apigee-cassandra-default-0 -f -n APIGEE_NAMESPACE
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
๋ค์ ์์๋ ๋ก๊ทธ ํญ๋ชฉ์ ์์๋ฅผ ๋ณด์ฌ์ค๋๋ค.
INFO 01:42:24 rebuild from dc: dc-1, (All keyspaces), (All tokens) INFO 01:42:24 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Executing streaming plan for Rebuild INFO 01:42:24 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.1.45 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.1.45 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.4.36 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 1 files(0.432KiB), sending 0 files(0.000KiB) INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.1.45 is complete INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.4.36 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.5.22 INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 1 files(0.693KiB), sending 0 files(0.000KiB) INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.4.36 is complete INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.5.22 INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 3 files(0.720KiB), sending 0 files(0.000KiB) INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.5.22 is complete INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] All sessions completed
Cassandra ํด๋ฌ์คํฐ ์ํ ํ์ธ
๋ค์ ๋ช ๋ น์ด๋ ๋ ๋ฐ์ดํฐ ์ผํฐ์์ ํด๋ฌ์คํฐ ์ค์ ์ด ์ฑ๊ณตํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค. ์ด ๋ช ๋ น์ด๋ ๋ ๋ฆฌ์ ์ nodetool ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status Datacenter: dc-1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.12.1.45 112.09 KiB 256 100.0% 3c98c816-3f4d-48f0-9717-03d0c998637f ra-1 UN 10.12.4.36 95.27 KiB 256 100.0% 0a36383d-1d9e-41e2-924c-7b62be12d6cc ra-1 UN 10.12.5.22 88.7 KiB 256 100.0% 3561f4fa-af3d-4ea4-93b2-79ac7e938201 ra-1 Datacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.0.4.33 78.69 KiB 256 100.0% a200217d-260b-45cd-b83c-182b27ff4c99 ra-1 UN 10.0.0.21 78.68 KiB 256 100.0% 9f3364b9-a7a1-409c-9356-b7d1d312e52b ra-1 UN 10.0.1.26 15.46 KiB 256 100.0% 1666df0f-702e-4c5b-8b6e-086d0f2e47fa ra-1
OpenShift
๋ฉํฐ ๋ฆฌ์ ์๋ ํธ์คํธ ๊ตฌ์ฑ
์ด ์น์ ์์๋ ๊ธฐ์กด Cassandra ํด๋ฌ์คํฐ๋ฅผ ์ ๋ฆฌ์ ์ผ๋ก ํ์ฅํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. ์ด ์ค์ ์ ์ฌ์ฉํ๋ฉด ์ ๋ฆฌ์ ์์ ํด๋ฌ์คํฐ๋ฅผ ๋ถํธ์คํธ๋ฉํ๊ณ ๊ธฐ์กด ๋ฐ์ดํฐ ์ผํฐ์ ์กฐ์ธํ ์ ์์ต๋๋ค. ์ด ๊ตฌ์ฑ์ด ์์ผ๋ฉด ๋ฉํฐ ๋ฆฌ์ Kubernetes ํด๋ฌ์คํฐ๊ฐ ์๋ก๋ฅผ ์์ง ๋ชปํฉ๋๋ค.
-
์ฒซ ๋ฒ์งธ๋ก ์์ฑ๋ ๋ฆฌ์ ์ ๋ํด apigee ๋ค์์คํ์ด์ค์์ ํฌ๋๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
kubectl get pods -o wide -n APIGEE_NAMESPACE
- ์ด ๋ฆฌ์ ์์ Cassandra์ ๋ฉํฐ ๋ฆฌ์ ์๋ ํธ์คํธ ์ฃผ์๋ฅผ ์๋ณํฉ๋๋ค(์:
10.0.0.11
). -
๋ ๋ฒ์งธ ๋ฆฌ์ ์
overrides.yaml
ํ์ผ์ ์ค๋นํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์๋ ํธ์คํธ IP ์ฃผ์๋ฅผ ์ถ๊ฐํฉ๋๋ค.cassandra: multiRegionSeedHost: "SEED_HOST_IP_ADDRESS" datacenter: "DATACENTER_NAME" rack: "RACK_NAME" hostNetwork: false clusterName: CLUSTER_NAME
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- SEED_HOST_IP_ADDRESS๋ฅผ ์๋ ํธ์คํธ IP ์ฃผ์๋ก ๋ฐ๊ฟ๋๋ค(์:
10.0.0.11
). - DATACENTER_NAME์ ๋ฐ์ดํฐ ์ผํฐ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค(์:
dc-2
). - RACK_NAME์ ๋ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค(์:
ra-1
). - CLUSTER_NAME์ Cassandra ํด๋ฌ์คํฐ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค. ๊ธฐ๋ณธ๊ฐ์
apigeecluster
์ ๋๋ค. ๋ค๋ฅธ ํด๋ฌ์คํฐ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ cassandra.clusterName์ ๊ฐ์ ์ง์ ํด์ผ ํฉ๋๋ค. ๊ฐ์ ์ํ๋ ๋๋ก ์ ํํ ์ ์์ง๋ง ๋ชจ๋ ๋ฆฌ์ ์์ ๋์ผํด์ผ ํฉ๋๋ค.
- SEED_HOST_IP_ADDRESS๋ฅผ ์๋ ํธ์คํธ IP ์ฃผ์๋ก ๋ฐ๊ฟ๋๋ค(์:
๋ ๋ฒ์งธ ๋ฆฌ์ ๊ตฌ์ฑ
์ ๋ฆฌ์ ์ ์ค์ ํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
-
๋ ๋ฒ์งธ ๋ฆฌ์ ์ cert-manager๋ฅผ ์ค์นํฉ๋๋ค.
- ๊ธฐ์กด ํด๋ฌ์คํฐ์์ ์ ํด๋ฌ์คํฐ๋ก ์ธ์ฆ์๋ฅผ ๋ณต์ฌํฉ๋๋ค.
์ CA ๋ฃจํธ๋ Cassandra ๋ฐ mTLS์ฉ ๊ธฐํ ํ์ด๋ธ๋ฆฌ๋ ๊ตฌ์ฑ์์์์ ์ฌ์ฉ๋ฉ๋๋ค.
๋ฐ๋ผ์ ํด๋ฌ์คํฐ ๊ฐ์ ์ผ๊ด๋ ์ธ์ฆ์๊ฐ ์์ด์ผ ํฉ๋๋ค.
-
์ปจํ ์คํธ๋ฅผ ์๋ ๋ค์์คํ์ด์ค๋ก ์ค์ ํฉ๋๋ค.
kubectl config use-context ORIGINAL_CLUSTER_NAME
-
ํ์ฌ ๋ค์์คํ์ด์ค ๊ตฌ์ฑ์ ํ์ผ๋ก ๋ด๋ณด๋ ๋๋ค.
kubectl get namespace APIGEE_NAMESPACE -o yaml > apigee-namespace.yaml
-
apigee-ca
๋ณด์ ๋น๋ฐ์ ํ์ผ๋ก ๋ด๋ณด๋ ๋๋ค.kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
-
์ปจํ ์คํธ๋ฅผ ์ ๋ฆฌ์ ์ ํด๋ฌ์คํฐ ์ด๋ฆ์ผ๋ก ์ค์ ํฉ๋๋ค.
kubectl config use-context NEW_CLUSTER_NAME
-
๋ค์์คํ์ด์ค ๊ตฌ์ฑ์ ์ ํด๋ฌ์คํฐ๋ก ๊ฐ์ ธ์ต๋๋ค. ์ ๋ฆฌ์ ์์ ๋ค๋ฅธ ๋ค์์คํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํ์ผ์ ๋ค์์คํ์ด์ค๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
kubectl apply -f apigee-namespace.yaml
-
๋ณด์ ๋น๋ฐ์ ์ ํด๋ฌ์คํฐ๋ก ๊ฐ์ ธ์ต๋๋ค.
kubectl -n cert-manager apply -f apigee-ca.yaml
-
-
๋จ๊ณ์ ๋ฐ๋ผ ์ ๋ฆฌ์ ์ Apigee Hybrid CRD๋ฅผ ์ค์นํฉ๋๋ค.
-
์ด์ Helm ์ฐจํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์ 1์์์ ๊ฐ์ด ๋ค์ Helm ์ฐจํธ ๋ช ๋ น์ด๋ก ์ ๋ฆฌ์ ์ Apigee Hybrid๋ฅผ ์ค์นํฉ๋๋ค.
helm upgrade operator apigee-operator \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade datastore apigee-datastore \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade telemetry apigee-telemetry \ --install \ --namespace APIGEE_NAMESPACE> \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade redis apigee-redis \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade ingress-manager apigee-ingress-manager \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade ORG_NAME apigee-org \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
# repeat the below command for each env mentioned on the overrideshelm upgrade ENV_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set env=ENV_NAME \ -f overrides-DATACENTER_NAME.yaml
# repeat the below command for each env group mentioned on the overrideshelm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f overrides-DATACENTER_NAME.yaml
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ์ฌ Cassandra ํด๋ฌ์คํฐ ์ค์ ์ ํ์ธํฉ๋๋ค. ๊ธฐ์กด ๋ฐ์ดํฐ ์ผํฐ์ ์๋ก์ด ๋ฐ์ดํฐ ์ผํฐ ๋ชจ๋ ์ถ๋ ฅ์ ํ์๋์ด์ผ ํฉ๋๋ค.
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE \ -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
๋ค์์ ์ฑ๊ณต์ ์ธ ์ค์ ์ ๋ณด์ฌ์ฃผ๋ ์์์ ๋๋ค.
Datacenter: dc-1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.132.87.93 68.07 GiB 256 ? fb51465c-167a-42f7-98c9-b6eba1de34de c UN 10.132.84.94 69.9 GiB 256 ? f621a5ac-e7ee-48a9-9a14-73d69477c642 b UN 10.132.84.105 76.95 GiB 256 ? 0561086f-e95b-4232-ba6c-ad519ff30336 d Datacenter: dc-2 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns Host ID Rack UN 10.132.0.8 71.61 GiB 256 ? 8894a98b-8406-45de-99e2-f404ab10b5d6 c UN 10.132.9.204 75.1 GiB 256 ? afa0ffa3-630b-4f1e-b46f-fc3df988092e a UN 10.132.3.133 68.08 GiB 256 ? 25ae39ab-b39e-4d4f-9cb7-de095ab873db b
- ์ ๋ฐ์ดํฐ ์ผํฐ์ ๋ชจ๋ ํฌ๋์ Cassandra๋ฅผ ์ค์ ํฉ๋๋ค.
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ์์
apigeeorg
๋ฅผ ๊ฐ์ ธ์ต๋๋ค.kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name"
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Ex: kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name" "rg-hybrid-b7d3b9c"
- Cassandra ๋ฐ์ดํฐ ๋ณต์ ์ปค์คํ
๋ฆฌ์์ค(
YAML
) ํ์ผ์ ๋ง๋ญ๋๋ค. ํ์ผ ์ด๋ฆ์๋ ์ ํ์ด ์์ต๋๋ค. ๋ค์ ์์์์ ํ์ผ ์ด๋ฆ์datareplication.yaml
์ ๋๋ค.ํ์ผ์๋ ๋ค์์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค.
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: REGION_EXPANSION namespace: NAMESPACE spec: organizationRef: APIGEEORG_VALUE force: false source: region: SOURCE_REGION
๊ฐ ํญ๋ชฉ์ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- REGION_EXPANSION์ ์ด ๋ฉํ๋ฐ์ดํฐ์ ์ง์ ํ ์ด๋ฆ์ ๋๋ค. ์ด๋ฆ์๋ ์ ํ์ด ์์ต๋๋ค.
- NAMESPACE๋
overrides.yaml
์ ์ ๊ณต๋ ๋ค์์คํ์ด์ค์ ๋์ผํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก 'apigee
'์ ๋๋ค. - APIGEEORG_VALUE๋ ์ด์ ๋จ๊ณ์
kubectl get apigeeorg -n APIGEE_NAMESPACE -o json | jq ".items[].metadata.name"
๋ช ๋ น์ด์์ ์ถ๋ ฅ๋ ๊ฐ์ ๋๋ค. ์๋ฅผ ๋ค๋ฉดrg-hybrid-b7d3b9c
์ ๋๋ค. - SOURCE_REGION์ ์์ค ๋ฆฌ์ ์ด๋ฉฐ ์์ค ๋ฆฌ์ overrides.yaml์ cassandra ์น์ ์๋์ ์๋ ๋ฐ์ดํฐ ์ผํฐ ๊ฐ์ ๋๋ค.
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: region-expansion namespace: apigee spec: organizationRef: rg-hybrid-b7d3b9c force: false source: region: "dc-1"
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ
CassandraDataReplication
์ ์ ์ฉํฉ๋๋ค.kubectl apply -f datareplication.yaml
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ์์
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ ๋น๋ ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
kubectl -n APIGEE_NAMESPACE get apigeeds -o json | jq ".items[].status.cassandraDataReplication"
๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ํ์๋ฉ๋๋ค.
{ "rebuildDetails": { "apigee-cassandra-default-0": { "state": "complete", "updated": 1623105760 }, "apigee-cassandra-default-1": { "state": "complete", "updated": 1623105765 }, "apigee-cassandra-default-2": { "state": "complete", "updated": 1623105770 } }, "state": "complete", "updated": 1623105770 }
- ๋ฐ์ดํฐ ๋ณต์ ๊ฐ ์๋ฃ๋๊ณ ํ์ธ๋๋ฉด ์๋ ํธ์คํธ๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค.
-
overrides-DATACENTER_NAME.yaml
์์multiRegionSeedHost: 10.0.0.11
๊ฐ ์ญ์ ๋จ -
๋ณ๊ฒฝ์ฌํญ์ ๋ค์ ์ ์ฉํ์ฌ Apigee Datastore CR์ ์ ๋ฐ์ดํธํฉ๋๋ค.
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides-DATACENTER_NAME.yaml
-
- ๋ก๊ทธ์์ ์ฌ๋น๋ ํ๋ก์ธ์ค๋ฅผ ํ์ธํฉ๋๋ค. ๋ํ
nodetool status
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ํ์ธํฉ๋๋ค.kubectl logs apigee-cassandra-default-0 -f -n APIGEE_NAMESPACE
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status
๋ค์ ์์๋ ๋ก๊ทธ ํญ๋ชฉ์ ์์๋ฅผ ๋ณด์ฌ์ค๋๋ค.
INFO 01:42:24 rebuild from dc: dc-1, (All keyspaces), (All tokens) INFO 01:42:24 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Executing streaming plan for Rebuild INFO 01:42:24 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.1.45 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.1.45 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.4.36 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 1 files(0.432KiB), sending 0 files(0.000KiB) INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.1.45 is complete INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.4.36 INFO 01:42:25 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Starting streaming to /10.12.5.22 INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 1 files(0.693KiB), sending 0 files(0.000KiB) INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.4.36 is complete INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889, ID#0] Beginning stream session with /10.12.5.22 INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889 ID#0] Prepare completed. Receiving 3 files(0.720KiB), sending 0 files(0.000KiB) INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] Session with /10.12.5.22 is complete INFO 01:42:26 [Stream #3a04e810-580d-11e9-a5aa-67071bf82889] All sessions completed
Cassandra ํด๋ฌ์คํฐ ์ํ ํ์ธ
๋ค์ ๋ช ๋ น์ด๋ ๋ ๋ฐ์ดํฐ ์ผํฐ์์ ํด๋ฌ์คํฐ ์ค์ ์ด ์ฑ๊ณตํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค. ์ด ๋ช ๋ น์ด๋ ๋ ๋ฆฌ์ ์ nodetool ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
kubectl exec apigee-cassandra-default-0 -n APIGEE_NAMESPACE -- nodetool -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status Datacenter: dc-1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.12.1.45 112.09 KiB 256 100.0% 3c98c816-3f4d-48f0-9717-03d0c998637f ra-1 UN 10.12.4.36 95.27 KiB 256 100.0% 0a36383d-1d9e-41e2-924c-7b62be12d6cc ra-1 UN 10.12.5.22 88.7 KiB 256 100.0% 3561f4fa-af3d-4ea4-93b2-79ac7e938201 ra-1 Datacenter: us-west1 ==================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.0.4.33 78.69 KiB 256 100.0% a200217d-260b-45cd-b83c-182b27ff4c99 ra-1 UN 10.0.0.21 78.68 KiB 256 100.0% 9f3364b9-a7a1-409c-9356-b7d1d312e52b ra-1 UN 10.0.1.26 15.46 KiB 256 100.0% 1666df0f-702e-4c5b-8b6e-086d0f2e47fa ra-1
๋ฌธ์ ํด๊ฒฐ
Cassandra ๋ฐ์ดํฐ ๋ณต์ ์คํจ๋ฅผ ์ฐธ์กฐํ์ธ์.