-
[Vitess & Kubernetes] Cell 알아보기Database/Vitess 2023. 12. 30. 16:36728x90반응형
- 목차
함께 보면 좋은 자료.
https://westlife0615.tistory.com/232
소개.
Cell 은 Vitess 가 관리하는 데이터베이스들을 논리적으로 묶는 단위입니다.
"논리적 단위" 라는 표현이 좀 애매한데요.
이를 잘 표현하는 다른 사례들을 먼저 얘기하고자 합니다.
쿠버네티스를 예로 들면, ReplicaSet 이나 Service 를 이야기할 수 있을 것 같습니다.
ReplicaSet 은 Pod 들을 관리하고 손쉽게 Scale-In/Out 이 가능합니다.
그리고 Service 는 Pod 의 Network IP 를 지칭하는 Endpoint 들을 관리합니다.
ReplicaSet 이 Pod 들을, 그리고 Service 가 Endpoint 들을 관리하듯이 Vitess 의 Cell 은 특정 MySQL 또는 MariaDB 들을 묶는 논리적인 단위입니다.
그리고 ThreadPool 이나 ConnectionPool 처럼 Pool 이라는 개념도 "논리적인 단위" 와 비슷한 의미를 가지는 것 같습니다.
실질적인 작업을 수행하는 대상은 Thread 와 Connection 이지만
Pool 이라는 단위를 통해서 손쉽게 관리할 수 있게 됩니다.
위처럼 Vitess Cell 또한 데이터베이스를 관리하는 논리적인 단위입니다.
하나의 Cell 에 추가된 데이터베이스들을 손쉽게 관리하며,
특정 Cell 은 동일한 서버에 두어 다른 Cell 과의 Isolation 을 가능하게 합니다.
그리고 Scaling-In/Out 또한 가능하며, Cell 에 속한 MySQL&MariaDB 의 설정을 한꺼번에 변경할 수도 있습니다.
구현해보기.
아래 링크는 KinD 로 Vitess Cluster 를 Kubernetes 로 설정하는 코드 자료입니다.
저는 Kubernetes 의 Vitess Cluster 를 통해서 Cell 에 대한 몇가지 테스트를 진행하고자 합니다.
https://westlife0615.tistory.com/232
그리고 위 과정을 통해서 vtctld 가 활성화되는데요.
아래 명령어를 통해서 15999 port 를 통해 gRPC 방식으로 Vitess Cluster 와 소통할 수 있게 됩니다.
kubectl -n default port-forward service/example-vtctld-625ee430 15999:15999
그리고 vtgate 라는 서비스를 활용하여 15000 port 를 통해 Web UI 를 활성화시켰습니다.
kubectl -n default port-forward service/example-zone1-vtgate-bc6cde92 15000:15000
vtctld 와 vtgate 는 다른 글을 통해서 설명을 이어가도록 하겠습니다.
Cell 살펴보기.
위 구현해보기 페이지의 과정을 마치면 Vitess Cluster 가 생성됩니다.
저의 경우는 Cell 은 zone1 과 zone2 두개를 설정하였습니다.
commerce 라는 Keyspace 하위에 4개의 MySQL 를 두었습니다.
primary 하나와 replica 하나씩을 zone1 이라는 Cell 에 배치하였구요.
replica 2개를 zone2 Cell 에 배치하였습니다.
4개의 MySQL 인스턴스와 Cell 의 관계를 아래의 사진처럼 표현됩니다.
zone1 의 Cell 의 replica 갯수 변경하기.
아래 링크는 Vitess 와 관련된 CLI 명령어에 대한 설명이 작성되어있는 페이지입니다.
Cell 의 Replica 갯수를 변경하기 위해서 ListAllTablets 와 UpdateShard 명령어를 사용해보겠습니다.
https://vitess.io/docs/16.0/reference/programs/vtctl/
ListAllTablets.
"commerce" Keyspace 의 "zone1" Cell 의 Tablets 들을 조회하겠습니다.
vtctlclient --server localhost:15999 ListAllTablets ListAllTablets --keyspace='commerce' zone1
zone1-2469782763 commerce - primary 10.244.2.13:15000 10.244.2.13:3306 [] 2023-12-30T07:24:52Z zone1-2548885007 commerce - replica 10.244.1.12:15000 10.244.1.12:3306 [] <null>
위와 같이 PRIMARY 인 zone1-2469782763 Tablet 과 REPLICA 인 zone1-2548885007 Tablet 이 조회됩니다.
ListShardTablets.
아래와 같은 형식으로도 Tablet 들을 조회할 수 있습니다.
vtctlclient --server localhost:15999 ListShardTablets commerce:-
zone2-1932351751 commerce - replica 10.244.5.11:15000 10.244.5.11:3306 [] <null> zone1-2469782763 commerce - primary 10.244.2.13:15000 10.244.2.13:3306 [] 2023-12-30T07:24:52Z zone2-2938288861 commerce - replica 10.244.3.11:15000 10.244.3.11:3306 [] <null> zone1-2548885007 commerce - replica 10.244.1.12:15000 10.244.1.12:3306 [] <null>
반응형'Database > Vitess' 카테고리의 다른 글
[Vitess] PlannedReparentShard 알아보기 ( PRS , Planned Reparent Shard ) (0) 2024.01.02 [Vitess] Etcd 알아보기 (0) 2023.12.30 [Vitess] Topology Service 알아보기 (0) 2023.12.30 KinD 로 Vitess 구현하기. (0) 2023.09.05