스플릿 브레인
개요
복제 클러스터의 관리자 또는 관리(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>
--discoard-my-data 로 연결을 수립하여 SB를 해결하면 희생노드는 상대노드를 기준으로 재 동기화하여 최신 복제 데이터 셋으로 복구 합니다.
장애 대응
FSR 은 다음의 오류 상황들을 장애로 정의하고 이에 대한 후속 대응과 정책을 제공합니다.
I/O 오류
복제 중 파일 쓰기 I/O 는 실패할 수 있습니다. 파일 쓰기에 대한 권한이 변경되어 권한 오류가 발생하거나 파일시스템 수준에서 오류가 발생하는 등 다양한 상황에서 오류가 발생합니다. 이런 경우에 FSR 은 소스의 파일 쓰기는 성공하지만 타깃이 실패하면 복제를 우선 중단하고 에러 로그를 통해 사용자에게 오류 발생을 통보 합니다.
I/O 오류 발생에 대한 문제는 관리자가 오류 상황을 파악하고 문제 해결에 대한 조치를 취해야 합니다. 보통 I/O 오류가 발생하면 전체 복제 파일셋에서 일부 파일에 대해서만 발생할 경우가 많으므로 소스와 타깃간의 정합성 검사를 통해 데이터 불일치 부분에 대해서만 파악하여 해당 부분에 대해서만 재동기화 해서 복구하는 것이 효율적입니다.
주의!
장애 복구 시 동기화 소스가 될 노드를 신중하게 결정하세요.