...
...
| Table of Contents |
|---|
스플릿 브레인
개요
복제 클러스터의 관리자 또는 관리(HA) 소프트웨어에 의해 특정 시점에 소스 노드가 2 노드 이상 되는 상태를 스플릿 브레인(이하 SB) 이라고 합니다. SB는 복제 연결이 단절될 때 발생하며 양 노드가 서로의 역할과 상태를 알 수 없는 상태에서 동시에 소스노드가 되는 상황입니다. 이렇게 SB가 발생하면 복제 클러스터가 2개의 복제 SET으로 분할되어 잠재적으로 데이터가 유실될 수 있는 상태에 놓입니다. SB 발생을 인지하면 관리자는 다음의 절차에 따라 SB를 해결하고 복제를 정상화 시켜야 합니다.
...
| Code Block |
|---|
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를 해결합니다.
| Code Block |
|---|
fsradm connect --discard-my-data <res-id> <peer-node> |
--discard-my-data 로 연결을 수립하여 SB를 해결하면 희생노드는 상대노드를 기준으로 재 동기화하여 최신 복제 데이터 셋으로 복구 합니다.
| Info |
|---|
1:N 복제의 경우 여러 노드 사이에서 SB 가 발생할 수 있는데 이를 다중 SB가 발생한 상태로 규정 합니다. 다중 SB가 발생한 경우에도 위 절차와 다르지 않게 모든 희생 노드에서 --discard-my-data 로 연결을 수립하여 SB를 해결합니다. |
...
다음의 장애 상황에 대한 후속 대응을 설명합니다.
디스크 장애
FSR 엔진의 파일 I/O 오류
디스크 장애
복제 대상이 위치한 볼륨이 운영 중 의도치 않게 마운트 해제 되거나 물리적 파손으로 인해 저장매체 자체에서 문제가 되는 등 복제 대상 디스크 자체에서 장애가 발생할 수 있습니다.. 이 경우 사용자는 복제 대상을 다시 복구하여 볼륨 장치가 다시 가동될 수 있도록 조치해야 합니다. 수동 복구가 완료되면 전체 동기화를 통해 복제를 재 시작 해야 합니다.
...
FSR은 디스크의 상태를 주기적으로 모니터링하여 디스크에 이상이 발생할 경우 이를 감지합니다. 이는 S.M.A.R.T.(Self-Monitoring, Analysis, and Reporting Technology) 기술을 기반으로 하며 모니터링의 주기는 다음과 같이 지정할 수 있습니다.
...
통상 이러한 유틸리티를 사용할 경우에는 볼륨을 언마운트한 후 사용하는게 안전하며, 그리고 이 검사 과정에서 논리적 결함감지와 그에 따른 복구가 있었다면 타깃과의 정합성 일치를 위해 해당 볼륨을 다시 복제 리소스로 기동한 후 반드시 전체 동기화를 시켜 주어야 합니다.
파일 잠금
파일 핸들 닫기 오류
리눅스 파일 잠금의 과정에서 복제 대상 파일들 중 이미 열려져 있던 파일의 핸들을 정리하는 절차가 있습니다. 이 절차를 수행하는 과정에서 다음과 같은 오류 메시지가 발생할 경우에 대한 설명 입니다.
| Info |
|---|
ERR handle closed error="attach: operation not permitted" exec=handle group= key=2 name=/opt/data/b/1234.txt node=b pid=76716 resource=r0 |
위 오류는 리눅스에서만 발생하며 해당 제어를 수행하는 ptrace 유틸의 권한이 없기 때문에 발생하는 문제로 이 문제를 이를 해결하기 위해선 시스템의 권한 설정을 조정해야 합니다. /proc/sys/kernel/yama/ptrace_scope 의 값이 3 으로 설정된 경우 이 값을 0~2 사이의 값으로 조정해야 하고 설정을 조정한 후 리부팅을 해야 합니다. 만약 시스템의 ptrace_scope 설정 scope 설정 값을 조정할 수 없다면 파일을 열고 있는 프로세스들을 모두 종료하도록 수동으로 조치해야 합니다.
...