5. Multi-Server 패턴





출처 : http://en.clouddesignpattern.org/index.php/CDP:Multi-Server_Pattern


해결하고자 하는 과제


가용성을 높이는 방법은 레이어(계층)마다 다양함. 

예) 디스크 레이어는 RAID를 구축하고, 네트워크 레이어는 예비 회선을 준비함.

서버 역시 이중화를 위해 여러 대의 물리적 서버를 준비하는 방법이 있음.

그러나 단순히 서버를 늘리는 것만으로 이중화 구성을 구축 할 수있는 것은 아님.

서버 장비 및 로드밸런서 등 중복에 필요한 장비를 준비하는 것은 상당한 비용이 듬.



클라우드에서 과제 해결 / 패턴 설명


가상 서버 여러 대를 배치하고 클라우드 서비스로 제공되는 로드밸런서로 부하를 배분함.

이전엔 로드밸런서 자체가 비싼 장비여서 구입 및 유지보수 비용이 필요했지만 클라우드에서 로드밸런서는 종량제 방식으로 이용할 수 있음.

또한 단일 처리 성능이 높은 서버 대신 이중화를 고려하여 처리 능력이 조금 낮은 서버를 복수 배치하는 구성으로 전환하기 쉬움.



구현


AWS의 로드밸런서 = "ELB"

EC2에 대한 처리 요구를 ELB가 일단 받고 ELB에 붙어있는 EC2에 적절히 처리를 배분.

ELB는 상태 점검 기능이 있어, 제대로 작동하는 EC2에 처리를 배분함. 따라서 하나의 EC2에 장애가 발생해도 나머지 EC2를 사용하여 처리를 계속 할 수 있음.

(절차)

  • EC2 인스턴스를 시작하고 OS 등을 설정
  • Stamp 패턴을 적용하고 EC2 인스턴스를 여러대 가동
  • ELB를 시작하고 여러 EC2 인스턴스를 붙임
  • 헬스 체크 기능을 이용하여 붙인 EC2 인스턴스의 상태 확인을 수행하도록 설정


장점


  • 특정 EC2 인스턴스에 장애가 발생해도 전체 시스템은 가동을 계속 할 수 있음
  • ELB와 Auto Scaling을 함께 사용하면 장애가 발생해도 일정 수의 가상 서버를 가동시킬 수 있음
    예) 최소 3개는 가동하는 설정을 하면 하나의 가상 서버에 장애가 발생해도 자동으로 가상 서버가 추가되어 항상 3대를 유지하게됨. 이 경우 사전에 적절한 AMI를 지정하고 AMI에서 EC2를 시작하도록 지정해 둘 필요가 있음


주의 사항


  • ELB는 여러대의 EC2 인스턴스를 이용하기 때문에 단일 구성보다 비용이 많이 듬
  • 미들웨어 수준이나 애플리케이션 수준에 공유할 데이터가 있을 때는 주의해야 함.
    예) 세션 정보는 여러 EC2 인스턴스 사이에서 공유할 필요가 있기 때문에, 세션 DB를 이용한 세션 공유나 StickeySession을 사용할 필요가 있음
  • 항상 N + 1(1대의 예비 서버 준비) 구성한다. 예) 처리 능력으로 가상 서버가 3대 필요하다면 하나가 다운되어도 구동 할 수있도록 4대 구성한다.
  • 데이터베이스를 이중화하는 경우 데이터 동기화 문제가 있다. DB Replication 패턴을 참조.
  • VPC도 인터널 ELB를 사용할 수 있기 때문에 VPC의 트래픽을 여러 서버에 분산하여 가용성을 높일 수 있음



기타


  • Multi-Server 패턴은 항상 이중 구성을 유지함으로 가용성을 높이고 있지만, Floating IP 패턴을 이용하여 재해 복구를 빠르게 하는 방법도 있다.
  • 가용성을 높이는 패턴으로 Multi-Datacenter 패턴을 참조 할 것


'블로그 > AWS CDP(아마존웹서비스 클라우드디자인패턴)' 카테고리의 다른 글

7. Floating IP 패턴  (0) 2015.03.05
6. Multi-Datacenter 패턴  (0) 2015.03.04
5. Multi-Server 패턴  (0) 2015.03.03
4. Ondemand Disk 패턴  (0) 2015.03.01
2. Stamp 패턴  (0) 2015.03.01
1. Snapshot 패턴  (0) 2015.03.01
비밀글