Redis CLUSTER FORGET

<< CLUSTER MEET CLUSTER ADDSLOTS >>

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 명령으로도 확인할 수 있다.
  • 127.0.0.1:7000> cluster forget 477d8bbce1eb674da8100570a6f1742894c6d8fd

명령문

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 >>

질문하거나 댓글을 보려면 클릭하세요.  댓글수 :    조회수 :

Email 답글이 올라오면 이메일로 알려드리겠습니다.