본문 바로가기
Server/Web

L4 로드밸런서 구축 및 활용

by 얽디 2022. 5. 7.

1. L4 알고리즘 개념 이해

L4 로드밸런서란 한 서버로 집중되는 트래픽 및 부하를 막기위해

L4 (OSI 7계층 중 4계층)을 이용해 연결된 서버로 client 접속을 각각 부하분산을 시켜줍니다.

 

로드밸런서 구성도

로드밸런서 알고리즘 

부하분산 알고리즘으로는 여러가지가 존재하나 몇가지만 알아보겠습니다.

 

1.Round-robin 

실서버로 세션을 IP상관 없이 순차적으로 연결해줍니다.

예시 ) 서버 1, 서버 2, 서버3, 서버4 가 있다고 가정해봅니다.  (n) --> session

서버1 --- (1),(5)

서버2 --- (2),(6)

서버3 --- (3),(7)

서버4 --- (4)

위와 같은 방식으로 순차적으로 각각 서버에 세션을 연결해줍니다.

 

순차적으로 세션을 서버에 균등하게 분배가 가능하나

세션이 보장되지 않습니다. --> 장기간 세션을 유지해야 하는 서버에는 권장드리지 않습니다.

 

2.Source hashing

Client IP를 기준으로 Hashing처리(해석할수 없는 언어로 암호화)하여 서버에 각각 분배하는 방식입니다.

예시 ) 서버 1, 서버 2, 서버3, 서버4 가 있다고 가정해봅니다. A~F는 고객PC(IP로 분류)

서버1 --- A ,C

서버2 --- B ,D

서버3 --- E

서버4 --- F

동일한 IP로 들어올 시 이전 연결해줬던 서버로 지속적으로 연결해줍니다.

라운드로빈과 다르게 세션을 유지해야하는 사이트(인증, 보안)에서 주로 사용됩니다.

 

3.Least Connection

서버 확인 시 현재 세션량을 비교하여 가장 적은쪽으로 연결해줍니다.

허나 이 방식은 세션 수를 지속적으로 고려하여 약간의 메모리를 사용합니다.

기본 알고리즘으로 많이 사용되어집니다.

예시 ) 서버 1, 서버 2, 서버3이 있다고 가정해봅니다. (1)~(5) 기존 연결되어 있는 세션 (6)연결해줘야할 세션

서버1 --(1),(2)

서버2 --(3),(4)

서버3 --(5)       <---- (6) :  세션 수가 가장 적은 서버3으로 연결

 

2. L4 서비스 기능 구축

웹서버 구축

  • 구축 환경
    웹서버
  • CentOS 7.9
  httpd 2.4 (yum 설치)

부하분산을 시켜 줄 서버 2대이상 준비합니다. (웹 서버)

해당 서버에 httpd 데몬을 설치 후 확인할 수 있는 html 파일을 생성합니다.

httpd Document 경로에 test.html 파일을 서버당 각각 생성하여 주었고 내용은 아래와 같습니다.

서버1  → test server 1 

서버2  → test server 2

httpd 실행을 시켜줍니다.

service httpd start

 

실행된 httpd 포트 확인 (서버1, 서버2)

로드밸런서 구축 및 SSL 적용

로드밸런서 구축

iwinv 로드밸런서 서비스를 이용해 구축하였습니다.

(aws등 많은 클라우드 사이트에서 로드밸런서 서비스를 제공합니다.)

포트 및 ssl 적용이 가능합니다.

알고리즘은 Round Robin 방식을 적용하였습니다.

로드밸런서 포트와 포워딩 될 서버 포트를 지정합니다.

모니터링 대상 페이지 → 웹서버 Health Check할 파일

테스트 서버1, 서버2 모두 지정하여 설정해주고 생성합니다.

서버 경로에 있는 test.html 파일이 정상적으로 Health Check 시 로드밸런서 장비에서

아래 서버로 부하분산을 시켜줍니다.

ssl 적용

로드밸런서에 ssl적용을 하는 이유는 로드밸런서에 적용 시 웹서버에 각각 따로 인증서 적용을 하지 않아도 되기 때문에

구축 작업이 더욱 수월합니다.

인증서 파일 중 key.pem, crt.pem내용을 각각 복사하여 입력 후

저장하면 ssl 인증서가 관리 콘솔에 저장됩니다.

(ssl 인증서 업체마다 파일 이름이 다른 경우가 있으나

아래처럼 PRIVATE KEY——, CERTIFICATE ——로 시작하는 파일을 찾아 입력해줍니다.)

해당 인증서를 로드밸런서에 연결하면 정상적으로 인증서 적용이 되는 것을 확인할 수 있습니다.

도메인 및 ssl 적용 후 새로고침으로 확인 시

정상적으로 로드밸런서가 진행되는 것을 확인할 수 있었습니다.

 

log 확인

웹서버 access.log확인 시 client IP가 로드밸런서 IP로 확인됩니다.

이때 httpd.conf에서 설정을 변경해주면

access.log파일에서 Client IP로 출력되는 것을 확인하실 수 있습니다.

설정 방법

  1. 설정파일 수정

vi /etc/httpd/conf/httpd.conf or /usr/local/apache/conf/httpd.conf

(이전 LogFormat 내용 주석처리 또는 삭제 후 해당 내용 추가합니다.)


LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
...

2.데몬 재실행

설정 변경 후 httpd 데몬 재실행합니다.

service httpd restart 또는 /etc/init.d/apachectl restart 

확인 시 정상적으로 Client IP가 access.log에 출력됩니다.

Round Robin access.log

Source Hashing 알고리즘으로 변경하여 각각 1,2 서버에 다른 IP를 가진 기기에서 접속 테스트 시

지속적으로 동일한 웹서버로 연결되는 것을 확인할 수있었습니다. 

 

(웹서버 환경, LogFormat 설정 동일)

 

'Server > Web' 카테고리의 다른 글

[linux] Rhymix 설치  (0) 2024.06.21
linux 웹서비스 접속 느림불가 현상 원인 파악  (0) 2022.01.15
Nginx, Apache, Tomcat 비교  (0) 2022.01.12
apache 웹사이트 접속자 수 확인  (0) 2021.12.20
apache error페이지 출력 설정  (0) 2021.12.20

댓글