cassandra 장비를 재시작할 때 다음 커맨드를 실행한다.




cassandra의 내부 통신은 gossip 프로토콜(p2p)을 사용한다. 해당 프로토콜을 이용해 서로의 상태를 확인하고 노드를 알수 있게 된다. disablegossip을 하면 클러스터에서 끊어지는 효과를 얻게 된다. 마치 그 장비는 없는 셈이 된다. (재시작된 서버가 클러스터에 빠져서 클러스터로 돌아왔을 때, consistency를 맞추기 위한 시간을 줄이기 위한 추가적인 기능인 Hinted handoff도 disable되지 않는다.) 


opscenter로 확인하면 클러스터에서 disablegossip 커맨드를 실행한 서버가 클러스터에서 빠져 있는 것을 볼 수 있다.


$ nodetool disablegossip



클러스터 상황이 내부적으로 정리되면, 이번에는 클러스터에 붙는 애플리케이션의 연결을 사용하지 않도록 한다. disablethrift는 cassandra data-stax client에서 해당 클러스터의 연결이 진행되지 못하도록 한다.


$ nodetool disablethrift


리눅스 내부적으로 tcpdump/netstat으로 확인해보면, disablethift를 실행할 때 기존의 connection은 끊기고 새로운 connection이 맺어지고 더 이상 데이터는 전달되지 않는 가짜 connection이 생긴다. (ping과 fin/ack 정도만 있다)



필요에 따라서는 opscenter와 agent와 같은 일부 probe툴과의 통신을 끊을 수 있다.


$ nodetool disablebinary



다음에는 drain 커맨드를 실행시켜 완전한 connection을 중단한다. 

애플리케이션과 중지된 cassandra간의 connection은 모두 끊어진다. 


$ nodetool drain



이제 cassandra 데몬을 종료한다.


$ kill -9 $cassandra_pid




cassandra 재시작 또는


$ reboot


작업을 진행한다...





cassandra 데몬을 실행한다. 



$ CASSANDRA_CONF=/etc/cassandra/conf cassandra


제대로 실행 중인지 로그를 확인한다. 참고로 부하와 cpu가 일시적으로 올라갈 수 있다. 


$ tail -f /var/log/cassandra/system.log




opscenter를 위한 모니터링 툴을 실행한다.


sudo service datastax-agent start



그리고, ntp 데몬이 정상적인지 확인한다. 동기(sync) 시간이 카산드라 클ㄹ스터에 중요한 부분을 차지하기 때문에 ntp 데몬이 정상인지 확인해야 한다. 그리고 불의의 사고에서도 동작되도록 chkconfig를 확인한다. 



$ ntpq -p

     remote           refid      st t when poll reach   delay   offset  jitter

==============================================================================

..



$  sudo chkconfig --list | grep ntpd

ntpd           0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제





이제 opscenter에서 클러스터에 제대로 붙어 있는지 확인할 수 있다. 


그리고, tcpdump를 사용해서 특정 소켓에 대해서 정상적으로 패킷이 왔다갔다 하는지 확인한다. 





* 참고 


재시작을 할 상황에서는 복구를 구성할 수 있는 정보가 3시간(디폴트)만 저장된다. 따라서 3시간이 넘어가면 복구할 수 없게 된다. 즉 복구 관련된 힌트 정보를 모두 삭제한다. 따라서 이를 위해 nodetool repaire를 실행해 클러스터의 정보를 복제하도록 해야 한다. 관련 복제 관련된 정보가 바로 max_hint_window_in_ms이다. 



http://docs.datastax.com/en/archived/cassandra/2.0/cassandra/configuration/configCassandra_yaml_r.html



max_hint_window_in_ms
(Default: 10800000 - 3 hours) Defines how long in milliseconds to generate and save hints for an unresponsive node. After this interval, new hints are no longer generated until the node is back up and responsive. If the node goes down again, a new interval begins. This setting can prevent a sudden demand for resources when a node is brought back online and the rest of the cluster attempts to replay a large volume of hinted writes.




'cassandra' 카테고리의 다른 글

[cassandra] 로그 설정 팁  (0) 2017.01.11
[cassandra] nodetool disablebinary  (0) 2017.01.11
[cassadra] compaction 전략  (0) 2016.12.09
[cassandra] select count(*) 구하기  (0) 2016.12.07
[cassandra] read repair  (0) 2016.11.23
Posted by '김용환'
,