본문 바로가기

Networking

[실습] Amazon ELB (ALB, NLB) 구성하기

반응형

안녕하세요 서후아빠입니다. ^_^

이번 세션은 AWS ELB 서비스 중에서 ALB, NLB에 대해서 간단히 실습을 해보겠습니다.


구성도

가용영역 2개(AZ-A-, AZ-C)이므로 가용영역별 ELB Interface가 자동 생성됩니다. 
priA-ec2-a/c가 인터넷으로 요청하는 서비스가 없는 경우 Nat Gateway(natA-a, natA-c)는 필요없습니다.

사전 작업

인프라 생성 : vpc, subnet, igw, routing table, iam, ec2, CloudWatch의 로그 그룹  등

※ priA-ec2-a, priA-ec2-c는 wordpress 설치하여 HTTP 준비 

# WordPress로 인스턴스를 생성하거나 아래처럼 직접 WordPress(or 웹서비스)를 설치
sudo yum install httpd -y

cat /var/www/html/index.html
<html><body>hello World1</body></html>   // priA-ec2-a
<html><body>hello World2</body></html>   // priA-ec2-c  
sudo systemctl start httpd.service

# HTTP 서비스 Listen 상태 확인 
netstat -tupan | grep 80

1단계 : 대상 그룹(Back end) 생성

EC2 > Target groups > Create a target group

구분 Specify group details Target registration
NLB 경우 Choose the target type : instance
target group name : nlbA-tg
Protocol(Version):Port : TCP:80
VPC : vpcA
health check protocol : TCP
available instances : priA-ec2-a, priA-ec2-c
Ports for selected instances : 80 (Include as pending below)
 ※ 포트 상태 정상 확인
ALB 경우 Choose the target type : instance
target group name : albA-tg
Protocol(Version):Port : HTTP(HTTP1):80
VPC : vpcA
health check protocol, path : HTTP, /
available instances : priA-ec2-a, priA-ec2-c
Ports for selected instances : 80 (Include as pending below)
 ※ 포트 상태 정상 확인

2단계 : 로드 밸런서 생성

EC2 > Load balancers > Create a load balancer

구분 basic configuration network mapping security group listeners and routing
NLB 경우 load balancer name : nlbA
system : internet-facing
VPC : vpcA 
Subnet : pubA-sn-a, pubA-sn-c
- Protocol:Port : TCP:80
Forward to : nlbA-tg
ALB 경우 load balancer name : albA
system : internet-facing
VPC : vpcA 
Subnet : pubA-sn-a, pubA-sn-c
출발지 : 0.0.0.0/0
HTTP, 80 허용
Protocol:Port : HTTP:80
Forward to : albA-tg
ALB는 가용영역 2개 이상 선택 필수입니다.

3단계 : 상태 체크 결과 및 접속 도메인 확인

EC2 > Target groups > nlbA-tg or albA-tg > Targets (tab) > Health status healthy
EC2 > Load balancers > nlbA or albA > Description (tab) : DNS name 확인

EC2에서 HTTP(TCP 80) 서비스가 Listen 상태임에도 불구하고 Health status "unhealty"인 경우 확인할 부분
  - NLB는 EC2 보안그룹(Security group) 확인 :
출발지(0.0.0.0/0), 목적지 포트(TCP 80), 허용
  - ALB는 EC2 보안그룹과 HTTP Path 확인 
    1) 보안그룹 : 출발지(10.0.1.0/24, 10.0.2.0/24), 목적지 포트(TCP 80), 허용
        ※ ALB를 통과하는 패킷은 ALB 인터페이스로 SNAT 처리되므로 출발지는 pubA-sn-a/c의 IP로 바뀜
        ※ 일반적으로는 2단계 ALB에 설정한 보안그룹을 출발지에 등록하여 ALB만 허용하도록 설정
    2) ALB의 경우 Port + Path로 Health 체크를 하기 때문에 1단계에 설정한 '/'경로가 맞는지 확인 필요

EC2에 접속하여 명령어(ex : tcpdump -nei any port 80)로 ELB에서 Health check 패킷이 인입되는지 확인

4단계 : 부하분산 테스트

브라우져에서 3단계에서 확인한 nlbA or albA 도메인으로 HTTP 접속

기타 : HTTPS 통신

암호화 통신을 구성하는 경우는 ACM에 인증서를 등록한 후, 이를 ALB에 연결하는 작업이 필요합니다. 

이는 https://sh-t.tistory.com/manage/newpost/49 참조하시기 바랍니다.

반응형