HAproxy - 로드밸런싱
Keepalived - 이중화
예를 들어 Web Service를 한다고 할 때 보통 Web Server를 하나만 두는 경우는 거의 없습니다.
갑자기 오류가 생겨서 서비스를 할 수 없다고 할 때 방법이 없기 때문입니다. 여러 Web Server를 만들어두고 사용자들이 접속을 할때 적당히 분배를 해야하는데
이 기능을 물리적으로 스위치가 가능하지만 HAproxy 로도 가능합니다.
이중화를 하는 이유는 만약 HAproxy를 지원하는 서버가 다운 된다면 Web Server가 아무리 많아도 접근 할 수 없기 때문에
HAproxy를 지원하는 서버또한 하나를 더 두어 Active - Standby 상태로 둡니다. 하나가 다운 되면 Keepalived가 바로 다른 서버에서 서비스를 할 수 있게 만들어줍니다.
- 서버 구성
Linux - CentOS 7.3 ( HAproxy & Keepalived ) - MASTER : 172.17.212.12/24 BACKUP : 172.17.212.13/24
Linux - CentOS 7.3 ( Apache ) WEB 1 : 172.17.212.14/24 WEB 2 : 172.17.212.15/24
VLAN : 172.17.212.11 ( keepalived )
- 설정
초기 설정 ( MASTER / BACKUP )
# vi /etc/sysctl.conf
net.ipv4.ip_nonlocal_bind=1
net.ipv4.ip_forward=1
# sysctl -p
MASTER / BACKUP 동일하게 설정
# vi /etc/haproxy/haproxy.cfg // yum으로 설치 한 경우.
#--------------------------------------------------------------------- # Global settings #--------------------------------------------------------------------- global log 127.0.0.1 local2
chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon
stats socket /var/lib/haproxy/stats // 소켓 생성
defaults mode http log global option httplog // 클라이언트 IP,URL,상태코드,bytes등 웹로그까지 syslog로 보냄 option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000
frontend http-in // frontend + 이름 bind 172.17.212.11:80 // 172.17.212.11의 80포트의 요청을 bind(연결) default_backend app // default_backend는 app 이름을 가진 backend로 연결 mode http // mode는 http
backend app // backend + 이름 balance roundrobin //로드밸런싱 알고리즘 mode http // mode http server web1 172.17.212.14:80 check // 웹 서버 server web2 172.17.212.15:80 check // check : 서버 상태 log 기록 |
|
MASTER
# vi /etc/keepalived/keepalived.conf // 역시 yum 설치
! Configuration File for keepalived
global_defs { // 기본 값 router_id LVS_DEVEL
}
vrrp_instance VI_1 { state MASTER interface eth0 // 사용할 인터페이스 virtual_route_id 51 // 연결된 keepalive끼리 숫자만 맞으면 아무 숫자나 가능(0-255) priority 101 // MASTER가 BACKUP보다 높은 숫자여야 함 advert_int 1 //vrrp 패킷 송신 간격, 초단위로 지정 authentication { auth_type PASS // 평문 인증 설정 auth_pass 1111 // MASTER와 BACKUP 같은 값 } virtual_ipaddress { 172.17.212.11 // keeplive virtual ip } } |
|
BACKUP
# vi /etc/keepalived/keepalived,conf
|
! Configuration File for keepalived
global_defs { // 기본 값 router_id LVS_DEVEL
}
vrrp_instance VI_1 { state BACKUP interface eth0 // 사용할 인터페이스 virtual_route_id 51 // 연결된 keepalive끼리 숫자만 맞으면 아무 숫자나 가능 priority 100 // MASTER가 BACKUP보다 높은 숫자여야 함 advert_int 1 authentication { auth_type PASS // 평문 인증 설정 auth_pass 1111 // MASTER와 BACKUP 같은 값 } virtual_ipaddress { 172.17.212.11 // keeplive virtual ip } } |
|
- 결과
VLAN으로 접속하면 WEB 페이지가 보이고 새로고침을 몇번 누르면 WEB1과 WEB2가 바뀌는걸 확인 가능
MASTER 서버를 종료 시켜도 서비스가 된다.
'Linux > Linux Network' 카테고리의 다른 글
SAMBA (0) | 2017.09.15 |
---|---|
NFS (0) | 2017.09.14 |
Web Mail Server (0) | 2017.09.13 |
MAIL Server (0) | 2017.09.13 |
FTP (0) | 2017.09.13 |