1. 클러스터(Cluster)
클러스터는 여러 대의 서버를 하나의 시스템처럼 동작하도록 구성한 구조입니다. 이는 단일 서버로는 충족할 수 없는 성능이나 가용성을 필요로 하는 상황에서 사용됩니다.
왼쪽 두 대는 클라이언트이고, 오른쪽 두 대는 서버이며, 중간의 서버는 모든 클라이언트 요청을 받지만 처리하지 않고 분배만 합니다. 이를 **LVS(Linux Virtual Server)**라고 부릅니다.
일반적인 클러스터 유형:
- LB(Load Balancing): 다수의 서버가 각각 일부 트래픽을 처리합니다.
- HA(High Availability): SPOF(Single Point of Failure)를 방지하고 시스템 가용성을 높입니다.
- HPC(High Performance Computing): 고성능 컴퓨팅을 위한 전략적 자원 배분입니다.
2. LVS 개념
LVS에서는 다음과 같은 용어들이 사용됩니다:
- VS(Virtual Server): 외부에서 접속하는 가상 서버.
- RS(Real Server): 실제 서비스를 제공하는 서버.
- CIP(Client IP): 클라이언트의 IP 주소.
- VIP(Virtual Server IP): VS의 외부 IP 주소.
- DIP(Director IP): VS의 내부 네트워크 IP.
- RIP(Real Server IP): RS의 IP 주소.
LVS의 주요 모드는 아래와 같습니다:
- LVS-NAT: 요청 패킷의 목적지 IP를 변경하여 전송.
- LVS-DR: 새로운 MAC 주소를 캡슐화하여 전송.
- LVS-TUN: 원본 요청 패킷에 추가적인 IP 헤더를 삽입.
- LVS-FullNAT: 요청 패킷의 소스와 목적지 IP 모두 수정.
3. NAT 모드 설정
NAT 모드는 DNAT(Data Network Address Translation) 기술을 사용하여 요청 패킷의 목적지를 특정 RS로 변경합니다.
환경 준비
- LVS 서버: 두 개의 네트워크 인터페이스를 갖습니다.
- Webserver1/2: 각각 서비스를 제공합니다.
LVS 서버 설정
# 네트워크 설정
cat > /etc/NetworkManager/system-connections/eth0.nmconnection <<EOF
[connection]
id=eth0
type=ethernet
interface-name=eth0
[ipv4]
address1=172.25.254.100/24,172.25.254.2
method=manual
dns=114.114.114.114;
EOF
nmcli connection reload && nmcli connection up eth0
# IP 포워딩 활성화
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
Webserver 설정
# Webserver1 예시
cat > /etc/NetworkManager/system-connections/eth0.nmconnection <<EOF
[connection]
id=eth0
type=ethernet
interface-name=eth0
[ipv4]
address1=192.168.0.10/24,192.168.0.100
method=manual
dns=114.114.114.114;
EOF
nmcli connection reload && nmcli connection up eth0
# HTTP 서비스 설치 및 설정
yum install httpd -y
echo "webserver1 - 192.168.0.10" > /var/www/html/index.html
systemctl enable --now httpd
LVS 설정
# ipvsadm 설치 및 초기화
dnf install ipvsadm -y
ipvsadm -C
# 가상 서버 추가 및 리얼 서버 연결
ipvsadm -A -t 172.25.254.100:80 -s rr
ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m
ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m
# 테스트
for i in {1..10}; do curl 172.25.254.100; done
4. DR 모드 설정
DR 모드는 데이터 패킷이 Layer 2까지 직접 전달되는 방식입니다. 이는 엔터프라이즈 환경에서 가장 많이 사용됩니다.
환경 구성
- Client: 클라이언트 머신.
- Router: 네트워크 라우팅.
- LVS: 가상 서버 역할.
- Webserver1/2: 서비스 제공 서버.
LVS 서버 설정
# 네트워크 설정
cat > /etc/NetworkManager/system-connections/eth1.nmconnection <<EOF
[connection]
id=eth1
type=ethernet
interface-name=eth1
[ipv4]
address1=192.168.0.50/24,192.168.0.100
method=manual
dns=114.114.114.114;
EOF
nmcli connection reload && nmcli connection up eth1
# VIP 설정
ip addr add 192.168.0.200/32 dev lo
Webserver 설정
# ARP 무시 설정
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
# VIP 추가
ip addr add 192.168.0.200/32 dev lo
LVS 규칙 설정
# 초기화 및 규칙 추가
ipvsadm -C
ipvsadm -A -t 192.168.0.200:80 -s wrr
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g -w 1
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g -w 2
# 테스트
for i in {1..10}; do curl 192.168.0.200; done
5. LVS 스케줄링 알고리즘
LVS는 다양한 스케줄링 알고리즘을 지원하며, 주로 다음 두 가지로 나뉩니다:
- 정적 스케줄링: 미리 정의된 규칙에 따라 트래픽을 분배.
- 동적 스케줄링: 실시간 트래픽 상태에 따라 적응적으로 분배.