이 영역을 누르면 첫 페이지로 이동
caputdraconis 블로그의 첫 페이지로 이동

caputdraconis

페이지 맨 위로 올라가기

caputdraconis

네트워크 관점에서의 클라우드 컴퓨팅을 공부하는 중입니다 :)

[Networks] AWS 로드 밸런싱 - ALB

  • 2022.01.20 16:31
  • Computer Network
글 작성자: caputdraconis
반응형

 

Resource Name Detail Setting
VPC My-VPC IPv4 CIDR : 20.0.0.0/16
ELB-VPC IPv4 CIDR : 10.0.0.0/16
Public Subnet ELB-Public-SN-1 IPv4 CIDR : 20.0.0.0/24, ap-northeast-2a
ELB-Public-SN-1 IPv4 CIDR : 20.0.0.0/24, ap-northeast-2a
My-Public-SN IPv4 CIDR : 20.0.0.0/24, ap-northeast-2a
Public Routing Table ELB-Public-RT Subnet : ELB-Public-SN-1, ELB-Public-SN-2
IGW : ELB-IGW
My-Public-RT Subnet : My-Public-SN
IGW : My-IGW
IGW ELB-IGW At My-VPC
My-IGW At ELB-VPC
EC2 My-EC2 connect :  My-Public-SN
ELB-EC2-1 connect : ELB-Public-SN-1 / HTTP, SNMP
ELB-EC2-2 connect : ELB-Public-SN-2 / HTTP, SNMP
Security Group ELBSG (HTTP, TCP, 80) (SSH, TCP, 22) (사용자 지정 UDP, UDP, 161)

 

로드 밸런서가 없는 상황 먼저 보도록 하겠습니다.

My-EC2의 퍼블릭 IPv4 주소를 확인하고 이 주소로 ssh 접속을 합니다.

curl <ELB-EC2-1의 퍼블릭 IPv4>

curl <ELB-EC2-1의 퍼블릭 IPv4>/dev/index.html

snmpget -v2 -c public <ELB-EC2-1의 퍼블릭 IPv4> 1.3.6.1.2.1.1.5.0

curl, snmpget 명령어를 통해 로드 밸런서 없이 개별 시스템으로 직접적으로 요청하는 상황을 확인해봅니다.

 

 

ALB를 통한 로드 밸런싱을 확인해보겠습니다.

[EC2 - 로드 밸런싱 - 로드 밸런서 - 로드 밸런서 생성]


로드 밸런서 목록에서 ALB를 선택합니다.

Load balancer name : ALB-TEST

VPC : ELB-VPC

Mappings

  • ap-northeast-2a : ELB-Public-SN-1
  • ap-northeast-2c : ELB-Public-SN-2

Security groups : ELB-SG

Listener : HTTP, 80

Target group

  • Name : ALB-TG
  • Target Type : Instance
  • Protocol : HTTP
  • Port : 80
  • Health checks(기본값 유지) - target : 2 ELB instances

 

ALB의 상태가 provisioning에서 active, 대상 그룹의 대상 인스턴스 상태가 initial에서 healthy로 바뀔 때까지 기다립니다.

이제 My-EC2 인스턴스에 접속해서 ALB의 DNS 주소로 curl 명령을 통해 HTTP 접근을 해보면 ELB-EC2-1과 ELB-EC2-2로 번갈아 가면서 부하 분산이 됩니다.(기본적으로 ALB의 로드 밸런싱은 라운드 로빈 방식을 취합니다. 이는 변경 가능합니다.)

 

 

이렇게 ALB가 HTTP 접근을 두개의 EC2에 번갈아가며 부하 분산 시키는 것을 확인했습니다. 여기서 만약 ELB-EC2-1에는 /dev/ 경로 페이지가 존재하지만 ELB-EC2-2에는 없으며, 반대로 /mgt/ 경로 페이지는 ELB-EC2-2에만 존재하는 상황에서, ALB의 DNS 주소로 이 /dev/ 경로 페이지를 접근해보면 어떻게 될까요?

