AWS - ELB(; NLB, ALB)

jsbak·2023년 4월 26일
1

Cloud

목록 보기
37/59

ELB(Elastic Load Balancing)

  • Elastic Load Balancing(ELB) 은 하나(ALB는 둘) 이상의 가용 영역에서 여러 대상에 걸쳐 수신되는 트래픽을 자동으로 분산합니다.
    • 등록된 Target 의 상태를 모니터링하면서 상태가 양호한 대상으로만 트래픽을 라우팅합니다.
  • Elastic Load Balancing 은 수신 트래픽의 변화에 따라 로드 밸런서 용량을 자동으로 조정합니다.

로드 밸런서 이점

  • 트래픽을 다수의 컴퓨팅 리소스로 분산하기 때문에 가용성 ⬆️, 내결함성 ⬆️
  • Auto Scaling 같은 서비스와 같이 쓰여 컴퓨팅 리소스를 추가 및 제거를 통해 확장성 ⬆️
  • 컴퓨팅 리소스가 주요 작업에 집중할 수 있도록 암호화 및 복호화 작업을 로드 밸런서로 오프로드

Elastic Load Balancing의 작동 방식

  • 등록된 대상의 상태를 모니터링하고 정상인 경우 요청된 트래픽을 라우팅합니다.
  • 하나 이상의 리스너를 지정하여 들어오는 트래픽을 허용하도록 구성
    • 리스너 : 연결 요청을 확인하는 프로세스, 프로토콜 및 포트 번호로 구성됩니다.

구성 요소 용어

  • 규칙
    • Target GroupListener 에 연결하기 위한 규칙
    • Application Load Balancer 유형을 생성한 다음 설정 가능
      • 각 리스너에 기본 규칙 자동 생성됨, 필요에 따라 추가 규칙을 정의 가능
    • 우선 순위, 하나 이상의 작업/조건으로 구성
  • Listener
    • 클라이언트와 로드 밸런서 간의 연결을 위함. ->클라이언트 측에서 보낸 요청을 해당 리스너가 수신 후 대상 그룹으로 전달
    • 프로토콜 + 포트번호
  • Target Group
    • 프로토콜과 포트 번호를 사용하여 EC2 인스턴스, AWS Lambda 함수, IP 주소와 같이 트래픽을 전송하려는 하나 이상의 백엔드 유형의 정의 + 각 그룹에 대한 상태 확인을 정의

ELB 유형

NLB

구성요소

  • 로드 밸런서
    클라이언트에 대한 단일 접점 역할을 수행하며 수신되는 트래픽을 여러 대상에 분산
  • 리스너 : 대상 그룹과 1:1
    프로토콜 및 포트를 사용하여 연결 요청을 확인하여 대상 그룹으로 전달
  • 대상 그룹
    프로토콜과 포트번호를 사용하여 등록된 대상으로 요청을 라우팅,

개요

  • OSI 모델의 L4 계층에서 작동
  • 대상 그룹이 TCP, UDP, TCP_UDP 및 TLS 프로토콜을 지원
  • 설정에서 가용 영역 활성화 ➡️ 해당 가용 영역에 서브넷 하나를 지정하고 로드밸런서 노드 생성 🟰 서브넷의 네트워크에 네트워크 인터페이스 생성(ENI; ELB net) ➡️ ENI 에 IPv4 할당, 이는 볼 수 있으나 수정 불가능
    • 기본적으로 각 로드 밸런서 노드는 해당 가용 영역의 등록된 대상에만 트래픽을 분산
    • 인터넷 경계 로드 밸런서를 생성하는 경우 필요에 따라 서브넷당 하나의 변경 불가능한 탈력적인 IP주소 부여
    • NLB - 가용영역
  • 라우팅 - 흐름 해시 알고리즘 이용하여 대상을 선택
  • 애플리케이션에 대한 요청의 전체적인 흐름을 방해하지 않고 필요에 따라 로드 밸런서에서 대상을 추가 및 제거할 수 있다.

ALB

