aws - ELB
Feb 7, 2025
»
BE
인프런 JSCODE 박재성님 비전공자도 이해할 수 있는 AWS 입문/실전 강의를 듣고 정리한 내용입니다
https://www.inflearn.com/course/%EB%B9%84%EC%A0%84%EA%B3%B5%EC%9E%90-%EC%9D%B4%ED%95%B4%ED%95%A0%EC%88%98%EC%9E%88%EB%8A%94-aws-%EC%9E%85%EB%AC%B8%EC%8B%A4%EC%A0%84/dashboard
ELB
ELB(Elastic Load Balancer)
트래픽(부하)을 적절하게 분배해주는 장치 = 로드밸런서(Load Balancer)
- 서버를 2대 이상 기용할 때 필수 도입
- 사용자들이 EC2에 직접적으로 요청을 보내지 않고 ELB를 향해 요청을 보내도록 구성
SSL/TLS
HTTP를 HTTPS로 바꿔주는 인증서
-
HTTPS 인증을 받은 웹 사이트가 백엔드 서버와 통신하려면, 백엔드 서버의 주소도 HTTPS 인증을 받아야 함
- 웹 사이트 주소 :
https**://jscode-edu.co.kr - 백엔드 API 서버 주소 :
https**://api.jscode-edu.co.kr
- 웹 사이트 주소 :
ELB 셋팅하기
AWS > EC2 > 로드밸런싱 > 로드밸런서
-
리전(Region)을 선택
-
로드 밸런서 생성
-
3가지 로드 밸런서 유형 중 Application Load Balancer(ALB)를 선택
- 기본 구성
- 체계
- 인터넷 경계와 내부라는 옵션이 있음
- 내부 옵션은 Private IP를 활용할 때 사용
- 여기선 인터넷 경계 옵션을 선택
- IP 주소 유형
- IPv4와 듀얼 스택이라는 옵션이 있음
- IPv6을 사용하는 EC2 인스턴스가 없다면 IPv4를 선택하면 됨
- 네트워크 매핑
- 로드 밸런서가 어떤 가용 영역으로만 트래픽을 보낼 건지 제한하는 기능
AWS > EC2 > 네트워크 및 보안 > 보안 그룹
- 보안 그룹 생성
- 인바운드 규칙
- 80(HTTP), 443(HTTPS) 포트로 모든 IP에 대해 요청을 받을 수 있게 설정
- 소스는 IPv4로 들어오는 누구나
AWS > EC2 > 로드밸런싱 > 로드밸런서
- ELB 만드는 창으로 돌아와서 보안 그룹 등록
- 리스너 및 라우팅
- 대상 그룹(Target Group, ELB로 들어온 요청을 어디로 보낼지) 생성
- 대상 유형 선택
- EC2에서 만든 특정 인스턴스로 트래픽을 전달할 때는 인스턴스 옵션을 선택
- ELB가 사용자로부터 트래픽을 받아 대상 그룹에게 어떤 방식으로 전달할 지 설정
- 프토토콜 : 포트 - HTTP 80
- IP 주소 유형 - IPv4
- 프로토콜 버전 - HTTP1
- 상태 검사(= Health Check, 헬스 체크)
- ELB는 주기적으로(기본 30초 간격) 대상 그룹에 속해있는 각각의 EC2 인스턴스에 요청을 보냄
- 그 요청에 대한 200번대(HTTP Status Code) 응답이 잘 날라온다면 서버가 정상적으로 잘 작동되고 있다고 판단
- 만약 요청을 보냈는데 200번대의 응답이 날라오지 않는다면 서버가 고장났다고 판단, 그 EC2 인스턴스로는 요청(트래픽)을 보내지 않음
- 특정 EC2 인스턴스 내에 있는 서버가 예상치 못한 에러로 고장나도 효율적인 요청(트래픽)의 분배가 가능해짐
- 정상적인 헬스 체크 기능을 위해 EC2 인스턴스에서 작동하고 있는 백엔드 서버에 Health Check용 API를 만들어야 함
- ELB는 주기적으로(기본 30초 간격) 대상 그룹에 속해있는 각각의 EC2 인스턴스에 요청을 보냄
- 대상 등록
-
ELB 만드는 창으로 돌아와서 대상 그룹(Target Group) 등록
-
로드밸런서 생성
- health check api를 서버에서 넣어주고 서버를 다시 실행시켜주기
-
-
로드밸런서에 들어가면 나오는 DNS 이름으로도 접근 가능
ELB에 도메인 연결하기
-
Route 53에서 EC2에 연결되어 있던 레코드 삭제
-
Route 53에서 ELB에 도메인 연결
- 레코드 생성
- 레코드 유형은 A
- 별칭 키고 트래픽 라우팅 대상은 Application/Classic Load Balancer에 대한 별칭
- 리전과 로드밸런서 선택
- 레코드 생성 완료 후 해당 도메인으로 연결 잘 되는지 확인
HTTPS 적용을 위해 인증서 발급받기
AWS Certificate Manager
- 인증서 요청
- 퍼블릭 인증서 요청
- 만든 도메인 이름
- 인증서 검증 : 내가 소유한 도메인이 맞는 지 검증
- Route 53에서 레코드 생성
- 레코드 생성
- 새로고침해서 검증 완료
- 인증서 나열에서도 확인 가능
ELB에 HTTPS 설정하기
EC2 > 로드 밸런서 > server > 리스너 및 규칙
- 리스너 추가
- HTTPS에 대한
- 프로토콜: HTTPS
- 대상 그룹 선택
- 보안 리스너 설정
- 인증서 선택
- 아까 구매한 도메인에 https://를 붙여서 접속 확인
- HTTP로 접속할 경우 HTTPS로 전환되도록 설정
- 기존 HTTP:80 리스너를 리스너 관리>삭제
- 리스너 추가
- 프로토콜: HTTP
- 라우팅 액션: URL로 리디렉션
- 포트 입력
- HTTP로 접속해도 HTTPS로 잘 전환되는 지 확인
비용 나가지 않게 ELB 깔끔하게 종료하기
- 로드밸런서>작업>로드밸런서 삭제
- EC2 대시보드>인스턴스>인스턴스 상태>종료
- 탄력적 IP 연결 해제>릴리즈