DevOps/AWS

AWS Elastic Load Balancing 이해하고 사용하기 #2

킵고잉 개발자 2022. 5. 17. 22:52

이전 글에서는 Elastic Load Balancing 이해하기 위한 기본 개념을 다뤘습니다.

 

AWS Elastic Load Balancing 이해하고 사용하기 #1

이번 글에서는 Elastic Load Balancing 이해하기 위한 기본 개념을 다룹니다. 다음 편에서는 Elastic Load Balancing를 실제로 사용해보고 테스트해볼 것입니다. 이번 글의 목차는 다음과 같습니다. ELB란 무

develop-writing.tistory.com

이번에는 Elastic Load Balancing를 실제로 사용할 것입니다.

 

이번 글의 목차는 다음과 같습니다.

  • 2개의 다른 가용 영역에 웹서버 생성하기
  • Application LoadBalancer를 적용해 트래픽이 분산되는지 확인
  • Sticky Session 확인

 2개의 다른 가용영역에 웹서버 생성하기

순서는 다음과 같습니다.

  • 2대의 인스턴스의 경우 각각 Amazon Linux에 아파치 웹서버를 생성할 것입니다.
  • 첫 번째 인스턴스를 Amazon Linux + Apache 웹서버 환경으로 만들고 이를 AMI로 만들 것입니다.
  • 두 번째 인스턴스의 경우 이전에 만든 AMI를 통해 쉽게 생성합니다.

 

첫 번째 인스턴스를 생성합니다. 다음 순서로 인스턴스를 생성하면 됩니다.

  • 이름은 'instanceA'
  • AMI는 아마존 리눅스
  • 네트워크 탭에서 가용 영역이 a인 서브넷을 선택해줍니다.
  • 보안 그룹에 80 포트를 허용

 

이제 연결을 통해 아파치 웹서버를 설치합니다.

다음으로는 index.html 문서를 만들고 간단한 텍스트를 넣어줍니다.

sudo yum update -y

# Apache 웹서버 설치 및 실행
sudo yum install httpd -y
sudo services httpd start
# Apache 웹 서버가 매번 시스템이 부팅할 때마다 시작되도록 합니다.
sudo chkconfig httpd on 

# 문서 생성 
sudo vi /var/www/html/index.html
# 문서에 입력할 내용
this is instanceA

 

아파치 웹서버 설치하고 문서를 만듭니다. 퍼블릭 도메인으로 접근하면 저희가 만든 문서가 보일 겁니다.

 

지금 만든 인스턴스를 이것을 AMI로 만들겠습니다. 

EC2 콘솔에서 인스턴스 우측 버튼 클릭 > 이미지 > 이미지 생성을 클릭합니다.

 

 

다음과 같이 'apache-amazon-linux' 이름을 명시하고 이미지를 생성합니다.

 

이미지 생성될 때까지 기다리고 상태가 available(이용 가능한)이 되면 '시작하기'를 통해 인스턴스를 생성합니다.

 

두 번째 인스턴스 만들 때는 네트워크 설정에서 서브넷 가용 영역을 c로 선택합니다.

 

 

두 번째 인스턴스 생성을 완료하면 다음과 같이

가용 영역이 ap-northeast-2a, ap-northeast-2c에 각각 인스턴스를 1개씩 생성된 것을 확인할 수 있습니다.

 

C인스턴스에 접속해 문서 내용을 수정해주고 마찬가지로 잘 수정이 됐는지 퍼블릭 도메인으로 확인합니다.

# 문서 수정
sudo vi /var/www/html/index.html 
# 문서에 입력할 내용
this is instanceC

지금까지 다른 가용 영역에 웹서버 역할을 하는 2개의 인스턴스를 만들었습니다.

 

Application LoadBalancer를 적용해 트래픽이 분산되는지 확인

먼저 ELB를 만들기 위해 왼쪽 탭에서 로드밸런서를 클릭합니다.

로드밸런서 생성 > Application LoadBalancer 클릭합니다.

  • 이름은 test-elb
  • scheme은 internet-facing
  • ip adress type은 ipv4
  • listener port는 80
  • 가용 영역은 a하나 c하나로 설정합니다.

 

 

라우팅 구성 화면은 다음과 같이 입력합니다.

  • 대상 그룹 이름은 routing-group-test
  • 대상 유형은 인스턴스
  • 헬스체크 경로는 /index.html 

헬스체크 설정은 기본값으로 합니다.

이전에 생성한 두 개의 인스턴스를 추가합니다.

 

대상 등록 설정에서 이전에 생성한 인스턴스를 항목에 추가해줍니다.

로드밸런서가 생성이 되고 활성 상태가 되면 ELB DSN 이름을 통해 인스턴스 2개에 접근할 수 있습니다.

다음 사진처럼 같은 URL을 반복적으로 요청하면 Application LoadBalancer가 트래픽을 인스턴스들에게 분산해서 다른 문서를 불러오는 것을 확인할 수 있습니다.

 

Sticky Session 확인

다음으로 ELB의 기능인 Sticky Session을 활성화해보겠습니다.

대상 그룹 > 속성 > 속성 편집 화면에서 고정을 활성화하고 고정 시간을 10초로 설정하면 Sticky 세션을 위한 설정이 끝났습니다.

 

 

다시 ELB로 반복적으로 요청하면 이번엔 같은 인스턴스에서 문서를 받아오는 것을 확인할 수 있습니다.

ELB 인스턴스가 클라이언트 별로 쿠키를 발급해 세션을 유지하는 것입니다.

10초 뒤에 다시 요청하면 문서가 바뀝니다.

 

이상으로 'AWS Elastic Load Balancing 이해하고 사용하기' 실습 편까지 마무리하겠습니다.

감사합니다.