[Aws]ELB #5 : 셋팅 - 리스너 및 라우팅 / 헬스 체크

2025. 4. 16. 21:18·aws

✅ 1. 대상 그룹(Target Group) 설정하기

📌 대상 그룹이란?

ELB는 단독으로 요청을 EC2 인스턴스에 전달하지 않습니다.
요청을 전달할 EC2 인스턴스들을 미리 묶어두는 단위를 **대상 그룹(Target Group)**이라고 부릅니다.

즉, ELB는 대상 그룹을 통해서만 인스턴스와 연결됩니다.


1) 대상 그룹 생성

  • 대상 그룹을 새로 생성합니다.
  • 대상 그룹은 ELB에 요청이 들어왔을 때 트래픽을 전달할 EC2 인스턴스 목록입니다.

2) 대상 유형 선택

대상 유형을 선택할 수 있는데, 우리는 EC2 인스턴스에 직접 트래픽을 전달할 것이므로
‘인스턴스’ 옵션을 선택합니다.


3) 프로토콜 및 포트 설정

  • 프로토콜: HTTP
  • 포트: 80
  • IP 주소 유형: IPv4
  • 프로토콜 버전: HTTP1

이 설정은 ELB가 HTTP 요청을 80번 포트를 통해 인스턴스에 전달하겠다는 의미입니다.
현업에서도 가장 흔하게 쓰이는 방식입니다.


4) 상태 검사(Health Check) 설정

상태 검사는 ELB가 EC2 인스턴스의 상태를 주기적으로 체크하여,
정상적인 인스턴스로만 요청을 전달하도록 하는 기능입니다.

설정 예시:

  • 프로토콜: HTTP
  • 경로: /health

이 설정대로라면 ELB는 각 인스턴스에 GET /health 요청을 30초마다 보내고,
정상적인 200번대 응답이 오면 해당 인스턴스를 ‘정상’으로 간주합니다.
응답이 없거나 200번대가 아닌 경우엔 ‘비정상’으로 판단해 트래픽을 전달하지 않습니다.

이 기능 덕분에 서버에 문제가 발생해도 자동으로 걸러져서 사용자 경험이 유지됩니다.


5) 대상 인스턴스 등록

  • EC2 인스턴스를 하나 이상 선택하여 대상 그룹에 추가합니다.
  • 포트는 80번으로 설정합니다.

이제 대상 그룹이 준비되었습니다.


6) 대상 그룹을 ELB에 연결

다시 ELB 생성 화면으로 돌아가서
앞서 만든 대상 그룹을 ELB에 연결합니다.

해석하자면,
"ELB로 들어온 HTTP 요청(포트 80)을 이 대상 그룹에 연결된 인스턴스로 전달하겠다"는 의미입니다.


7) 로드 밸런서 생성

이제 나머지 옵션은 그대로 두고,
로드 밸런서 생성 버튼을 눌러 마무리합니다.


✅ 2. Health Check API 추가하기

앞서 헬스 체크 경로를 /health로 설정했기 때문에,
이제 실제 서버 코드에서 해당 경로에 대한 응답을 만들어줘야 합니다.

예시 코드 (Node.js Express)

const express = require('express');
const app = express();
const port = 80;

app.get('/', (req, res) => {
  res.send(`Hello World!`);
})

// GET /health 요청에 대해 상태코드 200으로 응답하는 API
app.get('/health', (req, res) => {
  res.status(200).send("Success Heatlth Check");
})

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})

참고: 예제 코드 깃허브
https://github.com/JSCODE-EDU/elb-express-health-sample


✅ 3. 로드 밸런서 주소로 접속해보기

ELB가 생성되면, AWS가 DNS 주소 형태의 ELB 주소를 제공합니다.
이 주소를 웹 브라우저에 입력해보세요.

  • 정상이라면 Hello World!가 출력됩니다.
  • 서버 코드가 제대로 반영되지 않았거나, 인스턴스 상태가 비정상이라면 접속이 안 될 수도 있습니다.

이 테스트를 통해 ELB 설정이 정상적으로 작동하는지 확인할 수 있습니다.

'aws' 카테고리의 다른 글
  • [Aws]ELB #7 : HTTPS 적용을 위한 인증서 발급
  • [Aws]ELB #6 : 도메인 연결
  • [Aws]ELB #4 : 셋팅 - 보안그룹
  • [Aws]ELB #3 : 셋팅 - 기본 구성
당훈이
당훈이
당훈이 님의 블로그 입니다.
  • 당훈이
    당훈IT
    당훈이
  • 전체
    오늘
    어제
    • 분류 전체보기 (40)
      • spring (7)
      • vue.js (8)
      • docker (1)
      • javascript (1)
      • aws (21)
      • database (1)
        • oracle (1)
      • nuxt (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    nodejs 배포
    nuxt fetch
    스프링 배포
    ec2 spring 배포
    Spring
    AWS EC2
    EC2
    elb
    스프링부트
    스프링
    nuxt vue
    Vue
    ec2 nodejs
    배포
    AWS
    route53
    nuxt cache
    ec2 domain
    AWS ELB
    aws dns
    ec2 route53
    spring boot
    aws domain
    aws route53
    aws 스프링
    nuxt dedupe
    vue3
    aws spring
    nuxt usefetch
    중복요청
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
당훈이
[Aws]ELB #5 : 셋팅 - 리스너 및 라우팅 / 헬스 체크
상단으로

티스토리툴바