본문으로 바로가기

HAproxy & Keepalived

category Linux/Linux Network 2018. 5. 25. 16:13

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