본문 바로가기
운영체제 (LNX,WIN)

하나의 서버로 부족할 때? Linux Virtual Server(LVS)로 확장하자!

by 날으는물고기 2009. 11. 27.

하나의 서버로 부족할 때? Linux Virtual Server(LVS)로 확장하자!

728x90

현대 웹 서비스 환경에서는 사용자 수가 급격히 증가함에 따라 단일 서버만으로는 안정적인 서비스 제공이 어려워집니다. 이때 필요한 것이 바로 로드 밸런싱 시스템이며, 그 중에서도 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 조합으로 고가용성 구성까지 확장 가능
728x90
그리드형(광고전용)

댓글