안정성 (고가용성)
시스템 서비스가 가능한 한 멈추지 않도록 하는 것
안정성 및 고가용성의 목표와 실현 수단
목표 실현 수단
- 고장 장애가 발생하지 않을 것
- (MTBF, 평균 장애 지속 시간)
- 고장, 장애가 발생해도 복구할 수 있을 것 ———————> 컴포넌트 이중화
- (MTTR, 평균 복수 시간)
- 고장, 장애가 발생한 것을 검출할 수 있을 것 ———————> 컴포넌트 감시
- 고장, 장애가 발생해도 데이터가 보호될 것 ———————> 데이터 백업
위와 같이 상용 웹 시스템에서는 미들웨어 기능이나 구조로 이중화, 감시, 백업의 세가지 수단을 구현해서 안정성 및 고가용성의 목표를 실현하고 있다.
이중화
하나의 기능을 병렬로 여러 개 나열해서 하나에 장애가 발생해도 다른 것을 이용해서 서비스를 계속할 수 있는 것
하나의 기능을 병렬로 가동 ——> 안정성(고가용성) + 확장성 + 부하 분산
이중화에 필요한 구조
- 부하분산 : 요청을 여러 컴포넌트로 분산하는 기능
- 내부적 생존 감시 : 컴포넌트들의 생존 여부를 감시하는 기능
- 페일오버 : 장애 발생 시 예비 컴포넌트로 자동 전환하는 기능
서버 내 이중화
- 서버 내부 컴포넌트에서는 전원(랙 뒤쪽의 양끝), 팬 등이 이중화되어있어 이들 중 하나가 망가져도 서버가정상 가동하도록 설계되어있다.
- 대규모 데이터 센터에서는 각 전원 탭이 별도 분전반이나 UPS에 접속돼 있어서 전원 장애에 대비하고 있다.
네트워크 인터페이스 이중화
네트워크 인터페이스가 여러 개 있으면 이중화 소프트웨어나 기능을 이용해서 가용성과 성능을 향상시킬 수 있다.
하드웨어 또는 os로 구현한다.
- 액티브-스탠바이(액티브 백업): 액티브 측에 문제가 발생하면 스탠바이 장비로 교체 (페일 오버)
인터페이스를 감시하는 방식 2가지
- MII 감시 - 폴링 패킷이 전송되지 않음, IP 주소를 가진 장비에 대해서는 유지관리나 장애를 의식하지 않아도 된다.
- ARP 감시 - 정기적으로 실행해서 응답이 있으면 정상이라고 판단, mac주소를 확인하는 브로드캐스트(동일 네트워크 내의 모든 주소에 패킷을 전송하는 것)이다. 하지만 ARP 요청이 동일 네트워크 내의 브로드캐스트이기 때문에 불필요한 트래픽이 증가한다.
저장소 이중화
- 저장소 이중화의 주요 대상은 HDD
SAN: Storage Area Network
SAN 방식은 여러 스토리지를 하나의 네트워크에 연결시키고, 이 네트워크에 서버를 연결해 스토리지에 접속한다는 개념입니다. 네트워크에 묶인 스토리지들은 가상으로 중앙화된 논리 볼륨(RAID)을 형성하고, 필요에 따라 각 서버에 공간을 논리적으로 할당할 수 있다.

SAS : HDD 간의 연결하는 내부 버스 규격 중 하나
시리얼 부착 SCSI(Serial Attached SCSI, SAS)는 하드 드라이브와 테이프 드라이브처럼 컴퓨터 기억 장치로 데이터를 송수신할 수 있는 점대점 직렬 프로토콜
RAID
여러 HDD를 묶어서 그룹으로 만들고 이것을 논리적인 HDD로 인식하는 기술
장점
- 안정성 확보
RAID에서는 HDD에 장애가 발생해도 데이터가 손실되지 않도록 데이터 기록을 이중화 한다.
- 성능 향상
RAID 컨트롤러가 미리 정해 놓은 길이로 I/O를 분할해서 복수의 HDD에 대해 병렬로 I/O 처리를 한다. —> 여러 개의 HDD를 병렬로 동시에 동작 —> 하나의 HDD를 동작시킬때보다 성능 빠름
- 용량 확장
물리적인 HDD는 1TB, 2TB 등으로 한정되어 있는데 RAID를 이용해 가상 볼륨을 만들어 10TB인 논리적인 HDD를 만들 수 있다.
RAID 구성 패턴
RAID5

