MariaDB 5.5 Galera Cluster Monitoring v1.0
13.08.05 |
v1.0 |
|
|
|
|
|
|
|
http://www.codership.com/wiki/doku.php?id=monitoring 를 번역한 문서입니다.
−Table of Contents
중요 모니터링 파라미터
모든 wsrep 와 관련있는 ( 이 경우에는 – Galera ) status variables 은 ‘wsrep_’ prefix 를 가진다. 그래서 다음과 같이 쉽게 확인할 수 있다.
mysql> SHOW VARIABLES LIKE 'wsrep_%';
Status variables 은 매회의 SHOW STATUS 명령에 대해 그 값이 다르다. 때문에 2 회의 SHOW STATUS 를 ~ 1 분의 인터벌 수행하는 것을 권고한다.
1. Cluster integrity 체크
가장 중요한 확인사항은 노드가 제대로 클러스터에 속해 있는지 확인하는 것이다. 이는 다음을 통해 확인할 수 있다.
wsrep_cluster_state_uuid
이 값은 클러스터의 모든 노드가 동일한 값을 가져야만 한다. wsrep_cluster_state_uuid 값이 다른 값을 가지고 있는 노드는 연결되지 않은 노드이다.
다음으로 체크할 사항은 노드가 동일한 콤포넌트에 연결되어 있는지 확인하는 것이다.
wsrep_cluster_conf_id
이 값 또한 모든 노드가 동일한 값을 가져야 한다. 만약 wsrep_cluster_conf_id 가 다른 값을 가지고 있다면 이는 파티션 되어 있다는 의미이다. 이는 임시적인 문제로
노드간의 네트워크 연결 문제가 해결되면 해소되어야 할 문제이다.
wsrep_cluster_size
만약 노드 숫자와 동일한 값을 리턴한다면, 모든 클러스터 노드는 연결되어 있는 것이다. 이는 한 노드에서만 체크하더라도 충분한 값이다.
마지막으로 연결되어 있는 노드가 연결되어 있는 클러스터 콤포넌트의 primary 상태를 체크하는 것은 중요하다.
wsrep_cluster_status
만약 값이 Primary 값이 아니라면, 파티션이 조재, split-brain 컨디션이다. 그리고 해당 콤포넌트는 현재 수행이 불가능한 상태가 된다.
또 Primary component
에 연결 된 다른 노드가 없다면 (예를들어 같은 콤포넌트에 non-primary 상태로 연결 된 모든 노드) 클러스터는 수동으로 rebootstrapped 해야 한다.
모든 노드는 shutdown 되어야 하며 가장 앞선 시점으로 restarted 해야 한다.
(wsrep_last_committed status variables 을 확인한다.)
하지만 존재하는 다른 클러스터 콤퍼넌트가 존재하고 그것이 primary 라면, 노드간의 연결 손실과 그 회복을 확인해야 한다. non-primary 상태로부터의 복구는 primary component 에 대해
자동으로 재연결하고 싱크한다.
2. Node 상태점검
상태를 점검하는 주요 variable 은 다음과 같다.
wsrep_ready
위 값이 true (실제로는 ON | OFF 로 표현 됨) 라면 해당 노드는 SQL load 를 받아들일 수 있다.
wsrep_connected
만약 true (ON) 가 아니라면 확인해야 한다. OFF 라면 해당 노드는 아직 클러스터에 연결되지 않았다는 것을 의미한다. 이는 잘못된 환경구성으로 인해 발생한다.
(잘못된
wsrep_cluster_address 와 / 혹은 wsrep_cluster_name). wsrep_ready = off 라면, 발생 문제는 wsrep_local_state_comment 에서 확인할 수 있다.
Primary component 에서 가질 수 있는 상태는 Joining, Waiting for SST, Joined, Synced,
Donor 이다. 만약 wsrep_ready = off 이고
state comment 의 값이 처음 3개 값 중 하나라면, 이는 Cluster 와 동기중이란 뜻이다.
non-primary 콤포넌트 노드의 state comment 는 Initialized 이다. 다른 states 는 일시적인 것들이다.
3. Replication 상태점검
Replication 상태를 가리키는 메인 지표는
wsrep_flow_control_paused
위 variables 이다. 이 변수의 범위는 0.0 ~ 1.0 으로 마지막 show status 명령으로부터 replication 이 중지되었던 시간의 비율을 의미한다. (때문에 1.0 은 완전한 정지를 의미한다.)
다른 의미로는 Cluster 가 slave lag 으로 인해 얼마나 느린가를 보여준다. 이 값은 가능한 한 0.0 에 가까워야 한다.
이 값을 개선하기 위한 가장 좋은 방법은 wsrep_slave_threads 값을 증가시키고 느린 노드를 클러스터 구성에서 삭제하는 것이다.
권고되는 wsrep_slave_threads
이상적인 값은 아래의 status variables 을 참고하여 설정한다.
wsrep_cert_deps_distance
이 variables 는 얼마나 많은 트랜잭션이 병렬로 적용될 수 있는지를 보여준다.
이를 참조하여 wsrep_slave_threads 값을 이 값보다 크게 설정할 수 있다.
가장 느린 클러스터 노드 찾기
가장 느린 클러스터 노드는 가장높은 다음의 variables 을 가진다 :
wsrep_flow_control_sent
그리고
wsrep_local_recv_queue_avg
위의 두 값이 낮을수록 좋다.
4. 느린 네트워크의 발견
High (on the order of the number of client connections) values in;1
다음의 높은 값은
wsrep_local_send_queue_avg
Network link 의 병목현상을 가리킨다. 이 경우, 원인은 어떤 레이어에서도 발생할 수 있으며, 물리적 구성부터 OS 구성까지 확인해야 한다.