ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Vitess & Kubernetes] Cell 알아보기
    Database/Vitess 2023. 12. 30. 16:36
    728x90
    반응형

    - 목차

     

    함께 보면 좋은 자료.

    https://westlife0615.tistory.com/232

     

    KinD 로 Vitess 구현하기.

    - 목차 함께 보면 좋은 글. https://westlife0615.tistory.com/407 KinD 알아보기. - 목차 소개. KinD 는 "카인드" 라고 발음되며, 로컬 머신에서 쿠버네티스를 간편하게 실행할 수 있는 도구입니다. KinD 는 Kuberne

    westlife0615.tistory.com

     

    소개.

    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

     

    KinD 로 Vitess 구현하기.

    - 목차 함께 보면 좋은 글. https://westlife0615.tistory.com/407 KinD 알아보기. - 목차 소개. KinD 는 "카인드" 라고 발음되며, 로컬 머신에서 쿠버네티스를 간편하게 실행할 수 있는 도구입니다. KinD 는 Kuberne

    westlife0615.tistory.com

     

    그리고 위 과정을 통해서 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/

     

    Vitess | vtctl

    vtctl Command Index

    vitess.io

     

    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>

     

    위와 같이 PRIMARYzone1-2469782763 Tablet 과 REPLICAzone1-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>

     

    반응형
Designed by Tistory.