-
[Vitess] Etcd 알아보기Database/Vitess 2023. 12. 30. 23:39728x90반응형
- 목차
소개.
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
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 를 교체하는 작업 )
반응형'Database > Vitess' 카테고리의 다른 글
[Vitess] PlannedReparentShard 알아보기 ( PRS , Planned Reparent Shard ) (0) 2024.01.02 [Vitess] Topology Service 알아보기 (0) 2023.12.30 [Vitess & Kubernetes] Cell 알아보기 (0) 2023.12.30 KinD 로 Vitess 구현하기. (0) 2023.09.05