ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Vitess] Topology Service 알아보기
    Database/Vitess 2023. 12. 30. 21:50
    728x90
    반응형

    - 목차

     

    소개.

    Vitess 의 Topology 는 Vitess 의 여러 구성요소들의 구조와 관계를 설정하는 논리적인 개념입니다.

    Vitess 의 구성요소들은 다음과 같습니다.

    Server, Cell, Keyspace, Shard, Tablet 등으로 구성됩니다.

    이번 글에서는 각각의 요소들이 무엇인지 알아보고 Topology 를 구성하는 방법에 대해서 알아보려고 합니다.

     

    구성요소.

    Vitess 의 구성요소들을 알아봅니다.

    구성요소들은 Server, Cell, Keyspace, Shard, Tablet 등이 존재합니다.

     

    Server.

    Vitess 에서 지칭하는 Server 는 실제 물리적인 서버를 의미합니다.

    Vitess 는 MySQL 을 관리하는 클러스터인데요.

    여러 개의 MySQL 서버 또는 프로세스들을 관리하죠.

    이때 각각의 MySQL 서버 또는 프로세스들이 동작할 수 있는 물리적인 머신 또는 서버를 "Server" 라고 부릅니다.

     

    Cell.

    Cell 은 Vitess 의 Tablet 들을 묶는 논리적인 단위입니다.

    Server 는 실제의 물리적인 서버를 의미하지만, Cell 은 논리적으로 Tablet 들을 관리합니다.

    Cell 은 Zone 이라고도 불리는데요.

    Tablet-1, Tablet-2, Tablet-3, Tablet-4 가 존재할 때,

    Cell-1 은 Tablet-1, Tablet-2 을 논리적으로 묶고, Cell-2 는 Tablet-3, Tablet-4 를 관리하는 형태로

    Cell 을 구성합니다.

    Cell 을 통해서 Tablet Group 이 생성되구요. Cell 단위로 Tablet 들을 관리합니다.

    그리고 Cell 과 Server 를 일대일로 매칭시키게 되면 Cell 단위의 Isolation 이 보장됩니다.

    즉, 한쪽의 Server 가 장애가 발생하더라도 다른 Server 에 위치한 Cell 은 정상적으로 동작하게되며

    PRIMARY <-> REPLICA 의 Failover 를 통해서 장애 대응을 할 수 있습니다.

     

    Keyspace.

    Keyspace 는 MySQL 의 Database 와 같은 개념입니다.

    Table 들을 관리하는 Database 의 범위이구요.

    Vitess 는 분산형 MySQL 클러스터이기 때문에 여러 테이블들은 물리적으로 분산되어 있습니다.

    Keyspace 는 이렇게 분산되어 있는 테이블들을 관리하는 MySQL 의 Database 라고 생각하시면 됩니다.

     

    Tablet.

    Tablet 은 실질적인 MySQL 서버 또는 프로세스입니다.

    Vitess 가 관리하는 가장 작은 단위의 구성요소입니다.

    Tablet 내부에서 MySQL 서버 또는 프로세스가 구동되구요.

    Tablet 은 Vitess 와 MySQL 사이에서 Multi-Sharded MySQL 을 구현할 수 있게 도와줍니다.

    즉, 단순히 MySQL 의 Container 그 이상의 역할을 수행합니다.

     

    예를 들어, 분산된 MySQL 서버들 사이에서 Transaction 처리를 도우며

    MySQL 의 FailOver 와 Monitoring 을 제공하고,

    요청되는 쿼리를 적절한 MySQL 서버로 전달되도록 Routing 기능을 가집니다.

     

     

    Topology.

    이제 Cell, Keyspace, Shard 등의 정보를 조합하여 Vitess 의 구성요소들을 설명할 수 있습니다.

     

    아래의 예시는 어느 Tablet 에 대한 설명입니다.

    Alias: zone1-2548885007
    Keyspace: commerce Shard: - Tablet Type: REPLICA
    SrvKeyspace: commerce
    Replication graph: zone1/commerce/-

     

    Tablet 의 이름은 zone1-2548885007 이며,

    이 Tablet 은 zone1 이라는 Cell 에 속하게 됩니다.

    그리고 zone1-2548885007 Tablet 은 commerce 라는 Keyspace 에 속하게 되며,

    Shard 가 없는 단일 서버입니다. "-" 의미가 바로 단일 서버라는 의미입니다.

    그리고 "zone1-2548885007" Tablet 은 REPLICA 타입이네요.

     

    다른 예시를 한번 더 살펴보겠습니다.

    아래 그림은 Shard 칼럼이 "-" 인 Tablet 들을 종료시키고

    새로운 Tablet 들을 생성한 내용입니다.

    사실 "-" 인 Shard 는 단일 서버이지 Sharded 된 형태가 아닙니다.

    새롭게 추가된 Tablet 들은 2개로 Sharding 된 구조이며, 00-80, 80-FF 의 형식으로 2분할되어 있습니다.

     

    그리고 새로운 Tablet 의 Topology 는 아래와 같습니다.

    Alias: zone1-3689769539
    Keyspace: commerce Shard: -80 Tablet Type: PRIMARY
    SrvKeyspace: commerce
    Replication graph: zone1/commerce/-80

     

    Tablet 의 이름은 zone1-3689769539 이며,

    이는 zone1 인 Cell 에 속합니다.

    그리고 Keyspace 는 commerce, Shard 는 00-88 이며 PRIMARY 인 Tablet 입니다.

    PRIMARY 이기 때문에 데이터의 DML 을 수용할 수 있는 MySQL 을 가집니다.

     

     

    이렇듯,

    Cell, Keyspace, Shard 등이 모여서 분산 MySQL 하나를 설명할 수 있게 됩니다.

    그래서 이는 논리적인 표현 또는 단위이라고 불립니다.

    반응형

    'Database > Vitess' 카테고리의 다른 글

    [Vitess] Etcd 알아보기  (0) 2023.12.30
    [Vitess & Kubernetes] Cell 알아보기  (0) 2023.12.30
    KinD 로 Vitess 구현하기.  (0) 2023.09.05
Designed by Tistory.