ELB-EC2-1와 ELB-EC2-2의 /var/www/html 경로에 각각 dev, mgt 라는 이름의 디렉토리를 만들어주고 그 안에 index.html이라는 이름의 파일을 작성해줍니다. 아래의 명령어를 입력하면 이 작업을 수행합니다.

My-EC2 ssh 접속

/index.html로만 접근을 할 때는 ALB가 ELB-EC2-1, ELB-EC2-2로 정상적으로 분산이 되는 것을 확인할 수 있습니다. 하지만 /dev/index.html로 접근을 할 때는 ELB-EC2-2에는 이 경로 페이지가 존재하지 않기 때문에 404 Not Found이 출력되었습니다.

이를 해결하기 위해 경로 기반 라우팅을 사용합니다. URL 경로 정보를 확인하여 원하는 대상으로 라우팅을 할 수 있는 기능입니다. 즉 /dev/ 경로 페이지는 ELB-EC2-1 로만 전달할 수 있게 됩니다.

 

[EC2 - 로드 밸런싱 - 대상 그룹 - 대상 그룹 생성] 으로 들어가서 Dev-Group이라는 이름의 대상 그룹을 생성해줍니다. VPC는 ELB-VPC로 합니다. 대상을 등록하는 페이지에서 /dev/ 경로 페이지가 존재하는, ELB-EC2-1만 선택하여 대상으로 등록해줍니다. 같은 방식으로 ELB-EC2-2만 대상으로 등록되있는 Mgt-Group도 생성해줍니다.

로드 밸런서 ALB-TEST에서 기존의 리스너를 편집해줍니다. ( 규칙 보기/편집 클릭)

 

위 사진과 같이 규칙을 편집해줍니다.(조건 -> 경로 -> /dev/* 혹은 /mgt/*)

 

 

위의 사진을 보면, 경로 기반 라우팅이 잘 작동함을 확인할 수 있습니다.

반응형

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [Networks] Store and Forward Transmission

    [Networks] Store and Forward Transmission

    2023.05.15
  • [Networks] URI와 PURL

    [Networks] URI와 PURL

    2023.03.09
  • [Networks] OSI 7 계층 정리

    [Networks] OSI 7 계층 정리

    2022.01.17
  • [AWS] 엔드포인트 실행 결과 비교

    [AWS] 엔드포인트 실행 결과 비교

    2022.01.12
다른 글 더 둘러보기

정보

caputdraconis 블로그의 첫 페이지로 이동

caputdraconis

  • caputdraconis의 첫 페이지로 이동

검색

메뉴

    카테고리

    • 분류 전체보기 (168)
      • Cloud (3)
      • Computer Network (12)
      • Database (2)
      • Terraform (2)
      • 🥚고리즘 (13)
      • 겅부겅부🙃 (10)
        • Naver CS50 코칭스터디 (2)
        • Machine Learning (1)
        • Computing System (6)
      • 언어&프레임워크 (20)
        • Python (4)
        • Django (10)
        • Node JS (1)
        • C++ (2)
        • Java (1)
        • Flutter (2)
      • Security (76)
        • WebHacking Study (11)
        • 지옥방 스터디 (22)
        • 여름방학 스터디 (2)
        • PWN Study (6)
        • SUA Reversing Study (3)
        • PWN (3)
        • WebHacking (20)
        • Reversing (4)
      • 알고 있으면 도움되지 않을까,,? (23)
      • 일상다반사 (1)
      • 근황 정리 (1)
      • 42 Seoul (1)
        • Setting (1)

    최근 글

    인기 글

    댓글

    공지사항

    아카이브

    태그

    • 웹해킹.kr
    • 파이썬함수
    • Python
    • 리스트함수
    • old-16
    • 파이썬기초
    • 파이썬
    • 드림핵

    나의 외부 링크

    • Github
    • solved.ac
    • caputdraconis@kakao.com

    정보

    caputdraconis의 caputdraconis

    caputdraconis

    caputdraconis

    블로그 구독하기

    • 구독하기
    • RSS 피드

    방문자

    • 전체 방문자
    • 오늘
    • 어제

    티스토리

    • 티스토리 홈
    • 이 블로그 관리하기
    • 글쓰기
    Powered by Tistory / Kakao. Copyright © caputdraconis.

    티스토리툴바