ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Vitess] Etcd 알아보기
    Database/Vitess 2023. 12. 30. 23:39
    728x90
    반응형

    - 목차

     

    소개.

    Vitess 는 내부적으로 etcd 를 사용합니다.

    etcd 는 ZooKeeper 처럼 분산 시스템의 상태 정보와 메타데이터를 저장하는데요.

    Vitess 의 여러 Topology 들의 상태와 정보를 저장합니다.

    etcd 를 통해서 Keyspace, Cell, Shard, Tablet 의 상태와 정보가 관리된다고 생각하시면 됩니다.

     

    이번 글을 통해서 Vitess 는 Etcd 에 어떤 정보를 저장하고,

    Etcd 를 활용하는 Orchestration 에 대해 알아보려고 합니다.

     

     

    Vitess Cluster 구현하기.

    아래 예시는 Kubernetes 위에서 Vitess 를 실행하는 간단한 예시입니다.

    Kubernetes 와 Vitess 환경에서 Etcd 가 어떻게 동작하는지 알아보려고 합니다.

     

    https://westlife0615.tistory.com/232

     

    KinD 로 Vitess 구현하기.

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

    westlife0615.tistory.com

     

    Vitess 는 Etcd 에 어떤 정보를 저장할까 ?

    아래 명령어는 Etcd 의 CLI Client Binary 를 실행하는 예시입니다.

    실행 파일의 이름은 etcdctl 이구요.

    Vitess Cluster 의 Etcd Container 내부에서 아래의 명령어를 실행하였습니다.

    etcdctl get --prefix "/" --keys-only=true
    /vitess/example/global/cells/zone1/CellInfo
    /vitess/example/global/cells/zone2/CellInfo
    /vitess/example/global/cells_aliases/planetscale_operator_default/CellsAlias
    /vitess/example/global/elections/vtctld/locks/4478984557954607426
    /vitess/example/global/elections/vtctld/locks/6605246532026904169
    /vitess/example/global/keyspaces/commerce/Keyspace
    /vitess/example/global/keyspaces/commerce/VSchema
    /vitess/example/global/keyspaces/commerce/shards/-/Shard
    /vitess/example/global/keyspaces/commerce/shards/-80/Shard
    /vitess/example/global/keyspaces/commerce/shards/80-/Shard
    /vitess/example/local/zone1/SrvVSchema
    /vitess/example/local/zone1/keyspaces/commerce/SrvKeyspace
    /vitess/example/local/zone1/keyspaces/commerce/shards/-/ShardReplication
    /vitess/example/local/zone1/keyspaces/commerce/shards/-80/ShardReplication
    /vitess/example/local/zone1/keyspaces/commerce/shards/80-/ShardReplication
    /vitess/example/local/zone1/tablets/zone1-1516199554/Tablet
    /vitess/example/local/zone1/tablets/zone1-2469782763/Tablet
    /vitess/example/local/zone1/tablets/zone1-2548885007/Tablet
    /vitess/example/local/zone1/tablets/zone1-2609181135/Tablet
    /vitess/example/local/zone1/tablets/zone1-3689769539/Tablet
    /vitess/example/local/zone1/tablets/zone1-3837615055/Tablet
    /vitess/example/local/zone2/SrvVSchema
    /vitess/example/local/zone2/keyspaces/commerce/SrvKeyspace
    /vitess/example/local/zone2/keyspaces/commerce/shards/-/ShardReplication
    /vitess/example/local/zone2/keyspaces/commerce/shards/-80/ShardReplication
    /vitess/example/local/zone2/keyspaces/commerce/shards/80-/ShardReplication
    /vitess/example/local/zone2/tablets/zone2-0353006580/Tablet
    /vitess/example/local/zone2/tablets/zone2-1050736092/Tablet
    /vitess/example/local/zone2/tablets/zone2-1666242095/Tablet
    /vitess/example/local/zone2/tablets/zone2-1932351751/Tablet
    /vitess/example/local/zone2/tablets/zone2-2645189529/Tablet
    /vitess/example/local/zone2/tablets/zone2-2938288861/Tablet

     

    생각보다 많은 양의 Key Value Pair 들이 존재합니다.

    ZooKeeper 의 ZNode 처럼 데이터들인 File System 같은 Hierarchy 를 취합니다.

    Key 들의 이름은 Vitess 의 Topology 의 구성요소들로 구성됩니다.

    "/vitess/example" 은 Vitess Cluster 의 이름이구요.

    "/global" 또는 "/local" 은 전역의 정보인지 또는 특정 Cell 의 정보인지를 구분합니다.

    실제 Vitess Cluster 는 Cell 마다 하나의 Local Topology 를 가집니다.

    저의 경우는 2개의 Cell (zone1, zone2) 이 존재하기 때문에 2개의 Local Topology 가 존재하죠.

    그리고 Keyspace, Tablet, Shard 에 해당하는 Key-Value Pair 들이 존재합니다.

     

     

    Watch Mechanisim.

    Etcd 또한 ZooKeeper 처럼 Watch Mechanism 을 제공합니다.

    Etcd 의 클라이언트인 Watcher 를 두어 Key-Value Pair 의 상태 변경을 체크합니다.

    Vitess Cluster 에서 이러한 Etcd 의 Watcher 는 VTOrc 라고 불리는 Orchestrator 입니다.

    VTOrc 는 Tablet 과 관련된 Key-Value Pair 를 모니터링하는데요.

    Tablet 의 상태 변경 또는 갑작스런 종료 등으로 인해서 Etcd 의 Key 의 값이 변경되면 VTOrc 는 상황에 맞는 대처를 합니다.

    대부분 Tablet 의 Recovery 와 같은 대처를 수행하게 됩니다.

    ( ex. Reparent 와 같인 Replica 와 Primary 를 교체하는 작업 )

     

    반응형
Designed by Tistory.