cluster_forget
Redis CLUSTER FORGET
레디스 클러스터 교육 |
레디스 정기점검/기술지원 Redis Technical Support |
레디스 엔터프라이즈 서버 Redis Enterprise Server |
---|
Redis CLUSTER FORGET
CLUSTER FORGET은 클러스터를 탈퇴하는 명령이다.
이 문서는 버전 3.2.0을 기준으로 만들었습니다.
사용법
클러스터에서 탈퇴하려면 CLUSTER FORGET node-id를 사용한다.
Node-id는 탈퇴하려는 서버의 id를 입력한다.
이때 탈퇴하는 노드는 마스터이어야 한다. 다운된 노드를 클러스터에서 제거할 때도 이 명령을 사용한다.
슬레이브는 자신의 마스터에 대해서 FORGET을 할 수 없다.
클러스터 내 다른 마스터에 대해서는 FORGET 명령을 실행할 수 있으나,
자신의 마스터에 대해서 실행할 수 없기 때문에 결국 FORGET을 할 수 없는 것이다.
MEET 명령과 다른 점이 있다.
MEET 명령은 해당 서버 정보를 다른 노드들에 알려서 공유하지만,
FORGET 명령은 그렇게 하지 않는다.
따라서 마스터, 슬레이브 관계없이 모든 노드에 FORGET 명령을 실행해 주어야 한다.
한 가지 더 주의할 것은 모든 노드에 FORGET 명령을 실행하는 것을 60초 안에 해야 한다.
그렇지 않으면 FORGET 된 노드가 다시 등록된다.
왜냐하면 노드들은 자기가 가지고 있는 서버 정보를 다른 노드들에 알린다.
예를 들어, A 노드에서 B 노드가 FORGET 되면 A는 B 정보를 더 이상 가지고 있지 않지만,
C 노드는 B의 정보를 가지고 있어서 이 정보를 A에게 알려서 A는 제거된 B 정보를 다시 등록할 수 있다.
이것을 방지하기 위해서 A는 B 정보를 등록 방지 리스트에 60초 동안 가지고 있어서,
다른 노드로부터 B 정보가 오더라도 다시 등록하지 않는다.
이 등록 방지 리스트는 60초 후에는 지워지므로 FORGET 작업은 60초 내에 이루어져야 한다.
FORGET 된 노드가 다시 살아나는 현상: 6개의 노드가 있는데 한 두 노드에만 FORGET을
했다면 직후에 CLUSTER NODES로 보면 없어졌다가, 어느 정도 후에 다시 보면
없어졌던 노드가 나타난 것을 볼 수 있다.
이것도 위에 설명한 것처럼 제거할 노드를 모든 노드에서 제거(FORGET)하지 않으면 다시 등록되는 것이다.
여담으로 레디스 클러스터는 가입은 쉽지만 탈퇴는 어려운 구조이다.
설명
- Cluster forget 명령은 아래와 같이 실행하며, 실행 후 cluster info 명령으로 보면 cluster_known_nodes 가 줄어든 것을 확인할 수 있고, cluster nodes 명령으로도 확인할 수 있다.
명령문
CLUSTER FORGET node-id
- 이 명령은 version 3.0.0 부터 사용할 수 있다.
- 논리적 처리 소요시간은 O(1)입니다.
Clients for Java | Jedis, Lettuce | Clients for C | Hiredis |
<< CLUSTER MEET | CLUSTER FORGET | CLUSTER ADDSLOTS >> |
---|