aws - ELB

» 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를 향해 요청을 보내도록 구성
  • Image

SSL/TLS

HTTP를 HTTPS로 바꿔주는 인증서

  • HTTPS 인증을 받은 웹 사이트가 백엔드 서버와 통신하려면, 백엔드 서버의 주소도 HTTPS 인증을 받아야 함

    • 웹 사이트 주소 :https**://jscode-edu.co.kr
    • 백엔드 API 서버 주소 :https**://api.jscode-edu.co.kr


ELB 셋팅하기

AWS > EC2 > 로드밸런싱 > 로드밸런서

  1. 리전(Region)을 선택

  2. 로드 밸런서 생성

  3. 3가지 로드 밸런서 유형 중 Application Load Balancer(ALB)를 선택

    • 기본 구성
    • 체계
      • 인터넷 경계내부라는 옵션이 있음
      • 내부 옵션은 Private IP를 활용할 때 사용
      • 여기선 인터넷 경계 옵션을 선택
    • IP 주소 유형
      • IPv4듀얼 스택이라는 옵션이 있음
      • IPv6을 사용하는 EC2 인스턴스가 없다면 IPv4를 선택하면 됨
  • 네트워크 매핑
    • 로드 밸런서가 어떤 가용 영역으로만 트래픽을 보낼 건지 제한하는 기능

AWS > EC2 > 네트워크 및 보안 > 보안 그룹

  • 보안 그룹 생성
  • 인바운드 규칙
    • 80(HTTP), 443(HTTPS) 포트로 모든 IP에 대해 요청을 받을 수 있게 설정
    • 소스는 IPv4로 들어오는 누구나

AWS > EC2 > 로드밸런싱 > 로드밸런서

  1. 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를 만들어야 함
    • 대상 등록
  2. ELB 만드는 창으로 돌아와서 대상 그룹(Target Group) 등록

  3. 로드밸런서 생성

  4. health check api를 서버에서 넣어주고 서버를 다시 실행시켜주기
  • Image

  • 로드밸런서에 들어가면 나오는 DNS 이름으로도 접근 가능


ELB에 도메인 연결하기
  1. Route 53에서 EC2에 연결되어 있던 레코드 삭제

  2. Route 53에서 ELB에 도메인 연결

    • 레코드 생성
    • 레코드 유형은 A
    • 별칭 키고 트래픽 라우팅 대상은 Application/Classic Load Balancer에 대한 별칭
    • 리전과 로드밸런서 선택
    • 레코드 생성 완료 후 해당 도메인으로 연결 잘 되는지 확인


HTTPS 적용을 위해 인증서 발급받기

AWS Certificate Manager

  1. 인증서 요청
    • 퍼블릭 인증서 요청
    • 만든 도메인 이름
  2. 인증서 검증 : 내가 소유한 도메인이 맞는 지 검증
    • Route 53에서 레코드 생성
    • 레코드 생성
  3. 새로고침해서 검증 완료
    • 인증서 나열에서도 확인 가능


ELB에 HTTPS 설정하기

EC2 > 로드 밸런서 > server > 리스너 및 규칙

  1. 리스너 추가
    • HTTPS에 대한
    • 프로토콜: HTTPS
    • 대상 그룹 선택
    • 보안 리스너 설정
      • 인증서 선택
  2. 아까 구매한 도메인에 https://를 붙여서 접속 확인
    • Image
  3. HTTP로 접속할 경우 HTTPS로 전환되도록 설정
    • 기존 HTTP:80 리스너를 리스너 관리>삭제
    • 리스너 추가
      • 프로토콜: HTTP
      • 라우팅 액션: URL로 리디렉션
      • 포트 입력
  4. HTTP로 접속해도 HTTPS로 잘 전환되는 지 확인


비용 나가지 않게 ELB 깔끔하게 종료하기
  1. 로드밸런서>작업>로드밸런서 삭제
  2. EC2 대시보드>인스턴스>인스턴스 상태>종료
  3. 탄력적 IP 연결 해제>릴리즈