ai로 인해 트래픽이 미친듯이 증가하는 요즘, 이 로드밸런싱은 필수가 되었다. 물론 전에도 썼었겠지만..!
트래픽분산하는 방법을 리눅스로 구축해보기로 한다.
LVS (Linux Virtual Server) 로드 밸런싱
데이터를 분산한다는게 3way handshake처럼 논리적인 연결을 할 때는
한쪽에만 보낸다 그걸 당연히 다른쪽에 나눠서 보내면 통신이 안되니까
#LVS = 리눅스에서 리눅스 자체가 가상의 서버로 둔갑을 해서 통신을 시켜주는 기능
= Virtual server
네트워크 부하분산
여러 서버나 네트워크에 전송되는 트래픽을 분산시켜 시스템이나 네트워크의 성능 가용성 안전성을 향상시키는 기술
하나의 시스템을 데이터가 몰리지 않도록 조절해주는 기능으로 결국 여러 서버나 여러 네트워크로 고르게 데이터를 분산시켜준다
일반적인 부하분산 구현 방법 2가지
- 4계층 부하분산: ip주소와 port주소를 기반으로 트래픽을 분산하는 형태
- 7계층 부하분산 -7계층에서 컨텐츠에 따라 트래픽을 분산하는 형태
LVS 설정시 주요점
- VS라는 가상서버를 설정
- RS라는 실제 서버를 설정
- scheduler설정을 해줘야 함. 트래픽을 어떻게 분산할 것인지 규칙을 지정하는 것
스케줄러scheduler
라운드로빈(round-robin)
:첫번째 데이터를 왼쪽 서버에 보냈으면 그 다음은 오른쪽 서버에 보내고 번갈아가면서 보내는 것
가중라운드로빈(weighted round-robin)
: 서버들의사양이다를경우가중치설정을통해요청을서버에할당
서버가 왼쪽 50 성능, 오른쪽 100 성능인데 똑같이 보내면 비효율적이니까 100에 가중치를 줘서 할당
최소연결(least connection)
: 똑같은 연결을 맺어도 사용자에 따라 오래 연결을 맺고 있는 서버가 생겨 한쪽이 더 바쁘게 될 수 있음
클라이언트-서버간의 연결상태를 보고 적은 서버한테 새로운 요청을 전달
가중최소연결(weighted least connection)
: 최소연결방식에서가중치설정을통해요청을서버에할당. 성능과 연결수 둘다 고려!
실제로 만들어보자
리눅스로 LVS구축
사전준비
(로드밸런싱 할 서버 192.160.50.111, 웹서버 두개 구축함 10.1, 10.2)
로드밸런싱 서버에 아래 설정들 하면 된다.
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o ens160 -j MASQUERADE
sysctl net.ipv4.ip_forward=1
설치
dnf -y install ipvsadm
라운드 로빈 스케줄러
ipvsadm -A -t 192.168.50.111:80 -s rr
ipvsadm -a -t 192.168.50.111:80 -r 10.10.10.1 -m
ipvsadm -a -t 192.168.50.111:80 -r 10.10.10.2 -m
설정확인
ipvsadm -L
가중 라운드 로빈 스케쥴러
ipvsadm -A -t 192.168.50.111:80 -s wrr
ipvsadm -a -t 192.168.50.111:80 -r 10.10.10.1:80 -m -w 2
ipvsadm -a -t 192.168.50.111:80 -r 10.10.10.2:80 -m -w 1
연결된 트래픽 확인
ipvsadm -L -n --stats
포트번호로 확인하고 싶으면
ipvsadm -L -n
전체 초기화
ipvsadm -C
ipvsadm 설정 요소 설명
-A 가상 서버 추가
-t tcp 서버 추가
-u udp 서버 추가
-s 스케줄러 설정
-a 실제 서버 추가
-r 실제 서버 설정
-m NAT 설정
'Network' 카테고리의 다른 글
ESM 구축-실습 (5) | 2025.07.31 |
---|---|
모니터링 기능 sla/ track (선 두개 연결) (1) | 2025.07.28 |
이중화 VRRP (1) | 2025.07.24 |
vlan 설정 및 PVST설정 (1) | 2025.07.24 |
L2 스위치 이중화의 문제점 (0) | 2025.07.23 |