1 분 소요

로드 밸런싱

LVS(Linux Virtual Server)

2022-11-11-01lvs


구성도

2022-11-11-02구성도


Director 기본 설정

2022-11-11-03통신체크


LVS 패키지 설치

yum -y install ipvsadm


IP Forwarding

vi /etc/sysctl.conf

net.ipv4.ip_forward=1      << 내용 추가

[root@localhost ~]# sysctl -p      << 잘 들어갔는지 확인
net.ipv4.ip_forward = 1                


Virtual IP 설정

ifconfig ens32:1 172.16.0.10 netmask 255.255.255.0

2022-11-11-04vip

2022-11-11-05핑체크


ipvsadm 설정

iptables -F        << 방화벽 해제

부하분산 설정
Virtual IP 10 -> RealIP 11) 12) , 80

ipvsadm -A -t 172.16.0.10:80 -s rr     << 172.16.0.10:80 으로 들어오는 연결은 rr(Round robin) 이라는 방식으로 부하분산 할것  

Virtual IP 10 -> RealIP 11)
ipvsadm -a -t 172.16.0.10:80 -r 172.16.0.11:80

Virtual IP 10 -> RealIP 12) 
ipvsadm -a -t 172.16.0.10:80 -r 172.16.0.12:80

2022-11-11-06설정




RealServer 1: 172.16.0.11, 12] 기본 설정

2022-11-11-07기본설정

2022-11-11-08기본설정


패키지 설치

yum -y install httpd arptables_jf


httpd 설정

172.16.0.11
[root@localhost ~]# echo 11 > /var/www/html/index.html
[root@localhost ~]# cat /var/www/html/index.html
11

172.16.0.12
[root@localhost ~]# echo 12 > /var/www/html/index.html
[root@localhost ~]# cat /var/www/html/index.html
12

2022-11-11-09httpd


Virtual IP 설정

ifconfig ens32:1 172.16.0.10 netmask 255.255.255.0

2022-11-11-10ipasdam


arptables_jf 설정

VIP 를 찾는 arp는  차단
arptables -A INPUT -d 172.16.0.10 -j DROP 

172.16.0.10 으로 응답시 arp 로 알아낸 172.16.0.10 의 MAC 주소를 172.16.0.11, 12 의 MAC 주소로 대체
 arptables -A OUTPUT -s 172.16.0.10 -j mangle --mangle-ip-s 172.16.0.11, 12

2022-11-11-12arptables

2022-11-11-11arptables


확인

2022-11-11-13결과

172.16.0.10에 접속을 했지만 각각 분산되서 172.16.0.11, 12가 보입니다.




HA Proxy

L4 기반의 L/B 를 제공하는 솔루션

  • Port no 를 기반으로 하는 부하분산 을 제공
  • L7 기반 동작도 가능


구성도

2022-11-11-14구성도


기본 설정

2022-11-11-15설정

2022-11-11-16설정


IP Forwarding

# vim /etc/sysctl.conf
net.ipv4.ip_forward=1        << 내용 추가

# sysctl -p                  << 확인
net.ipv4.ip_forward = 1


패키지 설치

yum -y install haproxy
iptables -F            << 방화벽 해제


HA proxy 설정

vi /etc/haproxy/haproxy.cfg 

 63 #frontend  main *:5000            << 주석
 64 frontend  main *:80               << 추가
 
 69     #default_backend             app      << 주석
 70     default_backend             static    << 추가
 
 77     #server      static 127.0.0.1:4331 check  << 주석
 78     server      static 192.168.138.11:80 check << 추가
 79     server      static 192.168.138.12:80 check << 추가


패키지 재시작

2022-11-11-18패키지


VirtualIP 설정

ifconfig ens32:1 172.16.0.10 netmask 255.255.255.0

2022-11-11-19인터페이스


Web Server 1,2 설정

yum -y install httpd   << httpd 설치
iptables -F            << 방화벽 해제

2022-11-11-17httpd


확인

2022-11-11-20결과확인

업데이트:

댓글남기기