Removing nodes entirely


You can take a node out of the cluster with nodetool decommission to a live node, or nodetool removetoken (to any other machine) to remove a dead one. This will assign the ranges the old node was responsible for to other nodes, and replicate the appropriate data there. If decommission is used, the data will stream from the decommissioned node. If removetoken is used, the data will stream from the remaining replicas.


No data is removed automatically from the node being decommissioned, so if you want to put the node back into service at a different token on the ring, it should be removed manually.

원문: http://wiki.apache.org/cassandra/Operations#Removing_nodes_entirely



 

removetoken 

decomission 

 명령 실행 대상

클러스터에서 대상 노드를 제외하고

남아 있는 노드중 하나

decommission 대상 노드 

Replica 재조정 

남아 있는 노드들이 Replica 재생성 

decommission 노드가 데이터 스트림 수행

 제거 대상 노드 상태

Down 

Up 


Wiki 가이드 내용을 요약하면 표와 같다.


정리하자면, 제거 대상 노드가 살아 있을 경우, decommission이 유리하고, 그렇지 않을 경우에 removetoken을 사용해야 할 것으로 예상된다.


이유는, 아무래도, 없어진 replica에 대해서 누군가로부터 읽어서, 그리고 노드간 송/수신이 일어나야 복원이 되는 removetoken에 비해, decommission의 경우 탈퇴/제거 당시 시점까지의 데이타는 모두 가지고 있기 때문에 속했던 클러스터로 데이타를 주기만 하며, 클러스트에서 계속 서비스 중인 노드들은 이제는 외부로부터 데이타를 받기만 하면 되기 때문이다.


여튼저튼, decommission명령에 더이상 서비스는 담당하지 않겠다는, disable thrift, disable gossip과 같은 행위가 수반되는지를 Source Code로부터 확인은 해봐야 겠지만, 위 정보만으로 우선 메모 해둠...

(최근 발표된 cassandra 1.2.x는 virtual-node 방식이라, decommission은 어떻게 작용할지 의문이나, removetoken은 더이상 의미가 없을 것 같다.)


추후, 확인 하고 내용 추가 예정...

Posted by 사랑줍는거지
,