구성요소

  • 로드 밸런서
    클라이언트에 대한 단일 접점 역할을 수행하며 수신되는 트래픽을 여러 대상에 분산
  • 리스너 : 대상 그룹과 1:M
    1. 프로토콜 및 포트를 사용하여 연결 요청을 확인하여 대상 그룹으로 전달
    2. 리스너에 정의한 규칙에 따라 대상에 애플리케이션 트래픽을 라우팅 하는 방법을 결정 (다수의 대상 그룹중 택)
  • 대상 그룹
    프로토콜과 포트번호를 사용하여 등록된 대상으로 요청을 라우팅

개요

  • OSI 모델의 L7 계층에서 작동
  • 요청을 받으면 우선 순위에 따라 리스너 규칙을 평가하여 규칙 작업의 대상 그룹에서 대상을 선택
  • 트래픽의 콘텐츠(Source, Port, Protocol, ... 이외 것 포함)를 기반으로 규칙을 구성 가능
  • 대상이 여러 개의 대상 그룹에 등록이 된 경우에도 각 대상 그룹에 대해 독립적으로 라우팅이 수행
  • 애플리케이션에 대한 요청의 전체적인 흐름을 방해하지 않고 필요에 따라 로드 밸런서에서 대상을 추가 및 제거할 수 있다.
  • 대상 그룹 레벨에서 라우팅 알고리즘 구성
    • 라운드 로빈(기본 알고리즘)
    • 최소 미해결 요청
    • 가중치가 적용된 무작위 랜덤 요청

L4/L7 로드밸런싱 비교


네트워크(L4)애플리케이션(L7)
동작 방식IP Addr + Port Number 기반의 트래픽 관리IPAddr + Port + 패킷내용 => HTTP 헤더, 쿠키, 또는 URL 매개변수와 같은 애플리케이션 계층의 정보를 기반으로 트래픽을 분배
TCP 레벨에서 연결을 관리요청의 내용을 이해하고 특정 애플리케이션의 논리적인 부분에 따라 트래픽을 분배할 수 있다.
기능서버 그룹 중에서 가장 적재가 적은 서버로 패킷을 전달세션 유지, SSL 종료, 웹 방화벽 등과 같은 고급 기능을 제공
내용을 기반으로 트래픽을 라우팅하여 더 고급 라우팅 결정이 가능
사용사례TCP 트래픽을 다른 서브넷이나 가용 영역에 분산HTTP 트래픽을 요청의 내용을 기반으로 특정 서버 집합으로 라우팅
고성능 및 낮은 지연이 필요한 응용 프로그램호스트 기반 또는 경로 기반 라우팅, SSL 종료 및 HTTP/HTTPS 트래픽 처리와 같은 기능이 필요한 응용 프로그램에 적합
  • 다중 아키텍처 구성
    • NLB는 낮은 수준에서 더 효율적으로 처리되도록 사용될 수 있다.
      • 입력된 TCP 트래픽을 백엔드 서버에 분산
    • ALB는 높은 수준에서 응용 프로그램별 기준에 따라 트래픽을 처리할 수 있도록 사용
      • 여러 구성 요소, 서비스 또는 마이크로 서비스를 갖는 응용 프로그램에 유용
    • ALB의 가변 노드 특성을 보완하기 위해 2021년 9월 부터 NLB에 ALB 유형 대상 그룹 연결을 허용
      • 클라이언트는 NLB의 고정 노드 특성만 고려해 트래픽을 요청하고 NLB 후면에 장착된 ALB의 노드나 IP 변화는 NLB가 자동 감지해서 라우팅

사용 사례

  • ALB: 웹 어플리케이션, 마이크로서비스 아키텍처, 다층 어플리케이션.
  • NLB: TCP/UDP 기반의 애플리케이션, 고성능이 필요한 경우, 정적 IP 주소가 필요한 경우.

ELB 접근

  • EC2 대시보드 - EC2 탭 - 로드 밸런싱 - 로드 밸런서

NLB

NLB 생성

  • 로드 밸런서 생성 클릭
  • Network Load Balancer 생성 클릭

기본 구성

  • 이름 지정
  • 체계: 내부/외부 의 로드밸런싱 인지 체크

네트워크 매핑

  • 사용하려는 VPC 선택
  • 연결할 서브넷 선택; 퍼블릭

리스너 및 라우팅

  • 접근해오는 포트 설정

대상 그룹 생성

  • 기본 구성
  • 대상 유형 / 대상 그룹 이름 지정
  • 이 타켓 그룹으로 보낼 포트 지정
  • 상태 검사; 관련 설정
  • 다음

