ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AWS] 3. 로드밸런싱 설정
    tutorial/AWS클라우드 2021. 5. 28. 16:03

     

    [3]. 로드밸런싱 설정

    - ALB( Application Load Balancer)와 Auto Scaling을 이용하여 서버를 이중화하고 서비스에 대한 가용성과 확장성을 높여봅시다.
    - 이번 시간에는 서비스를 안정적으로 구축하기위해서 ALB를 이용하여 서비스를 해보는 실습을 해보겠습니다.

     

    AWS의 로드밸런싱

    • 서버의 부하분산을 수행하는 스위치의 역할
    • ALB(Application Load Balancer) - L7 계층 (http/https) 프로토콜
    • NLB(Network Load Balancer) - L4 계층 (TCP/UDP) 프로토콜
    • Classic Load Balancer - 전통적인 방식의 로드밸런서

    AWS에서 제공하는 로드밸런싱들을 'ELB'라는 용어를 사용합니다. ( Ellastic Load Balancing) 
    일반적으로 사용하는 로드밸런서는 ALB와 NLB가 있습니다.

     


    ALB 실습

    • □ EC2 서버 2대 생성해서 서비스하기
    • ALB 생성

     

    [1]. EC2 서버 2대 생성해서 서비스하기

    • EC2서버 생성 후 터미널 접속
    • git clone [project] → pm2 start app.js

     

    □. EC2생성 및 서비스 배포는 실습[1]을 참고하세요.

     

    2대의 EC2서버 세팅이 완료했다면 각각 접속해봅시다. (탄력적IP or 퍼블릭 IPv4 주소)
    호스트정보를 보면 2대의 EC2서버에 각각 요청한 것을 확인할 수 있습니다.

     

     

    [1]. ALB 설정하기

    • 로드밸런서 생성 및 설정하기
          로드밸런서 생성 → 보안그룹 설정 → 타겟그룹 설정 → 타겟등록

     

    □. 로드밸런서 생성

     

    AWS 대시보드 접속 → EC2 대시보드 → 하단 탭 [로드밸러서] 클릭 → [Load Balancer 생성]버튼 클릭

     

     

    - [Application Load Balancer 생성] 버튼 클릭

     

     

    Load Balancer 구성을 해줍니다.
         1. 이름을 지정합니다.
         2. 리스너를 설정합니다.
         3. VPC를 설정 및 가용 영역을 설정합니다.
             가용 영역은 2대 이상으로 설정하여 이중화를 합니다.
            ( 클라이언트 요청 시, [1a] 라는 가용 영역에 서비스가 불가하면 로드밸런서가 알아서 [1c]에만 요청합니다. )

     

    2단계: 보안 설정 구성은 넘어갑니다.
         - 실습 시 HTTPS 설정은 별도로 설정하지 않을 예정입니다. 
            [다음:보안 그룹 구성]버튼 클릭

     

     

    3단계: 보안 그룹 구성 시 [새 보안 그룹 생성]을 클릭합니다.
          - 기존 보안 그룹이 아닌 [새 보안 그룹 생성]을 하고
             [다음:라우팅 구성]버튼 클릭 

     

     

    4단계: 라우팅 구성에서 대상 그룹을 생성합니다.
          - 아래의 프로토콜과 포트를 확인하면 
             클라이언트의 요청→ 로드밸런서 → 3000포트를 담당하는 대상 그룹입니다.
          - 로드밸런스가 해당 대상 그룹으로 요청하면 →
             대상 그룹에 있는 EC2 인스턴스들한테 배분합니다. ( 3000포트로 요청 및 배분 )
          - ALB이기 때문에 /shop /admin /user 처럼 패스 및 포트에 따라서 대상그룹을 지 할 수 있습니다.
          - CLB의 경우 애플리케이션단이 아니기 때문에 각각 로드밸런서를 생성해야 합니다.
             ALB의 경우 하나의 로드밸런서에 다양한 대상그룹을 지정할 수 있습니다. 

     

     

    5단계: 대상 등록 시 생성한 인스턴스들을 클릭하세요.
         - 인스턴스를 체크 후 [등록된 항목에 추가]버튼을 클릭하면 등록된 대상에 올라갑니다.
         - 등록된 대상에 선택한 인스턴스가 보인다면 [다음:검토]버튼 클릭

     

     

    6단계: 검토단계에서는 [다음]버튼을 눌러 생성하세요.
         - 정상적으로 생성이 되었는지 Load Balancer 대시보드에서 확인합니다.
         - 리스너를 통하여 로드밸런서가 어떤 동작을 하는지 알 수 있습니다. 
            1. 클라이언트가 로드밸런서 URL를 80포트로 접속(요청)하게 되면
            2. 규칙에 나열되어 있는 대로 동작을 합니다.
            3. 설정한 규칙을 보면 다음과 같습니다.
                ⇒ 클라이언트가 로드밸런서 url:80포트로 접속 → EC2 인스턴스의 3000포트로 요청
                ⇒ 최종적으로 클라이언트의 요청은 EC2 인스턴스의 3000포트로 응답

     

     

     

    모든 작업을 완료하였습니다. 로드밸런서의 DNS 이름을 보고 접속해봅시다.

    일반적으로 로드밸런싱을 구성하면 DNS 이름이 아닌 www.naver.com을 접속합니다.
    그리고 내부적으로는 로드밸런서의 대상그룹에 따라 라운드로빈 방식으로 요청을 하게 됩니다.

    DNS 이름대신 www.naver.com처럼 자신의 도메인으로 접속하게 하고 싶다면,
    Route53을 통해서 로드밸런서 DNS주소 → www.naver.com으로 설정하면 됩니다.

     

     

    DNS주소로 접속하게 되면 라운드로빈 방식으로 2개의 EC2 인스턴스를 번갈아서 호출합니다.

     

     

     

    이것으로 실습을 마칩니다.

     

     

    정리

    • 서비스를 운영하기 위해서는 가용성과 확장성을 높이기 위하여 로드밸런싱+오토스케일링을 사용합니다.
    • ALB단으로 이용하면 애플리케이션단에서 설정이 가능하기 때문에
      여러 개의 로드밸런서를 생성하지 않고 한 개의 로드밸런서에 여러 개의 대상그룹을 설정합니다.
    • 대상그룹에는 EC2, 정적인 파일, 람다 등을 사용하여 요청할 서비스들을 설정합니다.
    • 실제로 운영할 때는 Route53을 이용하여 로드밸런서와 연결합니다.

     

     

     

    'tutorial > AWS클라우드' 카테고리의 다른 글

    [AWS] 2. AWS CI/CD 구축하기  (0) 2021.05.28
    [AWS] 1. EC2 서비스 배포  (0) 2021.05.28
    [AWS] AWS 클라우드 - 인프라 실습하기  (0) 2021.05.28
Designed by Tistory.