본문 바로가기

RedHat Product/High Availablility

왜 2Node RHCS환경에서 때때로 Split-brain이 생기는 걸까?!

RHCS는 Redhat Enterprize Linux내의 포함되어 있는 add-one패키지이다.

HA을 제공하는 하나의 솔루션이자, 패키지라 말할수 있다.

보통 RHCS을 적용하기위해 가장많이 소비자가 요구하는 환경은 다른 베리타스제품이나 성격은 다르지만 mysql cluster나 rac와 같은 2노드환경에서의 HA이다.
HA....말그대로 서비스의 fail-over을 말한다. 크게 보면 시스템 및 OS 그리고 서비스 크게 분류할수도 있다.

그렇다면 2node환경에서 가장 문제시 되는 장애요인을 꼽으라면 무엇이 있겠는가?!
그건 Split-Brain이라 말할수 있다.

그런데 왜 생기는 걸까? 내가 직접 구축하고 사례를 판단했을때 정말 너무나도 많았다.
그걸 세부하게 나누라면 정말 머리가 꽤 아플꺼라 생각된다.


그럼에도 나눈다면 아래와 같이 크게 나뉠수 있겠다.
1 . 일반적으로 클러스터노드간에 heartbeat체크가 매우 중요한 요소로써 자리매김한다. 그 안에는 multicast을 통한 클러스터그룹내의 노드간의 token개념의 통신이 이뤄지는데, 이 부분이 정상적으로 이뤄지지 않거나 물리적으로 문제가 발생한다면, fence loop/fence death 와 같은 상황이 발생될 여지가 있다.
2. 어찌 보면 위와 같은 과정과 동일하다고 볼수 있는데, 클러스터그룹내에 있어 통신할수 없는 경우, 근본적으로 노드간의 그룹이 형성될수 없는 경우가 이에 해당된다고 본다.

그렇다. 그러면 해결은 어떻게 할것인가??
1. /etc/hosts 클러스터노드이름을 정해줄시, REDHAT표준을 따르는 것이 좋다.
2. /etc/hosts가 제대로 (127 줄에 로컬 호스트 이외의 호스트 이름)을 배치하지 않도록 확인한다.
3. 클러스터 노드간에 통신이 될수 있도록 별도의 네트워크환경을 국한시킨다.
4. iptables 및 스위칭 하드웨어 노드 사이의 멀티 캐스트 트래픽을 차단하지 않도록 주의한다.
5. quorum을 통해 예방이 아닌, 어느정도의 상황을 방지할수 있다. 결론적으로 최소한의 서비스를 보장시킬수 있는 방지책이라 할수 있다.


'RedHat Product > High Availablility' 카테고리의 다른 글

RHEL Clustering(RHCS) Heartbeat이란?  (3) 2013.11.17