대상 등록

  • 대상 그룹에 포함할 리소스 선택 후 아래에 보류 중인 것으로 포함 클릭
  • 대상 그룹 생성 클릭
  • 대상 그룹 생성 결과

로드 밸런서 생성

  • 로드 밸선서 생성 클릭

  • 생성 결과
  • ns 레코드 설정후 확인; 그냥 dns 이름으로도 접근 가능

ALB

  • ❗ ALB 가 앞에서 받아주기 때문에 ALB 뒤에 있는 EC2 인스턴스는 퍼블릭 IP를 가지지 않아도 된다.

아키텍처

ALB 생성

  • 로드 밸런서 생성 클릭
  • Application Load Balancer 생성 클릭

기본 구성

  • 이름: my-alb
  • 인터넷 경계

네트워크 매핑

보안 그룹

  • 보안 그룹 생성
    • 기본 세부 정보; VPC ID 확인하기 ❗
    • 인바운드 규칙
  • 보안 그룹 선택

리스너 및 라우팅

  • 대상 그룹 생성
  • 기본 구성
    • 대상 유형 선택
    • 대상 그룹 이름
    • 프로토콜 및 VPC 선택
  • 상태 검사
    • 상태 검사 경로 체크 ❗

    • 고급 상태 검사 설정

      • 성공코드에 대한 엄격함.

  • 대상 등록

  • 리스너 지정 - 대상 그룹 지정

로드 밸런서 생성

  • 로드밸런서 생성 클릭

NS 레코드에 ALB 연동

  • blog.xxx.shop
  • 로드 밸런서 접속 확인 blog.xxx.shop

리소스 제거

  • 로드 밸런서 제거 후 - 대상 그룹 제거

로드 밸런서 제거

  • 좌측 EC2 메뉴 - "로드 밸랜싱" 섹션 - "로드밸런서" 선택
  • 로드 밸런서 체크 박스 선택 - "작업(Actions)" - "삭제(Delete load balancer)"

대상 그룹 제거

  • 좌측 EC2 메뉴 - "로드 밸랜싱" 섹션 - "대상 그룹" 선택
  • 해당 대상 그룹 체크 박스 선택 - "작업(Actions)" - "삭제"

기타

  • php configuration 설정 변경
    /etc/httpd/conf/httpd.conf
    • index 파일 설정 - line 164 - index.php 추가
      sudo vi /etc/httpd/conf/httpd.conf
      sudo systemctl restart httpd
      curl 127.0.0.1

참고

고가용성과 내결함성

고가용성내결함성
목표시스템이 항상 사용가능하면 다운타임이 최소화되어 사용자에게 지속적인 서비스를 제공하는데 중점을 두는 것, 이는 전체 시스템이나 서비스의 완전체적인 가동성과 관련장애가 발생하더라도 시스템이나 서비스가 정상적으로 작동할 수 있도록 하는데 중점을 두는 것, 이는 주로 시스템 내의 개별 구성요소의 고장에 대한 내성을 강화하는 것을 의미
대응 범위전체 시스템이나 서비스의 가동성에 중점을 두기 때문에 여러 구성 요소의 고장 또는 전체 데이터 센터의 장애에 대응개별 구성 요소 또는 하위 시스템의 오류에 대한 대비와 복구에 중점
수립 방법전체 아키텍처를 고가용성으로 설계하고, 여러 지리적 위치에 서비스를 복제하거나 여러 서버 간에 부하를 분산하는 방법을 사용주로 개별 구성 요소의 장애를 격리하고 회복할 수 있는 기술적인 방법, 여분의 하드웨어를 사용하거나, 오류 발생 시 자동로 전환되는 메커니즘



이전 내용

ELB(Elastic Load Balancing)

