ㅁ 풀어야 할 문제
가용성을 높이기 위해 서버 내의 디스크 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 패턴 참조)
'AWS Design Pattern > 가용성 향상 패턴' 카테고리의 다른 글
Multi-DataCenter 패턴 - 데이터 센터 레벨의 이중화 (0) | 2021.02.05 |
---|