- RAID5는 이중화 확보를 위해 패리티라는 오류 수정 부호를 기록한다.
- 패리티를 하나의 HDD에 집중시키지 않고 분산하는 것이 특징
RAID1

raid1 - os디스크 이중화에 사용

RAID0 - 이중화 없이 HDD에 기록하는 방식

RAID10 - 복수의 hdd에 병렬로 이중기록을 하는 방식
성능 차이
RAID5 - 패리티 연산이 이루어지기 때문에 느림, 용량이 큼
RAID10 - 미러링을 사용하기 때문에 용량이 절반, 빠름
장애가 발생할 경우
핫 스페어 라고 하는 디스크 사용
핫 스페어
hdd가 고장 나면 자동적으로 가 RAID에 포함돼서 이중화 구조를 회복
데이터가 손실이 발생할 수 있기 때문에 주의 필요, 백업 필수
버스 이중화
서버와 저장소 사이에 있는 버스 이중화
Red Hat Enterprise Linux의 DM-Multipath
- 버스 이중화 기능이 I/O 요청을 할당한다.
웹 서버 이중화
웹 서버내의 서버 내 이중화
아파치는 요청 접수 시 프로세스 또는 스레드를 선택할 수 있다. (최근 웹서버는 스레드가 주류)
아파치는 프로세스쪽이든 스레드쪽이든 미리 여러개를 가동시켜 두어서 클라이언트 요청에 빠르게 대응할 수 있는 구성을 가진다. —> 프로세스/스레드 중 하나에 장애가 발생해도 다른 프로세스/스레드가 가동되어 있기 대문에 안정성이 보장된다.

웹 서버는 이와 같이 http 장애가 발생했을 경우 요청을 큐에 쌓지 않고 바로 반환한다는 특징이 있다.
서버 이중화
라운드 로빈
- DNS를 이용해서 하나의 호스트명에 대해 복수의 ip주소를 반환하는 것이다.

주의사항
- 서버 상태를 파악하지 않기 때문에 서버가 정지된 경우에도 서버의 주소를 반환한다.
- 세션 상태를 파악하지 않기 때문에 다음 접속 시에 동일 서버에 접속해야 하는 경우에도 부적합
부하분산 장치를 이용한 웹서버 이중화(로드 밸런서)

- 부하분산 장치가 이전에 웹서버에 요청을 했는지 쿠키에 저장하고 있음
- http헤더에 포함시켜 같은 서버에 요청을 할당
→ 세션 상태 저장 가능 (퍼시스턴스 persistence) 기능
| 소스 ip주소 | 클라이언트 ip주소를 기반으로 요청을 할당할 웹 서버를 결정 |
| 쿠키 | http 헤더 내에 접속한 웹서버 정보를 저장 |
| ur | URL 구조 내에 접속한 웹 서버 정보를 저장 ex) http://server.com?session=sdf |
주의사항
- 출발지 ip주소를 이용한 퍼시스턴스는 프록시를 경유하면 프록시 서버의 ip주소가 클라이언트 ip주소가 돼서 요청이 한쪽으로 몰릴 수도 있음
- URL일 경우 직접 편집이 가능해서 부정접속 가능
'책 > 그림으로 공부하는 IT인프라 구조' 카테고리의 다른 글
| 성능 향상을 위한 인프라 구조 (0) | 2021.10.17 |
|---|---|
| 무정지를 위한 인프라 구조(2) (0) | 2021.10.10 |
| 시스템을 연결하는 네트워크 구조 (0) | 2021.10.07 |
| 인프라를 지탱하는 기본 이론 - 직렬과 병렬, 동기와 비동기 (0) | 2021.10.05 |
| 3계층형 시스템 (0) | 2021.09.27 |