EC2 인스턴스, 컨테이너 및 IP 주소와 같은 여러 대상에 대해 수신 애플리케이션 또는 네트워크 트래픽을 여러 가용 영역에 배포합니다. 애플리케이션에 대한 트래픽이 시간이 지남에 따라 변경되므로 Elastic Load Balancing가 로드 밸런서를 확장하고, 대다수의 워크로드에 맞게 자동으로 조정 가능합니다.

  • 워크로드를 가상 서버와 같은 다수의 컴퓨팅 리소스로 분산
  • 애플리케이션의 가용성(High Availability)⬆ 과 내결함성(FaultTolerant) ⬆
  • 기능
    • 고가용성 (여러 가용 영역에 배포)
    • 탄력성; 자동 확장 기능 (ELB는 수신 트래픽의 수요에 맞게 자동으로 확장)
    • 리전 서비스
    • IP주소로 로드 밸런싱 가능하여 온프레미스 서버로도 로드 밸런싱 가능
    • 높은 처리량
  • 상태 확인
    • 모든 요소의 유효성을 검사
      • 요청이 잘가는지, 애플리케이션 기능이 잘 작동 하는지, 정상적인 응답이 오는지
      • ELB에서 EC2 인스턴스가 더 이상 작동하지 않는다고 판단하면 EC2 인스턴스로의 트래픽 전송을 중지
  • 이점
    • 워크로드를 가상 서버와 같은 다수의 컴퓨팅 리소스로 분산
    • 애플리케이션의 가용성과 내결함성이 높아집니다.
    • 애플리케이션에 대한 요청의 전체적인 흐름을 방해하지 않고 필요에 따라 로드 밸런서에서 컴퓨팅 리소스를 추가 및 제거
    • 정상적인 대상에만 요청을 보내도록 컴퓨팅 리소스의 상태를 모니터링하는 상태 확인을 구성
    • 컴퓨팅 리소스가 주요 작업에 집중할 수 있도록 암호화 및 복호화 작업을 로드 밸런서로 오프로드

ALB

  • Application Load Balancer (ALB)
  • Layer 7 (응용 프로그램 계층) 로드 밸런싱
    • ALB는 OSI 모델의 Layer 7에서 동작하여 HTTP 및 HTTPS와 같은 응용 프로그램 프로토콜을 이해하고 라우팅할 수 있습니다.
  • 도메인 기반 라우팅
    • 도메인 레벨에서 라우팅이 가능하며, 여러 도메인을 단일 로드 밸런서로 관리할 수 있습니다.
  • 요청 데이터를 기반으로 트래픽을 라우팅
    • 대상 그룹으로 세분화된 라우팅이 가능
    • HTTP 헤더 및 쿼리 문자열 기반 라우팅
      • 특정 HTTP 헤더나 쿼리 문자열을 기반으로 트래픽을 라우팅할 수 있습니다.
  • ACM과 통합되면서 아주 간단하게 인증서를 로드 밸런서에 연결할 수 있어 SSL/TLS 인증서를 구매, 업로드 및 갱신하는 작업이 매우 간편
  • 사용자 인증

NLB

  • Network Load Balancer (NLB)
  • Layer 4 (네트워크 계층) 로드 밸런싱
    • NLB는 OSI 모델의 Layer 4에서 동작하여 TCP, UDP, TLS 등의 프로토콜을 로드 밸런싱할 수 있습니다.
    • TCP/UDP 프로토콜 데이터를 기반으로 Amazon VPC 내의 대상(Amazon EC2 인스턴스, 마이크로서비스 및 컨테이너)으로 연결을 라우팅
  • 고성능 및 단일 정적 IP 주소
    • TCP 및 UDP 트래픽을 이상적인 매우 짧은 대기 시간을 유지할 수 있습니다.
    • 빠른 성능을 제공하며, NLB는 단일 정적 IP 주소를 사용하여 트래픽을 관리합니다.
  • 고정 포트 로드 밸런싱
    • NLB는 고정 포트를 사용하여 여러 대의 EC2 인스턴스로 트래픽을 분산시킵니다.
  • TCP/UDP 세션 지속성
    • TCP 및 UDP 세션 지속성을 제공하여 동일한 클라이언트가 항상 동일한 인스턴스로 연결될 수 있도록 합니다.
      • 클라이언트의 소스 IP 주소을 기반으로한 스티키(고정) 세션
  • 고급 네트워크 기능
    • NLB는 정교한 네트워크 구성을 지원하며, 정적 라우팅 및 서브넷 간의 트래픽 전달과 같은 고급 기능을 제공합니다.
  • 웹 소켓 지원
    • 웹 소켓 트래픽을 처리하고 지원합니다.
profile
끄적끄적 쓰는곳

0개의 댓글