현대 웹 서비스 환경에서는 사용자 수가 급격히 증가함에 따라 단일 서버만으로는 안정적인 서비스 제공이 어려워집니다. 이때 필요한 것이 바로 로드 밸런싱 시스템이며, 그 중에서도 LVS(Linux Virtual Server)는 오픈소스 기반으로 강력하면서도 유연한 L4 로드밸런서 역할을 수행하는 솔루션입니다.
1. LVS란 무엇인가요?
Linux Virtual Server(LVS)는 리눅스 커널에서 제공하는 IPVS(IP Virtual Server) 모듈을 기반으로 하는 Layer 4(Transport Layer) 로드 밸런서입니다. 즉, TCP/UDP 요청을 전송 계층에서 판단하여 여러 서버로 트래픽을 분산 처리할 수 있도록 해줍니다.
주요 특징
- 오픈소스 기반 (비용 부담 없음)
- L4 수준에서 빠른 패킷 처리
- 다양한 스케줄링 알고리즘 제공
- 고가의 L4 스위치 대안 가능
2. LVS의 로드밸런싱 알고리즘 4가지
LVS는 단순한 라운드 로빈 외에도 여러 상황에 적합한 로드밸런싱 방식들을 지원합니다.
알고리즘 이름 | 설명 |
---|---|
RR (Round Robin) | 요청을 순차적으로 서버에 분산 |
WRR (Weighted Round Robin) | 서버 성능에 따라 가중치 부여 |
LC (Least Connection) | 현재 연결 수가 가장 적은 서버 선택 |
WLC (Weighted Least Connection) | 연결 수 + 서버 성능 가중치 고려 |
실서비스에서 서버마다 스펙이 다르다면 WRR/WLC 방식이 특히 효과적입니다.
3. LVS 구성 방식의 3가지 형태
LVS는 트래픽 분산을 위한 네트워크 구성 방식을 다양하게 제공합니다.
방식 | 설명 | 특이사항 |
---|---|---|
NAT(Network Address Translation) | LVS가 모든 패킷을 전달 및 응답 | 성능 병목 발생 가능 |
DR(Direct Routing) | 요청만 LVS 거치고, 응답은 웹서버가 직접 클라이언트로 | 가장 많이 사용됨 |
IP Tunneling(IPIP) | 터널링으로 Real 서버와 통신 | 지리적 분산에 유리 |
4. DR(Direct Routing) 방식 실습 예시 (CentOS 기준)
4-1. 실습 환경
구성 요소 | IP 주소 |
---|---|
LVS (Director) | 192.168.10.100 |
Web1 | 192.168.10.20 |
Web2 | 192.168.10.30 |
Virtual IP | 192.168.10.10 |
4-2. LVS 서버 구성
1) ipvsadm 설치 및 확인
yum -y install ipvsadm
ipvsadm
2) VIP 설정
ifconfig eth0:1 192.168.10.10 netmask 255.255.255.0 up
재부팅 시 사라지므로 /etc/sysconfig/network-scripts/ifcfg-eth0:1 생성 권장
3) 패킷 포워딩 활성화
vi /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
4) 로드밸런싱 룰 설정 (RR 방식)
ipvsadm -A -t 192.168.10.10:80 -s rr
ipvsadm -a -t 192.168.10.10:80 -r 192.168.10.20:80 -g
ipvsadm -a -t 192.168.10.10:80 -r 192.168.10.30:80 -g
-g는 gatewaying(Direct Routing) 의미
-s rr 외에도 wrr, lc, wlc 등 사용 가능
5) 설정 저장
service ipvsadm save
chkconfig ipvsadm on
5. Real 서버(Web1, Web2) 구성
1) VIP 설정
ifconfig lo:0 192.168.10.10 netmask 255.255.255.255 up
2) ARP 응답 방지 설정
LVS와 Real 서버가 같은 네트워크 상에 있을 경우, Real 서버가 VIP에 대해 ARP 응답을 해버리는 문제가 발생할 수 있습니다. 이를 방지하기 위해 arptables_jf를 설정합니다.
yum -y install arptables_jf
arptables -A IN -d 192.168.10.10 -j DROP
arptables -A OUT -s 192.168.10.10 -j mangle --mangle-ip-s 192.168.10.20
/etc/init.d/arptables_jf save
chkconfig arptables_jf on
저장된 설정은 /etc/sysconfig/arptables에 기록됩니다.
보안 점검 포인트
항목 | 설명 및 가이드 |
---|---|
접근제어 | LVS 및 Real 서버에 방화벽/보안 그룹 구성 |
패킷 포워딩 제어 | sysctl 설정으로 불필요한 IP 포워딩 차단 |
LVS 접근 로그 | iptables 로 로깅하거나, LVS 앞단에 L7 Proxy 활용 |
ARP 응답 통제 | 위 설명대로 ARP 우회 설정 필수 (ARP Spoofing 방지) |
운영 모니터링 | ipvsadm -L --stats , watch 명령으로 상태 점검 |
고가용성 | keepalived 등을 연동하여 LVS 이중화 구성 고려 |
마무리 요약
- LVS는 고성능 L4 로드밸런서로 서버 확장의 좋은 대안
- DR 방식은 응답 패킷이 LVS를 우회하기 때문에 성능 효율이 높음
- 다양한 스케줄링 방식을 제공하여 상황 맞춤형 구성 가능
- ARP 문제 해결과 구성 자동화가 실제 운영의 핵심
활용 팁
- 단순한 라운드 로빈 목적이라면 DNS 기반 로드밸싱이 더 간단
- 성능, 연결 수에 따라 다르게 분산하고 싶다면 LVS 도입 고려
- LVS + Keepalived 조합으로 고가용성 구성까지 확장 가능
댓글