본문 바로가기

AWS Design Pattern/가용성 향상 패턴

Multi-Server 패턴 - 서버 이중화

ㅁ  풀어야 할 문제

가용성을 높이기 위해 서버 내의 디스크 Raid를 구축하며, 네트워크 계층은 이중화 회선을 준비한다.

서버 역시, 이중화를 위해 여러 대의 물리 서버를 준비하는 방법이 있으며 이를 위해 서버 장비뿐 만 아니라 로드 밸런서 등 이중화에 필요한 기기 준비가 필요하다.

 

ㅁ  해결/패턴

가상 서버 여러 대를 배치하고 클라우드 서비스로 제공되는 로드 밸런서를 이용해 적절히 부하를 분산(로드 밸런서)한다. 이 것을 Multi-Server라고 하며 OnPremise에서도 가능하며 많이 사용하지만 클라우드에서는 훨씬 환경을 구성하기 용이하다.

 

ㅁ  구현                                                                       

AWS의 로드 밸런스 서비스 [ELB]를 이용하여 EC2의 처리 요청을 일단 ELB에서 받고 ELB에 연결된 EC2에 적절히 처리를 분배

ELB에는 상태 확인 기능(EC2가 정상적으로 가동중인지를 확인하는 기능)이 있어 정상이 아닌 EC2에는 처리를 할당하지 않음

-       EC2 인스턴스를 만들고 OS 등을 설정

-       Stamp 패턴을 활용해 EC2 인스턴스를 여러 대 기동

-       ELB를 가동하고 여러 대의 Ec2 인스턴스를 할당

-       상태 확인 기능을 이용하여 할당한 Ec2 인스턴스의 상태를 확인하도록 설정

 

ㅁ  장점

특정 EC2 인스턴스에 장애가 일어나도 전체 시스템은 계속 가동 가능

ELB와 오토 스케일링(Auto Scaling)을 같이 사용하면 장애가 일어나도 일정 수의 가상 서버(EC2 인스턴스)를 가동 시킬 수 있음

 

ㅁ  주의점

-       ELB와 여러 EC2를 이용하므로 단일 구성보다 비용이 추가 발생함

-       미들웨어 레벨이나 애플리케이션 레벨에 공유할 데이터가 있을 때는 주의해야 함

-       세션 정보는 여러 대의 EC2 간에 공유해야 해서 세션 DB를 이용한 세션 공유나 StickeySession을 이용해야 함 (State Sharing 패턴 참조)

-       항상 N+1 구성(예비 서버 한 대를 준비)으로 함. 예를 들어, 처리 능력으로 가상 서버 세대가 필요하다면 한대가 정지되어도 가능하도록 4대로 구성

-       데이터베이스를 이중화 할 때는 데이터 동기화 문제가 있을 수 있다. (DB Replication 패턴 참조)