본문 바로가기
haproxy

haproxy health-check 및 backup 구성




1.health-check을 통한 balancing

# 기본적인 balance 옵션을 추가 할경우 해당 real 서버에대한 신뢰성 검사를 하지 않고 balace 알고리즘으로 무조건 넘겨준다

    global
        daemon
        maxconn 1000
        nbproc 2

    defaults
        mode http
        timeout connect 5000ms
        timeout client 50000ms
        timeout server 50000ms

    frontend http-in
        bind *:80
        default_backend servers

    backend servers
        balance roundrobin
        server server1 192.168.229.135:80 check
        server server2 192.168.229.136:80 check

 

# 위와 같이 특정 backend server 장애시 아래와 같이 연결 시도 하는 것을 확인 할 수 있다.
 

 

[root@NODE0 haproxy]# curl 192.168.229.138

node1
[root@NODE0 haproxy]# curl 192.168.229.138
<html><body><h1>503 Service Unavailable</h1>
No server is available to handle this request.
</body></html>

# check 파라미터를 추가 할 경우 한번 체크를 한뒤 해당 서버에 응답이 없을 경우 해당 서버로 연결 되지 않는다.

 

        balance roundrobin
        server server1 192.168.229.135:80 check
        server server2 192.168.229.136:80 check

 

 

# 아래 테스트처럼 node2(136) 으로 연결을 하지 않는다.

 

[root@NODE0 haproxy]# curl 192.168.229.138               

node1
[root@NODE0 haproxy]# curl 192.168.229.138

node1
[root@NODE0 haproxy]# curl 192.168.229.138

node1
[root@NODE0 haproxy]# curl 192.168.229.138

node1


# 정상적인 패킷 과정을보면 229.138 프록시 서버가 원서버 229.135 로 3way handshake 로 정상적으로 연결 되는 것을 확인 할 수 있다.




# 하지만 응답이 없는 229.136으로 syn 을 보내서 syn 에대한 syn+ack 이 정상적으로 오지 않는경우 바로 다음 서버로 연결 시도 하게 된다.


2.backup 을 통한 balancing
# backup 구성은 L4 slb backup 과 유사 하다. backup 으로 구성 될 경우 backup 이 아닌 server 로 
연결 된뒤 해당서버가 down시 backup으로 설정된 서버로 연결 된다.

# 아래와 같이 backup 파라미터를 136 으로 추가 하였다

 

  backend servers

        balance roundrobin
        server server1 192.168.229.135:80 check
        server server2 192.168.229.136:80 check backup

# 두 서버가 정상적으로 연결된경우 아래와 같이 135 node 1으로만 연결이 된다.

 

[root@NODE0 haproxy]# curl 192.168.229.138                                 

node1
[root@NODE0 haproxy]# curl 192.168.229.138

node1
[root@NODE0 haproxy]# curl 192.168.229.138

node1
[root@NODE0 haproxy]# curl 192.168.229.138

node1
[root@NODE0 haproxy]# curl 192.168.229.138


# node1 에서 httpd(80) 데몬을 중지후 테스트 하면 1번 node 1으로 연결 시도후 실패 하여 backup 으로 구성된node 2로 연결 되는 것을 확인 할 수 있다.

 

[root@NODE1 ~]# /etc/init.d/httpd stop
Stopping httpd:                                            [  OK  ]

[root@NODE0 haproxy]# curl 192.168.229.138
<html><body><h1>503 Service Unavailable</h1>
No server is available to handle this request.
</body></html>
[root@NODE0 haproxy]# curl 192.168.229.138
node2
[root@NODE0 haproxy]# curl 192.168.229.138
node2
 

3.disabled 로 일시 정지
- 사이트 관리자가 해당 config 를 유지 하고 잠시 proxy연결을 중지 하기 위해 disabled 옵션을 추가 하여 중지 할 수 있다.
해당 피어로 해당 설정시 주석 설정과 동일한 현상을 볼 수 있다.(추가 적으로 enabled 옵션은 해당 peer를 사용 한다는 파라미터 )

 

backend servers

        balance roundrobin
        server server1 192.168.229.135:80 check
        server server2 192.168.229.136:80 check disabled 

 

반응형