본문 바로가기

AWS

[AWS] 7. ELB

ELB



Elastic Load Balancing(ELB)은 여러대의 EC2를 묶어서 사용하기 위한 서비스이다. 현업에서는 EC2 한대 만으로 서버를 구성하지 않고 여러대로 구성을 하는데 이때 트래픽(Load)를 분산(Balancing)해주는 역할을 한다.


EC2앞에 ELB를 연결하여 사용한다. 원래는 도메인에 EC2 인스턴스의 IP를 연결하는데, 이렇게 되면 도메인에 ELB의 엔드 포인트를 연결하여 트래픽에 따라 EC2의 성능과 개수를 실시간을 대응할 수 있다.


1. ELB 만들기


조금 복잡하다. 차근차근 잘 진행해보자


먼저 좌측 상단의



이녀석을



이렇게 해제하고 진행하면 스파르타의 강의와 같은 버전으로 진행할 수 있다.


우선 다음과 같이 접속하자.


EC2에 접속 > 로드밸런서 > Load Balancer 생성 > Application Load Balancer 생성


1. Load Balancer 구성

기본구성은 이름, 체계, ip 주소 유형이 있다.


  1. 이름은 규칙대로 정하면 된다.
  2. 체계에서 인터넷 경계는 외부의 접근을 허용한다라는 것을 나타내고, 내부는 외부와 상관없이 내부 서비스들 끼리 사용하겠다는 것이다. 외부에 체크해주자.
  3. 마지막으로 IP 주소 유형은 ipv4를 유지하시면 된다.

리스너는 구성한 프로토콜 및 포트를 사용하여 연결 요청을 확인하는 프로세스이다. 그러니까 LB에 접근할 때 HTTP로 들어온 요청에 응답할 것인지, HTTPS로 들어온 요청에 응답할 것인지 선택하는 것이라고 보면 된다. 물론 HTTPS가 더 좋지만 머리가 많이 아프니 HTTP로 선택하자. (이걸 잘 기억해 두자. 나중에 프론트와 연결할 때 필요하다.)


가용 영역이다. VPC는 이전에 언급한 default VPC를 선택하면 된다. 가용영역이 좀 어려운데, Zone을 선택하는 것이다. northeast의 a,b,c,d 네개의 Zone이 있는데 보통 a,c나 b,d이렇게 두개를 크로스해서 선택한다고 한다. a,c를 선택하자. 이렇게 설정하면, 하나의 Zone에 문제가 생겼다면, 다른 Zone의 EC2에 failover할 수 있게 만드는 기능이다.


2. 보안 설정 구성

보안 설정 구성으로 넘어가면 HTTPS를 사용하라고 나오는데, 일단은 HTTP로 구성해보자.


3. 보안 그룹 구성

보안 그룹 구성으로 넘어가서 새 보안 그룹을 생성 해주자. 포트는 80, 소스는 0.0.0.0/0으로 설정하여, 외부의 어떤 대역이든 80포트로 접속이 가능하게 하자.


4. 라우팅 구성

다음은 라우팅 구성이다. 라우팅 구성은 ELB에서 EC2로 연결되는 부분에 대해 설정하는 부분이다.


먼저 대상그룹을 생성해야한다. ELB에 EC2 instance를 연결하기 위해서는 먼저 그룹을 만들어 두고, 그룹에 EC2 instance 추가하는 방식을 사용한다. 만약 어떤 대상그룹에 트래픽이 과도하게 몰리면, 대상그룹에 EC2 instance를 추가하고, 트래픽이 줄어들면 EC2 instance를 삭제하여 사용한다.



대상 유형에는 EC2를 대상으로 하기 때문에 instance를 선택한다. 우리가 만든 EC2에서 사용할 포트는 5000번이기 때문에 프로토콜은 HTTP, 포트는 5000을 선택해주자.


상태검사는 보통 헬스체크라고 하는데, 연결된 EC2 instance의 상태를 계속 검사해서
만약에 EC2에 문제가 있으면 해당 EC2에는 트래픽을 보내지 않게 한다.


5. 대상 등록

