책/그림으로 공부하는 IT인프라 구조

무정지를 위한 인프라 구조(1)

ballde 2021. 10. 8. 09:31

안정성 (고가용성)

시스템 서비스가 가능한 한 멈추지 않도록 하는 것

안정성 및 고가용성의 목표와 실현 수단

목표 실현 수단

  • 고장 장애가 발생하지 않을 것
  • (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로 인식하는 기술

장점

  1. 안정성 확보

RAID에서는 HDD에 장애가 발생해도 데이터가 손실되지 않도록 데이터 기록을 이중화 한다.

  1. 성능 향상

RAID 컨트롤러가 미리 정해 놓은 길이로 I/O를 분할해서 복수의 HDD에 대해 병렬로 I/O 처리를 한다. —> 여러 개의 HDD를 병렬로 동시에 동작 —> 하나의 HDD를 동작시킬때보다 성능 빠름

  1. 용량 확장

물리적인 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일 경우 직접 편집이 가능해서 부정접속 가능