AWS/EC2

[ Network Load Balancer ] NLB & ALB를 사용하여 서버 구축

BigCo 2023. 7. 7. 09:41

안녕하세요 오늘은 NLB와 ALB를 사용하여 서버를 구축해 보겠습니다.

 

Network Load balancer는 Application Load balancer와 다르게 LB에 고정 IP를 사용할 수 있습니다.

그래서 NLB의 고정 IP를 사용하여 온프레미스에서 특정 IP로 방화벽을 열어줄 수 있습니다. 

 

 

NLB(Network Load Balancer)의 주요 특징

- L4역할로 TCP, UDP, TLS 통신을 할때 사용한다 (HTTP/HTTPS 통신 불가)

- AWS ACM을 사용하여 TLS통신이 가능하다

- AWS EIP(Elastic IP)를 붙혀서 외부에서 접근하는 IP를 고정할 수 있다.

 

 

 

서버생성 및 Application Load Balancer 설정

public subnet에는 Bastion Server를 두었고, Private subnet에는 web server 두대를 생성했습니다.

// 모든 소프트웨어 페키지가 최신 상태인지 체크하고 설치를 진행합니다.
yum update -y

// 아파치서버를 설치해 줍니다.
yum install -y httpd

// 아파치서버를 시작합니다.
systemctl start httpd

// 아파치서버가 부팅할때마다 자동으로 시작하게 해줍니다.
systemctl enable httpd

// 아파치서버 상태를 확인합니다.
systemctl status httpd

// ALB의 DNS주소로 접근했는데 나올 웹페이지를 수정해 줍니다.
vi /var/www/html/index.html
<h1>Web Server 1 / IP....</h1>

// 아파치서버 재부팅
systemctl restart httpd

 

 

 Internal ALB 먼저 생성하겠습니다.

LB생성에 앞서 Target Group을 먼저 생성해줍니다.

 

 

타겟그룹을 생성한 후 LB를 생성하겠습니다.

 

 

 

 

 

private에 사용할 LB를 만들어야 하니까 내부 로드밸런서를 선택하여 만들어 줍니다.

 

 

내부용 로드밸런서니까 당연히 서브넷도 private subnet을 잡아줍니다.

 

 

보안그룹은 http / source 0.0.0.0, https / source 0.0.0.0 이렇게 두개 열어줬습니다.

그 이유는 NLB는 4계층 장비여서 SG이 없습니다. 그래서 상위계층의 프로토콜인 http, https를 4계층 (TCP/UDP)에서 필터링할 수 없어서 Application계층에 SG을 설정해 줍니다. ALB에서 http, htttp포트를 열어줘야 합니다.

 

 

 

이렇게 Internal ALB를 생성해줬습니다.

 

 

로드밸런서 생성 후 https 접근을 위한 리다이렉션 설정을 해주겠습니다.

 

 

 

위의 설정은 ALB에서 80포트로 들어오는 트래픽을 443포트로 리다이렉션 해주는 설정 입니다.

 

 

해당 설정은 443포트로 리다이렉션된 트레픽들을 Target Group으로 연결된 웹으로 보내주는 설정 입니다.

저는 미리 Route53에 도메인을 등록하여 acm발급을 해놨습니다.

 

 

 

Network Load Balancer 생성

NLB를 생성하기 전 NLB의 타겟그룹을 설정해 줍니다.
NLB의 타겟그룹은 대상유형을 ALB로 설정해서 위에 만든 내부 로드밸런서로 잡아줍니다.

그리고 80으로 들어온 트래픽과, 443으로 들어온 트래픽을 ALB에서 각각의 포트로 받을 수 있게 http, https로 2개의 Target Group을 만들어 줍니다. 

 

 

 

 

 

 

 

이렇게 NLB의 타겟그룹을 생성해 줬습니다. 

그럼 이제 네트워크 로드밸런서를 생성해주겠습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

NLB는 public subnet에 위치해 있으니까  매핑을 public subnet에 잡아줍니다

그리고 NLB는 ALB와 다르게 고정IP 등록이 가능합니다. 그래서 EIP를 발급받아서 고정IP 등록해줄 수 있는데 

저는 Route53에 lb를 a레코드 별칭을 사용하여 등록할거여서 고정IP는 설정하지 않았습니다. 

 

 

 

아까 만들어놨던 타겟그룹을 등록해 줍니다.

위에서 설명했듯이 80, 443 트래픽을 받아서 ALB로 보내기 위한 설정입니다.

 

 

 

 

이렇게 NLB까지 다 올리고 TG이 healthy까지 확인했습니다.

Route53 설정은 이미 게시물을 올려놨기에 따로 설정방법을 올리지 않았고 Route53에 등록된 도메인으로 접근해보겠습니다.
여기서 접속이 안되시는 분들은 Route53에 A레코드를 다시 확인해주세요!!

 

 

 

 

이렇게 NLB, ALB를 사용하여 웹페이지에 접속하는 실습을 진행했습니다.

 

 

 

bastion SG -> SSh / Source - My IP

ALB SG -> http / Source - any

                  https / Source - any

Web SG -> SSh / Source - bastion SG

                   http / Source - ALB SG

                   https / Source - ALB SG

 

 

 

참고자료