You are a developer, not a coder.

ELB를 이용하여 웹 서버 다중화 본문

AWS

ELB를 이용하여 웹 서버 다중화

Mattmk 2020. 5. 11. 14:39
SMALL

1. 목적

하나씩 수작업으로 설정하면 시간이 걸린다. 가상 서버 템플릿인 AMI를 이용하여 가상 서버 여러 대를 한꺼번에 셋업하자.

규모가 큰 시스템을 구축하는 경우나 같은 환경을 반복해서 사용하는 경우에 작업을 간소화할 수 있다.

ELB가 웹 서버의 부하를 감시하여 부하가 낮은 웹 서버로 요청을 분산시키는데에 목적을 둔다.

 

AMI를 사용한 EC2 인스턴스 복제

2. 구성

  • 필요한 수의 웹서버를 만든 후에 ELB와 연계한 다중화 구성을 설정
  • ELB를 웹 트래픽의 입구로 사용하여 트래픽이 복수의 웹 서버에 분산되도록 한다
  • 인터넷 접속 End Point를 ELB로 지정
  • ELB는 IP 주소가 아닌 CNAME(대체 도메인 이름)을 지정하여 접속 (ELB의 IP주소는 고정이 아니라 계속 변하기 때문)
  • DNS 서버인 Route 53을 이용하여 ELB의 CNAME과 사용할 도메인 이름을 연결 (이러한 설정에 의해 최종 사용자는 도메인 이름을 통해 ELB에 접속할 수 있게됨)
  • ELB와 웹 서버의 EC2 인스턴스를 연결

3. ELB설정시 유의사항

ELB용과 웹 서버용으로 각각 다른 보안 그룹을 마련

ELB는 인터넷 어디에서라도 HTTP와 HTTPS 접속을 허용하도록 설정되어 있다.

웹서버는 ELB로부터의 HTTP 요청만을 받아들이도록 트래픽 소스를 ELB가 속한 보안 그룹으로 한정한다.

서브넷으로 설정하는 것은 ELB의 IP 주소가 바뀔 가능성이 있기 때문이다.

 

ELB의 설정 예시 및 요청 사항

 

세션 유지 기능의 유무

세션 정보를 웹 서버 간에 공유하는 구조를 마련하지 않으면 동일한 클라이언트 접속을 항상 같은 웹 서버에 유지시켜야 한다. ELB는 ELB 자신이 작성하는 쿠키 정보를 바탕으로 동일한 서버로 접속을 유지시키는 세션 유지 기능을 제공한다.

매니지먼트 콘솔에서 설정할 수 있다.

 

HTTPS 처리

HTTPS 통신은 클라이언트와 서버 간의 통신을 암호화 한다.

ELB는 SSL 인증서 확인 및 암호화/복호화 처리 기능을 제공한다.

ELB 리스너 설정에서 로드밸런서 프로토콜을 HTTPS로, 인스턴스의 프로토콜을 HTTP로 하면 자동적으로 적용된다.

이렇게 구상하면, 웹 서버별로 SSL 증명서를 관리할 필요가 없어질 뿐만 아니라 SSL 복호화 처리에 걸리는 부하가 줄어들어 EC2 인스턴스의 비용을 줄일수 있다.

 

헬스 체크 설정 (웹 서버가 정상적으로 동작하는지 유무 판단)

기본 설정에서는 간격이 30초, 타임아웃이 5초, 비정상 상한치가 2회 이다.

웹 서버에 장애가 발생하면 40초에서 70초 만에 감지하여 해당 서버를 분리한다.

너무 짧으면 웹 서버의 부하가 높아져 응답이 저하되는 상태를 고장으로 오판하여 서버를 분리하고 만다.

반대로 너무 길면 오류가 발생하는 웹 서버에 요청 배분을 계속 발생시킨다.

일반적으로 기본 설정값으로 충분하지만, 성능 시험이나 운영 시에 검출 오작동이 발생한다면 수치를 조정해야 한다.

 

응답시간에 따른 타임아웃 설정

웹 서버에 분산시킨 후 일정시간 응답이 없으면, ELB는 웹 서버와의 접속을 절단하고, 클라이언트에 HTTP 504를 반환한다. 타임아웃 시간은 접속 설정의 타임아웃으로 설정하며, 초기 설정값은 60초이다.

DB 처리 등으로 시간이 오래 걸리더라도 결과를 반환하고 싶은 경우에는 시간을 길게 설정한다.

LIST
Comments