클러스터링과 네트워크 파티션 클러스터링을 사용해서 복제를 통한 데이터 안정성, 작업 가용성, 처리량 향상 등 여러 목표를 달성할 수 있다. 클러스터 멤버간의 네트워크 연결 실패는 데이터 일관성 및 가용성에 영향을 준다. 각각의 어플리케이션은 일관성에 대한 요구사항이 다르고, 다른 규모의 비가용성을 견디므로 다른 '파티션 처리전략'을 사용할 수 있다. 1. 네트워크 파티션 감지 노드는 다른 노드가 일정시간동안(디폴트 60초) 노드에 접속할 수 없으면 해당 노드가 작동 중지되었다고 판단한다. 두 노드가 다시 접촉하면, 두 노드가 서로 장애가 발생했다고 생각하면 노드는 파티션이 발생했는지 결정한다. 이것은 다음과 같은 형식으로 래빗MQ 로그에 기록된다. 파티션 존재여부는 서버로그, HTTP API(모니터링용) 및 CLI 명령인 rabbitmqctl cluster_status 을 통해 식별할 수 있다. rabbitmqctl cluster_status 는 보통 partition에 대한 빈 리스트를 보여주지만, 네트워크 파티션이 발생하면 그곳에 나타난다. HTTP API는 각 노드에 대한 파티션 정보를 반환한다. 관리UI는 파티션이 발생한 경우 개요 페이지에 경고를 표시한다. ex) 래빗MQ 로그 =ERROR REPORT==== 15-Oct-2012::18:02:30 === Mnesia(rabbit@hostname): ** ERROR ** mnesia_event got {inconsistent_database, running_partitioned_network, hare@hostname} ex) rabbitmqctl cluster_status # => Cluster status of node rabbit@smacmullen ... # => [{nodes,[{disc,[hare@smacmullen,rabbit@smacmullen]}]}, # => {running_nodes,[rabbit@smacm...
댓글
댓글 쓰기