본문 바로가기
Cloud/GCP

[GCP] LB(Load Balancer) L7/L4 기능 설명과 구성 방법

by SystemAnswer 2022. 10. 19.
반응형

GCP에서 제공하는 LB(Load Balancing)는 크게보면 External과 Internal로 구분할 수 있고 용도에 따라서 HTTP(s), TCP, UDP, ESP, or ICMT Traffic으로 구분해서 사용할 수 있다. External의 경우 전역 또는 리전에 따라 트래픽 유형이 달라 질 수 있다. Internal의 경우 전역에 걸처 Traffic를 분산할 수 없고 오직 리전에 한해서만 Traffic 분산이 가능하다.

 

아래 내용에서는 LB를 선택하는데 필요한 기본적인 개념을 다뤄보고, GCP에 어떻게하면 LB를 구성하여 서비스를 할 수 있는지 하나씩 알아보도록 하겠습니다.

 

기능 설명이 필요없고 구성 방법을 알고 싶으면 "GCP Load Balancer 구성 목표"부터 읽으시면 됩니다.

 

Load Balancer 기능 비교 및 선택 방법

 

Traffic Type

Traffic 종류를 보면 일반적인 LB, Proxy LB, Network LB로 구분되는 것을 볼 수 있다.

특히 Network LB의 경우 LB를 생성한 후 Health Check하는 부분에서 Firewall 설정 부분이 상이하므로 주의가 필요하다.

HTTP(s), TCP와 같이 자주 사용하는 방식의 경우 Network LB를 사용할 경우가 별로 없기 때문에 크게 신경안써도 된다.

Network LB를 사용하는 이유는 DSR(Direct Server Return) 기능을 사용하기 위한 것이다.

 

일반적인 LB와 다르게 동작하는 Network Load Balancer의 특징

주된 특징은 DSR(Direct Server Return) 기능으로 요청이 들어온 트래픽이 응답을 할때 proxy방식처럼 LB를 통해서 Traffic이 output되는게 아니라 요청을 보낸 client와 직접연결되어 Traffic 통신이 되게 된다.

이러한 경우 client와 직접 통신을 하기 때문에 높은 성능을 요구되어 질때 사용 할 수 있다.

 

GCP Load Balancer 구성 목표

간단히 테스트를 할 수 있는 WEB 서버를 생성하고 Internal L4 LB, Internal L7 LB를 각 구성해서 WEB서버를 바인딩한다.

바인딩된 WEB서버에 L4, L7 두가지 방식으로 모두 요청하고 응답이 제대로 되는지와 분산이 제대로 동작하는지 확인해보겠습니다.

 

서비스 생성 리스트

1. WEB Server : vm-demo-web01

2. Images : image-vm-demo-web

3. Instance templates : template-image-vm-demo-web

4. Instance groups : vmgroup-demo-web

5. Internal L4 LB : lb-demo-internal-l4-web

6. Internal L7 LB : lb-demo-internal-l7-web

7. Health checks : hc-vm-demo-web

8. Firewall : 

 

GCP Load Balancer 구성 방법

1. 신규 서버 생성 CentOS 7로 생성

1.1 name : vm-demo-web01

 

2.Test WEB Server 구성하기

2.1 패키지 설치 : httpd, php

2.2 httpd.conf 파일 수정

2.3 index.php 파일 생성

#####

# 패키지 설치
[root]# yum install -y httpd php
[root]# systemctl enable httpd
[root]# systemctl start httpd

# AddType application/x-httpd-php .php 추가
# Listen 80 => 0.0.0.0:80 변경
[root]# vi /etc/httpd/conf/httpd.conf

Listen 0.0.0.0:80

<IfModule mime_module>
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType application/x-httpd-php .php
</IfModule>

# Web Test용 index.php 파일 생성
[root]# vi /var/www/html/index.php
<!DOCTYPE html>
<html>
        <body>
                <h1><?php echo "Hostname is: " .gethostname(); ?></h1>
        </body>
</html>

#####

 

2. WEB Server를 Instance groups로 만들기

2.1 Compute Engine => Images 생성

2.2 Instance templates 생성

Template를 생성할 때에는 앞서 생성한 Image를 사용하여 만들어야 하기 때문에 "Boot disk" 생성 시에 "Custom Images"에서 기 생성된 image를 선택해주면 된다. 나머지 옵션 중에서는 Networking부분에서 현재 project에서 사용 중인 VPC를 선택해주면 된다.

2.3 Instance groups 생성

Instance groups를 생성하게 되면 설정된 Instance 개수 만큼 생성되며 특정 임계치에 따라서 오토스케일링이 되게된다. 따라서 이번 테스트에서는 오트스케일링 설정은 disable하여 진행할 것이기 때문에 LB의 부하분산 확인을 위해서 2대만 생성되도록 설정한다.

Name : vmgroup-demo-web

Number of instances : 2

Location : Multiple zones

Autocaling mode : off: do not autoscale

Instance groups 설정이 완료되면 "VM Instances"에 무작위 Name으로 생성된 서버를 확인 할 수 있다.

 

3. Internal L4 LB 생성

3.1 TCP Health Check 생성

LB를 통해서 VM에 Traffic을 전달하기 위해서는 LB에서 VM을 Health Check하여 통신이 정상적으로 가능한지 확인을 해야한다. WEB 서버는 TCP 80 port를 사용하기 때문에 80 port에 대한 Health Check 서비스를 생성하도록 하겠다.

Scope : Regional(Seoul)

Protocol : TCP

Port : 80

3.2 TCP Load Balancing 생성

TCP Load Balancing를 생성하는데 Internal로 생성하여 테스트를 할 계획이다.

Name : lb-demo-internal-l4-web

Region : Seoul

Network : vpc-demo

Instance group : vmgroup-demo-web

Health check : hc-vm-demo-web

3.3 Load balancer L4 생성 결과

LB에 접근가능한 IP는 private IP 172.22.36.8로 가능하다. 

Instance group의 Healthy에 error가 발생한다면 LB를 통해서 VM에 접근이 불가능하다.

이러한 경우 방화벽 문제가 있을 수 있으니 글 마지막에 Firewall 설정 부분을 참고하자

 

4. Internal L7 LB 생성

HTTP(S) LB를 생성하는 경우 사전에 "Reserved proxy-only subnets for load balancing" 대역을 만들어야한다.

해당 대역은 /26를 필요로하니 IP design할때 주의해서 하자

4.1 HTTP(S) Load Balancing을 생성한다.

4.2 Backends & Health Check 설정

Name : backend-lb-demo-internal-l7-web-http-80

Protocol : HTTP

Port : http

Instance group : vmgroup-demo-web

Health Check : hc-vm-demo-web-http-80

4.3 Routing rules

4.4 Frontend configuration

4.5 Load balancer L7 생성 결과

 

WEB Load Balancer Test 결과

1. lb-demo-internal-l4-web의 IP 172.22.36.8로 접근하면 부하분산이 제대로 되고 있는 것을 확인 할 수 있다.

 

2. lb-demo-internal-l7-web의 DNS web.demo.com으로 접근하여 테스트

반응형

댓글