다음은 대상등록이다. 현재 생성된 인스턴스 중에 ELB와 연결할 대상을 선택하는 부분이다. 하단의 인스턴스에서 원하는 인스턴스를 선택하고 등록된 항목에 추가를 누르면 된다.


6. 검토

이제 검토를 한번 해준뒤 생성하면 된다.



LB의 상태가 "프로비저닝 중"에서 "활성"으로 넘어오면 정상작동


DNS를 주소창에 입력하면 EC2 인스턴스서버에 연결이 된다. AWS의 EC2에서 로드밸런싱의 대상그룹을 선택하여 상태를 확인할 수 있다.


지금은 EC2에 인스턴스가 하나이다. 인스턴스가 하나이면 ELB를 사용하는 의미가 없다. 우선 수동으로 추가하는 방법은 간단하다. 이전에 작업했던것처럼 EC2를 만들어서 수동으로 추가하면 된다. 대상그룹에서 인스턴스를 추가해주자.


2. 자동으로 EC2 추가하기


위와 같이 EC2를 수동으로 추가할거면, 내가 트래픽이 몰릴 때 마다 AWS에 접속하여 EC2를 추가해야하는데, 이건 너무 개발자스럽지 못하다. 자동으로 추가하는 방법을 배워보자. "이미지"를 만들면 된다.

1. AMI(Amazon Machine Image) 만들기

EC2를 자동생성 해서 추가되게 만들려면 우리가 EC2 인스턴스를 생성할 때 지정한 이미지처럼 베이스이미지가 필요하다. 내가 EC2에서 운영하고 있던 파일들을 그대로 이미지 한 부로 복사하여 갖다 쓰는 개념이다. 내가 추가하고자 하는 EC2의 디스크를 이용해 베이스이미지를 만드는 방법은 다음과 같다.


원하는 인스턴스 우클릭 > 이미지 > 이미지 생성 > 이름 입력 후 생성 > 좌측의 이미지 > AMI > 이미지 확인


2. Auto Scaling 시작구성 만들기

Auto Scaling은 말 그대로 자동으로 Scaling을 한다는 말이다. 내 서비스에 걸리는 로드를 처리하는 대 사용되는 정확한 수의 Amazon EC2 인스턴스를 유지할 수 있다. Auto Scaling 그룹에서 EC2 인스턴스 모음을 생성하고, 각 Auto Scaling 그룹에서 최대/최소 인스턴스 수를 지정할 수 있다.


좌측의 Auto Scaling > 시작구성 > 시작구성생성


  1. 이름 - 원하는 이름
  2. AMI - 나의 AMI (내가 만든 AMI 선택)
  3. 인스턴스 유형 선택 - t2.micro (1 vCPU, 1 GiB, EBS 전용)
  4. 보안그룹 - 기존 보안 그룹 선택, launch-wizard-1, 인스턴스 보안에서 확인
  5. 키페어 - 기존 키 페어

시작구성생성 클릭


3. Auto Scaling 그룹 만들기

좌측의 Auto Scaling > Auto Scaling 그룹 > Auto Scaling 그룹 생성

  1. 이름 - 아무거나
  2. 시작구성으로 변경, python-auto-scale 선택 후 다음 클릭
  3. vpc선택, 서브넷 a,c선택 후 다음 클릭
  4. 기존로드 밸런스에 연결, 내 ELB에 연결 후 다음 클릭
  5. 조정정책에 EC2가 늘어날 조건을 지정하는데 지금은 없음 하고 다음 클릭
  6. 알림, 태그 다음 다음하고 생성

좌측의 대상그룹에서 인스턴스 헬스체크 가능

'AWS' 카테고리의 다른 글

[AWS] 9. Github Actions를 통한 배포_back  (0) 2021.10.11
[AWS] 8. ElasticBeanstalk (EB)  (0) 2021.10.11
[AWS] 6. EC2  (0) 2021.10.11
[AWS] 5. Github Actions를 통한 배포_front  (0) 2021.10.11
[AWS] 4. Amazon CloudFront  (0) 2021.10.11