8- 장애 유형별 대처 방법
MCCS를 사용하여 서버 이중화를 구성한 후, 서비스 운영 중에 여러 가지 장애가 발생할 수 있습니다.
이 장에서는 MCCS가 어떻게 장애를 감지하고 대처하는지에 대해 다음의 예제에서 상세하게 설명합니다.
(다음 예제에서 운영 서버는 'Active', 대기 서버는 'Standby'란 이름으로 MCCS에 등록되어 있습니다.)
이 페이지의 주요 내용
서버 장애
각 장치(NIC, Raid Controller)의 드라이버 충돌, 기타 응용프로그램의 커널 드라이버 문제 등으로 시스템이 자동 재부팅 또는 셧다운 되는 경우입니다.
운영 서버 장애
- 서버의 정상 혹은 비정상 종료에 따른 MCCS의 역할에는 차이점이 없습니다. MCCS는 운영 서버에서 장애가 발생하면 대기 서버로 페일오버를 진행합니다.
화면의 오른쪽에 있는 노드 관리에서 해당 서버를 선택하면 '리소스 상태' 및 '리소스 의존성' 화면을 통하여 장애를 확인할 수 있습니다.- 정상 종료 사용자가 운영체제에서 '시스템 종료'를 선택한 경우를 말합니다.
- 비정상 종료 블루스크린 또는 예기치 않은 상황으로 인해 시스템 종료 혹은 재부팅 되는 경우를 말합니다.
[그림] 운영 서버 장애 발생 화면 - 서버 장애로 인해 데이터를 복제 할 수 없기 때문에 미러 디스크 리소스 부분에 표시가 생깁니다.
- 서버 운영자는 장애를 발생시킨 부분을 확인하여 서버를 정상화 시켜야 합니다.
- 장애가 발생한 서버가 다시 부팅이 되면 MCCS는 두 서버간의 상호 미러 역할을 확인 후 장애가 발생한 서버를 복제 타깃으로 설정하고 부분 동기화를 진행합니다.
대기 서버 장애
- 대기 서버에 장애가 발생하면 MCCS는 해당 서버에 장애 발생을 표시합니다.
- 대기 서버가 정상화 되기 전까지 데이터 복제를 잠시 중단합니다.
[그림] 대기 서버 장애 발생 화면 - 데이터 동기화가 불가능해지고 미러 디스크가 '네트워크 연결 실패' 상태( )가 됩니다.
- 대기 서버에서 장애가 발생하면 운영상에는 문제가 없지만 페일오버할 대상이 없으므로 서버 운영자는 반드시 MCCS 웹 콘솔을 통하여 장애를 확인하고 대기 서버를 정상화 시켜야 합니다.
- 대기 서버가 다시 정상으로 돌아되면, 아이콘이 사라집니다.
- 미러디스크의 DiskState 상태 값은 'Inconsistent' 에서 'UpToDate' 상태로 변경되기 위해, 데이타 동기화()를 진행합니다.
- 동기화가 완료가 되면, 현재 정상 데이터가 실시간 동기화되고 있다. ( )는 상태로 변경됩니다.
응용프로그램 장애
운영중인 응용프로그램 리소스에 대하여 MCCS는 다음과 같은 4가지 요소에 의해 동작을 하게 됩니다.
- MonitorInterval (기본값=10초): 설정된 값을 주기로 리소스를 감시합니다.
- MonitorTimeout (기본값=10초): 설정된 값 만큼 응답이 오지 않으면 장애로 판단합니다.
- RestartLimit (기본값=0): 설정된 값만큼 해당 응용프로그램 리소스를 재시작합니다.
- OnlieTrustTime (기본값=600초): 리소스 재시작 횟수를 재설정하는 시간입니다.
위의 속성값들은 해당 리소스를 등록할 때 설정된 값이고, 사용자는 각 리소스의 속성 페이지를 통하여 값을 수정하거나 확인할 수 있습니다.
[그림] 리소스 속성값 수정 화면
- MCCS는 MonitorInterval에 의해서 해당 리소스를 감시합니다.
- MonitorTimeout에 설정된 시간만큼 응답이 없으면 해당 리소스가 장애라고 판단합니다.
- RestartLimit에 설정된 횟수만큼 해당 리소스에 재시작 명령을 내려도 응답이 없으면 MCCS는 그 리소스가 속해 있는 그룹을 페일오버합니다.
- 리소스가 OnlineTrustTime에 정의되어 있는 시간 동안 정상 상태를 유지하면 MCCS는 RestartLimit의 속성값을 초기화 합니다. 왜냐하면 리소스에 장애가 발생할 경우에 재시작 횟수를 보장하기 위해서입니다.
- 응용프로그램 장애로 인해 페일오버가 되었다면 서버 운영자는 장애를 발생시킨 부분을 확인하여 정상화 시켜야 합니다.
- 장애가 발생한 부분은 MCCS 웹 콘솔에서 확인할 수 있으며, 장애가 발생한 부분을 사용자가 확인한 후에 장애 표시를 제거해 주어야 다시 페일오버 기능이 활성화됩니다.
자동으로 장애 표시를 제거하고자 할 경우에는 그룹 속성의 AutoFaultClearTime에 0보다 큰 값을 설정하면 됩니다. - 장애가 발생한 서버가 다시 부팅이 되면 MCCS는 두 서버간의 상호 미러 역할을 확인한 후에 장애가 발생한 서버를 복제 타깃으로 설정하고 동기화를 진행합니다.
[그림] 리소스 장애 표시 제거 화면
네트워크 장애
네트워크 장애는 네트워크 스위치나 네트워크 카드 고장, 네트워크 케이블 단절 또는 특정 네트워크로의 Ping 타임아웃 발생 등의 문제로 통신 장애가 발생되는 경우를 말합니다.
MCCS 라이선스는 MAC 어드레스를 참조하기 때문에 네트워크 카드가 변경되면 라이선스를 재발급 받아야 합니다.
서비스 네트워크 장애
운영 서버에서 서비스 네트워크 장애가 발생하면 MCCS 웹 콘솔의 네트워크 주소 또는 네트워크 카드 리소스부분에 장애 표시가 되고 대기 서버로 페일오버를 진행합니다.
[그림] 네트워크 카드 장애 표시 화면
- 서비스 네트워크 장애는 장애가 발생한 부분을 MCCS 웹 콘솔에서 확인할 수 있습니다.
- MCCS는 네트워크 장애가 발생된 서버의 네트워크 케이블 단절 또는 특정 네트워크로의 Ping 타임아웃 발생 유무를 확인합니다.
- 네트워크 주소 리소스가 장애 원인이라면 사용자는 네트워크 스위치 또는 네트워크 카드부터 점검해야 합니다. 네트워크와 관련된 물리적인 부분들이 정상화 된 후에는 MCCS 웹 콘솔에서 "장애표시제거" 메뉴를 선택하여 장애 표시 항목을 제거 합니다. 이 때부터는 페일오버가 가능한 상태가 됩니다.
- 자동으로 장애표시를 제거하려면 그룹 소것ㅇ의 AutoFaultClearTime 에 0보다 큰 값을 설정하면 됩니다.
핫빗 네트워크 장애
핫빗은 노드 상호간의 상태를 동기화하고 장애 상태를 결정하는 중요한 역할을 하기 때문에 반드시 이중화되어 있어야 합니다. 이중화된 핫빗 네트워크 중에서 어느 하나라도 장애가 발생하면 장애 내용은 로그창에 표시 됩니다.
하지만 MCCS 웹 콘솔에는 아무런 변화가 나타나지 않습니다. 이것은 운영 서버와 대기 서버에는 아무런 문제가 없다는 것을 뜻합니다.
이 때, 운영 서버에 문제가 생겨 대기 서버로 페일오버 해야 할 상황이 발생하면 MCCS는 장애가 발생하지 않은 정상적인 핫빗 네트워크를 이용하여 페일오버를 진행하게 됩니다.
만일 이중화된 핫빗 모두가 단절된 상황이라면 MCCS는 서비스 네트워크를 이용하여 핫빗 통신을 하게 됩니다.[그림] 핫빗 장애 발생 화면
- 핫빗 장애는 MCCS 로그, 윈도우 시스템 로그에서 장애 내역을 확인할 수 있습니다.
- 핫빗 장애가 발생하면 서버 관리자는 서버의 TCP/IP, 물리적인 연결 상태 및 ping 테스트를 통해 핫빗이 정상적인 상태인지를 확인해야 합니다.
- 만약 비정상적인 상황이라면 카드 불량, 케이블 연결 불량 혹은 케이블 단선 등을 확인하고 장애 원인을 제거해야 합니다.
복제 네트워크 장애
복제 네트워크에 장애가 발생하면 데이터 복제를 진행할 수 없으며, MCCS 웹 콘솔의 미러 디스크 리소스 부분이 'Disconnect' 상태( )로 표시 됩니다.
[그림] 복제 네트워크 장애 발생 화면
- 복제 네트워크 장애는 MCCS 로그 및 OS 로그에서 장애내역을 확인할 수 있습니다. 복제 네트워크 장애가 발생하면 서버 관리자는 서버의 TCP/IP, 물리적인 연결상태 및 ping 테스트를 통해 복제 네트워크가 정상적인 상태인지를 확인해야 합니다.
- 만약 비정상적인 상황이라면 카드 불량, 케이블 연결 불량 혹은 케이블 단선 등을 확인하고 장애 원인을 제거해야 합니다.
단일 네트워크 스위치 장애
단일 네트워크 스위치로 구성된 환경에서 Public Network에 연결된 네트워크 스위치에 장애가 발생하면 운영 서버 및 대기 서버의 모든 그룹 리소스가 오프라인이 되며, 장애가 발생한 리소스는 '장애' 상태로 표시 됩니다.
[그림] 네트워크 스위치 장애 발생 화면
- 네트워크 스위치 장애는 MCCS 로그, OS 로그에서 장애 내역을 확인할 수 있습니다.
서버 관리자는 케이블 연결 상태 및 ping 테스트를 통해 해당 네트워크 스위치 상태 및 네트워크 연결 상태를 확인하고 장애 원인을 제거해야 합니다. - 자동으로 장애 표시를 제거하려면 그룹 속성의 AutoFaultClearTime에 0보다 큰 값을 설정하면 됩니다.
- 네트워크 스위치 장애에 대한 복구는 해당 제조사를 통하여 지원 받으시기 바랍니다.
디스크 장애
미러 디스크 장애
소스 디스크 장애
운영 서버의 미러 디스크 리소스에 장애가 발생하면 MCCS 웹 콘솔에 장애가 표시됩니다. MCCS는 해당 디스크에 Read/Write가 불가능한 상황이므로 장애로 인식하여 대기 서버로 페일오버를 진행합니다.
[그림] 미러 디스크 장애 발생 화면
- MCCS에서 디스크에 대한 장애 감지 방식은 다음과 같습니다.
- 해당 디스크에 대해서 Read/Write를 실행합니다.
- 해당 디스크의 마운트 유무를 판단합니다.
- 디스크 장애 발생 요인은 다음과 같은 경우가 있을 수 있습니다. 위의 문제가 해결 된 후에 운영 체제는 변경된 디스크를 다시 인식합니다.이후 DRBD에서 동기화를 진행합니다.
- 디스크 컨트롤러 문제 하드웨어 자체의 문제는 해당 업체에서 해결해야 합니다.
- 물리적인 디스크 문제 하드웨어 자체의 문제는 해당 업체에서 해결해야 합니다.
- 미러 리소스에서 동기화가 진행되지 않으면 미러디스크 리소스를 삭제한 후에 다시 생성해야 합니다. 단, 삭제 시 리소스만 삭제가 아니라 생성된 미러까지 삭제하고 다시 생성해야 합니다.
- 타깃 디스크 장애
대기 서버의 디스크에 장애가 발생하면 MCCS 웹 콘솔의 디스크 리소스 아이콘은 변화가 없고, Diskstate 의 속성 값이 UptoDate에서 Diskless 로 변경 됩니다. 그러나 소스 서버에서 운영중인 서비스에는 영향을 미치지 않습니다.
[그림] 타깃 디스크 장애 발생 화면
- MCCS에서 타깃 디스크에 대한 장애 감지는 해당 디스크의 DiskState 상태에 대한 값만을 출력합니다.
- 디스크 장애 발생 요인은 다음과 같은 경우가 있을 수 있습니다.위의 문제가 해결 된 후에 운영 체제는 변경된 디스크를 다시 인식합니다.
이후 DRBD에서 동기화를 진행합니다.미러 리소스에서 동기화가 진행되지 않으면 미러디스크 리소스를 삭제한 후에 다시 생성 해야합니다.
단, 삭제 시 리소스만 삭제가 아니라 생성된 미러까지 삭제하고 다시 생성해야 합니다.- 디스크 컨트롤러 문제 하드웨어 자체 문제는 해당 업체에서 해결해야 합니다.
- 물리적인 디스크 문제 하드웨어 자체 문제는 해당 업체에서 해결해야 합니다.
미러 디스크 리소스의 Split Brain
매우 드문 경우이지만 두 서버상에서 미러 디스크 역할이 모두 Primary로 인식되었고, 웹 콘솔의 데이터 값이 불일치 하는 경우입니다.
이러한 상황은 타깃이 소스로 변경되는 시점에 기존 소스가 타깃으로 변경되지 못한 결과이며, 이 때는 서로 자신의 데이터를 동기화하려 하지만 이전 데이터 값이 불일치하기 때문에 자동으로 동기화하지 않게 됩니다.
미러 디스크에서 Split Brain이 발생하는 상황은 다음과 같습니다.
- 소스 서버(A) 장애로 인해 페일오버가 발생합니다.
- 타깃 서버(B)의 역할이 Primary 로 변경됩니다. (미러 디스크 역할 변경)
- 최초의 소스 서버(A)를 재부팅합니다.
- 최초의 소스 서버(A)가 부팅된 후에 타깃 서버(B)의 역할을 확인합니다.
- 양 노드의 GI 값을 확인 합니다. .
- GI 데이터의 값이 일치유무를 확인하고 일치한다면 자동으로 데이터 동기화를 진행합니다. (5, 6번 과정 확인 실패)
- GI 데이터 값이 불일치 하여 어느한쪽 노드를 기준으로 동기화가 필요하며 동기화를 자동으로 진행하지 않습니다. (Split Brain 발생)
이러한 상태가 되면 MCCS 웹 콘솔에서 미러 디스크 리소스의 아이콘 표시와 겹쳐서 나타나며(), 'SplitBrainStatus' 속성 값이 True로 표시됩니다.
이러한 경우에는 미러 디스크 역할을 수동으로 변경해야 하며, 변경한 후에는 재동기화 과정이 발생합니다.
미러 디스크 역할을 수동으로 변경하는 방법은 MCCS 웹 콘솔을 이용하면 됩니다.
- MCCS 웹 콘솔을 사용해서 스플릿브레인을 해결하는 방법
리소스 속성창을 확인합니다.
[그림] 미러디스크 스플릿 브레인 확인미러 관리창을 확인합니다.
[그림] 미러디스크 스플릿 브레인 확인1) 양노드의 ConnectState는 StandAlone이며, SplitBrainStatus 값은 True가 됩니다.
2) 미러디스크의 LastMirrorOnlineTime을 확인합니다. (LastMirrorOnlineTime은 시스템의 시간이므로 최신 데이터의 유무를 결정할 수 있는 절대값이 아닙니다)
3) 스플릿 브레인이 발생했을 때 발생하는 로그가 출력됩니다.
(DRBD 볼륨(r0)에 스플릿 브레인이 발생했습니다.)
4) 미러 관리창에서 미러 상태가 'SPLIT' 상태입니다.- 미러디스크를 선택하고 오른쪽 버튼을 클릭하여 '스플릿 브레인 해결'을 클릭합니다.
[그림] 스플릿 브레인 해결 선택 - 스플릿브레인에 대한 설명창이 출력됩니다.
[그림] 소스 노드 선택에 대한 내용 확인 - 소스노드를 선택합니다.
[그림] 소스 롤 노드 선택 - 선택한 소스노드에 대해 다시 한번 확인합니다.
[그림] 소스 노드 선택 다시 확인 - 스플릿해결 중인 화면입니다.
[그림] 스플릿 브레인 해결 화면 - 스플릿해결 완료 화면입니다.
[그림] 스플릿 브레인 해결 완료 화면 선택한 노드가 소스노드가 되고 미러디스크의 DiskState 상태는 UpToData로 바뀌게 됩니다.
[그림] 스플릿 브레인 해결노드 B 의 변경된 정보는 모두 덮어써지게 됩니다
공유 디스크 장애 (외장 스토리지)
외장 디스크의 연결 경로 및 디스크에 장애가 발생하면 해당 디스크의 Read/Write가 불가능하므로 MCCS는 장애를 표시하고 페일오버를 진행합니다.
[그림] 공유 디스크 장애 발생 화면
외장 스토리지 장애는 MCCS 로그, 시스템 로그에서 장애 내역을 확인할 수 있습니다.
외장 스토리지 자체에 문제가 생기면 스토리지를 복구 할 때까지 서버 운영이 중단 됩니다. 따라서 빠른 시간 내에 스토리지를 복구하거나 임시 스토리지(백업 스토리지)로 교체해서 사용해야 합니다.
외장 스토리지와 관련된 장애는 해당 스토리지 업체에 문의하시기 바랍니다.
장애가 발생한 서버의 외장 스토리지 연결 및 디스크가 정상화 되면 OS가 복구된 환경을 다시 인식할 수 있도록 MCCS의 서버를 재부팅 해야 합니다.
또한 해당 스토리지 벤더를 통해 스토리지의 이중화 대책을 마련해야 합니다.
SCSI Lock 장애
SCSI3-PR 을 사용하는 볼륨매니저와 연동할 때
볼륨 매니져(예: 시멘택의 SFW 같이 SCSI3-PR 예약 기능을 사용하는 제품)는 SCSI Lock 에이전트와 같이 사용할 수 없습니다.
SCSI3-PR을 지원하는지 확인할 때
디스크가 SCSI3-PR 기능을 지원하는지 scsicmd.cmd 명령으로 PR 타입을 확인합니다.
공유 디스크 에이전트와 연동할 때
공유디스크 에이전트와 SCSI Lock 에이전트를 연동할 경우, 공유디스크 에이전트 동작이 정상임을 확인 한 후에 SCSI Lock 에이전트를 등록합니다.
이때 SCSI Lock 에이전트의 디스크 사용목적은 H/W적인 LOCK 장치로 사용하기 위함이지 디스크의 내용을 사용하지는 않습니다. 따라서 디스크의 크기는 작아도 되며 내용은 보호하지 않습니다.
등록 키 충돌 오류가 날 때
scsicmd.cmd -c 옵션 혹은 scsicmd.cmd -cf 옵션 으로 예약키 또는 등록키를 모두 제거한 후 다시 설정해야합니다. 그리고 리소스 등록전에는 등록된 키는 없는지 확인하고 있으면 제거후 등록해야 합니다.
참고로 현재 키는 노드의 MAC 주소를 사용하여 자동으로 설정합니다. 여러개의 네트웍 어탭터중에서 첫 번째 어탭터의 MAC 주소를 사용합니다. 이 키는 설정파일에 자동 기록합니다. 설정파일에 키가 존재할 경우에는 키를 새로 만들지 않습니다.
하나의 디스크에 여러 레터가 존재할 경우 한개의 레터에 예약 시 나머지에 레터에 접근을 못할 때
SCS Lock 대상 디스크는 단일 디스크 디바이스를 지원합니다. 다중 볼륨(하나의 LUN에 여러 파티션을 구성하는 경우)을 사용하는 디스크는 사용하지 마십시요.
에이전트 등록 후 DUID가 해결되지 못한 상태로 유지될 때
디스크 디바이스를 정의하고 활성화를 요청해야 main.json에 해당 레터에 연결된 DUID 정보가 기록됩니다.
에이전트 삭제할 때
SCSI Lock 에이전트가 삭제될때 예약을 해제합니다. 따라서 예약대상 공유디스크가 상대 노드에서 사용될 가능성을 염두에 두고 삭제를 해야 합니다. 즉 삭제할 경우에는 상대 노드를 다운시킨 후 작업하십시요.
서포트 파일을 수집하는 방법
MCCS 에 문제가 생겼을 경우 로그와 환경 정보의 수집을 위해서 서포트 파일을 수집할 수 있습니다.
서포트 파일을 수집하는 방법은 다음과 같이 2가지가 있습니다.
웹 콘솔로 수집하는 방법
- MCCS 웹 콘솔에서 메뉴바의 '파일'을 클릭하여 서포트 파일을 수집할 수 있습니다.
[그림] 메뉴바에서 서포트 파일 수집 - MCCS의 툴바 아이콘을 클릭하면 서포트 파일을 수집할 수 있습니다.
[그림] 툴바에서 서포트 파일 수집 - 서포트 파일을 수집할 노드의 선택과 이전에 받은 서포트파일을 다시 받을 수 있습니다.
[그림] 서포트 파일 노드 선택 및 이전 서포트 파일 선택 여부 확인 버튼을 누르면 서포트 파일을 수집합니다.
[그림] 서포트 파일 수집 중 화면로그파일의 용량과 네트워크의 상태에 따라서 몇 분이 걸릴 수도 있습니다.
- 수집된 서포트 파일은 지정된 위치에서 확인할 수 있습니다.
[그림] 서포트 파일 수집 확인
스크립트 파일을 실행해서 수집하는 방법
스크립트 파일의 위치는 아래와 같습니다.
$MCCS_HOME/bin/Support/support.cmd
이 방법은 스크립트를 실행한 노드의 정보만 수집합니다.
수집된 서포트 파일은 다음의 위치에 생성됩니다.
$MCCS_HOME/support-$HOSTNAME/$HOSTNAME.zip
만약 이미 서포트 파일이 존재한다면 새로운 파일이 기존의 파일을 덮어쓰게 되므로 수집전에 주의 하시기 바랍니다.