[Aws cloud school 35일차]_GCP LB의 종류

miniPig·2024년 7월 2일

AWS cloud school

목록 보기
18/31

<로드밸런스 종류 알아보기>

이제 로드밸런스의 종류를 GCP에서 알아보자!

1. 애플리케이션 부하분산기

→ 애플리케이션 부하분산기를 선택하면 공개 또는 내부 설정으로 연결된다.

→ application layer의 부하분산기이기 때문에 공개 여부만 설정하면 된다.

→ application layer의 부하분산기이기 때문에 Layer 7에서 동작한다.

2. 네트워크 부하분산기 - 프록시/패스스루

→ 네트워크 부하분산기를 선택했더니 프록시와 패스 스루 중 선택하라는 단계가 나온다.

→ 네트워크 부하분산기이기 때문에 Layer4 에서 동작한다.

→ 애플리케이션 부하분산기보다 가볍기 때문에 더 빠르게 만들어진다.

→ 프록시 부하분산기를 사용하면 client의 IP는 보이지 않음 → 프록시(LB)의 IP 주소가 보임!

→ client의 IP를 확인하기 위해 X-frowarded for 사용!

→ 패스 스루 부하분산기를 이용하면 client의 IP 주소가 보임!

X-Forwarded For : 실제 클라이언트의 IP 주소 전달

HTTP 요청 헤더의 하나로, 웹 서버나 로드 밸런서 앞단의 프록시 서버를 통해 웹 서버에 접근한 클라이언트의 원본 IP 주소를 식별하는 데 사용

역할과 사용 예시

  1. 클라이언트 IP 식별 : HTTP 요청이 로드 밸런서나 프록시 서버를 거치면, 웹 서버는 기본적으로 이 프록시 서버의 IP 주소만 볼 수 있다. X-Forwarded-For 헤더를 통해 실제 클라이언트의 IP 주소를 파악할 수 있다.
  2. 로드 밸런서 구성 : 로드 밸런서를 사용하는 경우, 로드 밸런서는 클라이언트로부터 받은 요청을 백엔드 서버에 전달한다. 이 때 클라이언트의 IP 주소를 X-Forwarded-For 헤더에 포함하여 전달할 수 있다.

X-Forwarded For 헤더 예시

GET /index.html HTTP/1.1
Host: example.com
X-Forwarded-For: 192.0.2.1, 203.0.113.195

💡 나의 언어로 정리하자면,
프록시로 만든 부하분산기를 사용하게 되면 클라이언트의 IP는 보이지 않는다.
이를 해결해줄 수 있는 것은 X-Forwarded-For !!! 이것의 헤더에 클라이언트 IP가 포함되어 있다.


이제 이렇게 부하분산기의 종류에 대해서 알아봤다면,

각 부하분산기 종류의 실제 동작을 보자!!

1. vm1과 web1, web2 모두 공개 IP, 내부 IP 만들고

//web1과 web2
sudo yum install -y nginx
sudo systemctl start nginx
sudo su 
echo "This is web1" > /usr/share/nginx/html/index.html

sudo systemctl daemon-reload
sudo systemctl start nginx
sudo systemctl enable nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.

web1과 web2에는 nginx로 This is web1, This is web2 나오게 만들어주고,

nginx에 심볼릭 링크까지 걸어주기!

2. 인스턴스 그룹 만들기

→ unmanaged ig으로 web1과 web2 선택해서 만들기

→ 인스턴스 그룹 명은 web-ig

3. 로드밸런스 만들기

[애플리케이션 유형으로 부하 분산기 만들기]

4. web1 공개 IP 접속해서 확인하기

애플리케이션 유형으로 만든 부하 분산기에서 누구의 IP가 찍히는지 확인해보기!

💡 무엇을 확인해야할까?
[root@web1 nginx]# tail -f access.log 를 통해
애플리케이션 부하분산기를 통해 ngnix로 접근하는 IP를 확인할 수 있다.
→ 애플리케이션 부하분산기이니까 부하분산기의 IP 주소가 보여야 한다!


[chohyeon1208@web1 ~]$ sudo su     //root 권한으로 바뀌는 명령어
[root@web1 chohyeon1208]# clear
[root@web1 chohyeon1208]# cd /var/log/nginx/
[root@web1 nginx]# ls

[root@web1 nginx]# cat access.log
[root@web1 nginx]# head access.log
[root@web1 nginx]# tail access.log

**[root@web1 nginx]# tail -f access.log   
//Nginx 웹 서버의 접근 로그(access.log)를 실시간으로 모니터링**
//위 명령어의 결과는 아래에서 확인하기

→ 애플리케이션 유형으로 만든 부하분산기이니까 부하분산기의 IP가 보임

→ 부하분산기 삭제 (백엔드도 삭제)

5. 새로운 네트워크-패스스루 부하분산기 생성

6. web1 공개 IP 접속해서 확인하기

[root@web1 nginx]# tail -f access.log

→ 패스스루로 로드밸런스를 만들어주니까 클라이언트 IP가 그대로 찍히는 것을 확인할 수 있음!

프록시 부하분산기로 만들면 프록시 즉 로드밸런스의 IP주소가 찍힘!!

✔️ 패스 스루와 프록시 LB의 차이점

  • 패스 스루 LB는 클라이언트의 IP 주소가 보임
  • 프록시 LB는 프록시, 즉 LB의 IP 주소가 보임

0개의 댓글