반응형
1. 안정성 및 이중화
안정성
- 고가용성이라고도 함.
- 시스템 서비스가 가능한 멈추지 않도록 하는 것.
안정성 및 고가용성의 목표
- 고장, 장애에 의한 정지가 발생하지 않을 것 ⇒ 컴포넌트 이중화
- 고장, 장애가 발생해도 복구할 수 있을 것 ⇒ 컴포넌트 이중화
- 고장, 장애가 발생한 것을 검출할 수 있을 것 ⇒ 컴포넌트 감시
- 고장, 장애가 발생해도 데이터가 보호될 것 ⇒ 데이터 백업
상용 웹 시스템에서는 미들웨어 기능이나 구조로 이중화, 감시, 백업의 세 가지 수단을 구현해서 목표를 실현하고 있다.
이중화
하나의 기능을 병렬로 여러 개 나열해서 하나에 장애가 발생해도 다른 것을 이용해서 서비스를 계속할 수 있는 것.
하나의 기능이 병렬로 가동되기 때문에 고가용성에 대한 의미뿐만 아니라 확장성이나 부하 분산 같은 성능에 대한 의미도 가진다.
이중화 구조
- 부하 분산
- 내부적 생존 감시
- 마스터 결정
- 페일오버
2. 서버 내 이중화
페일 오버
- 액티브 측에 어떤 문제가 발생하면 스탠바이 장비로 교체돼서 스탠바이가 액티브로 변경된다.
2-1. 저장소 이중화
RAID
- 여러 HDD를 묶어서 그룹으로 만들고 이것을 논리적인 HDD로 인식하는 기술.
- 논리적 HDD를 LU(Local Unit)이라고 한다.
RAID의 장점
안정성 확보
- HDD에 장애가 발생해도 데이터가 손실되지 않도록 데이터 기록을 이중화한다.
성능 향상
- RAID에서는 RAID 컨트롤러가 미리 정해 놓은 길이로 I/O를 분할해서 복수의 HDD에 대해 병렬로 I/O 처리를 한다.
- 참고로, 이 고정 길이를 RAID의 스트라이프 크기라고 부른다.
용량 확장
- 논리 HDD는 HDD의 물리적 한계 (용량적)를 넘어서 자유롭게 용량을 결정할 수 있다.
RAID 구성 패턴
RAID 5
- 이중화 확보를 위해 패리티라는 오류 수정 부호를 기록한다.
- 패리티를 하나의 HDD에 집중시키지 않고 분산하는 것이 특징이다.
RAID 1
- 일반적으로 OS 디스크 이중화에 사용됨.
RAID 10
- RAID 0 + RAID 1
- 복수의 HDD에 병렬로 이중 기록을 하는 방식.
RAID 0
- 이중화 없이 HDD에 기록하는 방식.
RAID 5 vs RAID 10 비교
- RAID 5: 패리티 연산이 이루어지기 때문에 I/O 성능이 RAID 10에 비해 느림.
- RAID 10: 미러링을 하기 때문에, HDD 전체 용량의 1/2 용량밖에 사용할 수 없다. (용량을 중시하는 경우 RAID 5를 사용하는 것이 좋다)
RAID 구성 시의 장애 복구 과정
- HDD가 고장 나면 RAID 구성에 포함된 데이터는 망가지지 않지만, 이중화 구조가 망가진다.
- 이 이중화 회복을 위해 핫 스페어라고 하는 디스크를 이용한다.
- 한 대의 HDD가 고장 나면 자동적으로 핫 스페어가 RAID에 포함돼서 이중화 구조를 회복한다.
RAID의 한계
- RAID를 이용해서 이중화를 하더라도 다중 장애 시에는 복구할 수 없는 경우가 있다.
- 이러한 이유로 데이터 백업도 반드시 해 두어야 한다.
2-2. 웹 서버 이중화
DNS를 이용한 웹 서버 이중화
DNS를 이용해서 하나의 호스트명에 복수의 IP 주소를 반환하는 것
- DNS 라운드 로빈
- 호스트명에 대해 복수의 IP 주소를 등록해 두는 것. (DNS는 질의에 대해 순서대로 IP 주소를 반환)
주의사항
- DNS가 서버 상태를 감시해서 파악하지 않기 때문에 서버가 정지된 경우에도 그 서버의 주소를 반환한다. (이러한 이유로 가용성을 중시하는 경우에는 부적합)
- DNS가 세션 상태를 파악하지 않기 때문에 다음 접속 시에 동일 서버에 접속해야 하는 경우에도 부적합. (웹 서버에 동적 콘텐츠가 있어서 세션 상태를 저장하고 있어야 하는 경우는 DNS 라운드 로빈 방식은 부적합)
부하분산 장치를 이용한 웹 서버 이중화
- 부하 분산 장치 (로드 밸런서)
- 부하 분산 장치는 웹 서버의 가동 상태를 감시할 수 있다.
- 장애를 감지한 경우는 클라이언트 요청을 동적으로 다른 서버에 할당할 수 있다. (페일오버)
한계
- 정적 콘텐츠라면 클라이언트는 아무것도 의식하지 않아도 된다, 하지만 동적 콘텐츠라면 페일오버와 세션 정보가 사라지기 때문에 세션 상태가 초기화된다.
2-3. AP 서버 이중화
웹 서버와 같이 부하분산 장치를 이용하는 방법
웹 서버와 같이 부하분산 장치를 이용하거나 AP 서버가 가진 웹 서버 요청 이중화 기능을 이용해서 AP 서버 요청을 분산시키는 방법
- 웹 서버와 같은 구조
세션 정보 이중화
- 애플리케이션을 실행하는 API 서버에서는 세션 정보 이중화 기능을 갖추고 있다.
- (대부분 세션을 애플리케이션 서버 내부가 아닌, 별도의 데이터 저장소를 사용함으로 생략)
2-4. DB 서버 이중화
서버 이중화 (액티브-스탠바이)
클러스터 소프트웨어는 등록된 서비스가 정상 동작하고 있는지 정기적으로 확인해서, 이상이 발생하면 서비스를 정지하고 대기하고 있던 스탠바이 측 서비스를 시작해서 서비스를 유지시킨다.
HA (High Availability, 고가용성) 구성
- 클러스터의 노드나 서비스 관계는 마스터-워커 개념을 기반으로 하고 있다.
- 서버가 정상 동작하는지 확인하기 위한 구조로 하트비트나 투표 장치 같은 기능이 존재.
클러스터 구성용 서비스
- 클러스터 소프트웨어를 이용하는 액티브-스탠바이 구성은 서비스를 병렬로 실행할 수 없고 데이터 일관성을 중시하는 서비스/시스템에 적합하다. (예로 데이터베이스, 파일 서버, 잡 관리 시스템)
- 따라서 데이터 갱신이 거의 없어서 데이터 일관성이 중시되지 않고, 서비스 병렬 실행이 가능한 웹 서버나 AP 서버에서는 클러스터 소프트웨어를 사용하지 않는다.
서버 이중화 (액티브-액티브)
Shared Everything
- 디스크, 데이터를 모든 노드가 공유한다.
- 장애가 발생하도 다른 노드로 쉽게 처리를 계속할 수 있다.
Shared Nothing
- 각 노드별로 디스크를 가지고 있어서 데이터가 분산된다.
- 노드를 배치하기 쉽다.
3. 감시
시스템 컴포넌트가 정상 동작하는지 확인하는 기능.
종류
- 생존 감시
- 로그 (에러) 감시
- 성능 감시
3-1. 생존 감시
- ping 명령을 정기적으로 실행해서 서버 인터페이스에 대한 통신을 확인하는 감시
- ping 감시는 가능한 모든 장비에 설정할 것을 권장한다.
3-2. 로그 감시
- OS나 미들웨어가 출력하는 로그 파일에는 시스템 유지를 위한 중요 정보가 포함돼 있다.
- 미들웨어 오류나 영역 고갈 등 생존 감시로는 알 수 없는 정보가 로그 파일로 출력된다.
- 또한 장애 원인 분석에도 도움이 된다.
3-3. 성능 감시
- 디스크 사용률이나 메모리 사용 현황, 디스크 고갈 등의 리소스 상태 파악과 네트워크 액세스 지연, 디스크 액세스 시간 등의 응답 시간을 파악하는 것.
4. 백업
- 데이터를 복제해서 별도 장소에 보관하는 것.
- 복원이나 복구를 이용해서 데이터를 원래 장소로 되돌리는 과정이 필요하다.
복구 지표
RTO (Recovery Time Objective): 복구 목표 시간
- 복구에 어느 정도 시간이 걸리나?
RPO (Recovery Point Objective): 복구 기준 시점
- 어느 시점을 복구할 것인가?
시스템 백업
- OS나 미들웨어 등 일반 서버의 로컬 디스크 영역을 백업하는 것.
데이터 백업
- 데이터베이스 백업은 데이터 자체와 데이터 갱신 내용이 기록돼 있는 저널을 모두 취득하도록 하고 있다.
- 데이터베이스가 망가진 경우라면 일관성 있는 데이터와 저널 로그 양쪽을 복원한다.
- 일관성 있는 데이터에 대해 저널 로그를 바탕으로 다시 트랜잭션을 실행해서 복구한다.
- 또한, 백업되지 않은 저널 로그가 장애 발생 직전까지 존재한다면 최신 데이터로 복구할 수 있다.
반응형
'공통 > 인프라 & 시스템 설계' 카테고리의 다른 글
RAID 정리 (RAID 개념 및 종류) (1) | 2021.05.27 |
---|---|
[그림으로 공부하는 IT인프라 구조] 8장 정리 (0) | 2021.05.21 |
[그림으로 공부하는 IT인프라 구조] 6장 정리 (0) | 2021.05.18 |
[그림으로 공부하는 IT인프라 구조] 5장 정리 (0) | 2021.05.17 |
[그림으로 공부하는 IT인프라 구조] 4장 정리 (0) | 2021.05.16 |