스플릿 브레인
개요
복제 클러스터의 관리자 또는 관리(HA) 소프트웨어에 의해 특정 시점에 소스 노드가 2 노드 이상 되는 상태를 스플릿 브레인(이하 SB) 이라고 합니다. SB는 복제 연결이 단절될 때 발생하며 양 노드가 서로의 역할과 상태를 알 수 없는 상태에서 동시에 소스노드가 되는 상황입니다. 이렇게 SB가 발생하면 복제 클러스터가 2개의 복제 SET으로 분할되어 잠재적으로 데이터가 유실될 수 있는 상태에 놓입니다. SB 발생을 인지하면 관리자는 다음의 절차에 따라 SB를 해결하고 복제를 정상화 시켜야 합니다.
감지
FSR 은 엔진 내부적으로 양 노드가 SB 상태인지를 식별할 수 있습니다. SB 에 대한 식별은 복제 연결이 수립되는 시점에 RID교환을 통해 수행하며 그 결과 SB 로 인식될 경우 복제 연결을 즉시 끊어서 연결 중립(standalone) 상태로 대기하게 됩니다. 다음은 SB 가 발생 되었을 때의 출력 로그 입니다.
2019-12-19 14:50:03.629 WRN establishing error=split-brain compare=newer key=1 peer=node3 resource=r0 state=connected
해결
SB 를 해결하는 방법은 SB가 발생한 두 노드 중 희생할 노드를 결정하는 것으로 시작합니다. 희생할 노드가 결정되면 희생노드 상에서 다음의 명령을 통해 희생노드의 데이터를 폐기하는 옵션으로 상대노드와 연결하여 최종 SB를 해결합니다.
fsradm connect --discard-my-data <res-id> <peer-node>
--discard-my-data 로 연결을 수립하여 SB를 해결하면 희생노드는 상대노드를 기준으로 재 동기화하여 최신 복제 데이터 셋으로 복구 합니다.
다중 SB가 발생한 경우, 희생노드 간 동기화는 발생하지 않으므로 모든 희생 노드에서 --discard-my-data 로 연결을 수립하여 해결할 수 있습니다.
장애 대응
FSR 은 다음의 오류 상황들을 장애로 정의하고 이에 대한 후속 대응과 정책을 제공합니다.
- 복제 대상 오류
- 파일 I/O 오류
복제 대상 오류
복제 대상이 위치한 볼륨이 운영 중 마운트 해제 되거나 물리적 파손으로 인해 저장매체 자체가 문제 될 경우를 복제 대상 오류로 규정합니다. 이 경우 사용자는 디스크 교체를 하는 등 원본 볼륨 장치를 수동으로 복구해야 하며 복구 이후 전체 동기화를 통해 재 시작 해야 합니다.
파일 I/O 오류
파일 I/O 는 파일경로 문제로 인한 오류 라든지 계정에 따른 권한 문제 등 다양한 상황에서 오류가 발생될 수 있습니다. I/O 오류가 자주 발생되는 것은 아니지만 의도치 않은 환경의 변화 라든지 잘못 작성된 응용에 의해 오류가 발생되는 것은 일반적 입니다. 이렇게 소스 측 응용 프로그램에 의해 수행하는 파일 I/O의 오류에 대해선 장애로 간주하지 않고 일반적인 파일 I/O 오류로 봅니다. 단 fsr 에서 수행하는 파일 I/O 오류가 실패한다면 이는 장애가 됩니다. fsr 이 파일 I/O 를 할 수 없으면 미러링 연산이 근본적으로 불가하므로 장애 처리는 불가피 합니다.
이 경우에도 관리자는 장애를 수동으로 복구해야 하며 파일 I/O 가 정상화된 후 복제를 재 구성하고 전체 동기화를 통해 재 시작해야 합니다.