[Redundancy] 07. HAProxy 구성 (2) - 모니터링, ACL 설정

Date:     Updated:

카테고리:

태그:


07-1. 모니터링 설정



■ HAProxy 통계 설정

[root@dlp ~]# vi /etc/haproxy/haproxy.cfg

# backend 섹션에 추가
backend backend_servers
    # 통계 리포트 실행
    stats enable
    # 통계 사이트에 대한 인증 정보 (ID:PW)
    stats auth admin:adminpassword
    # HAPoxy 버전 숨기기
    stats hide-version
    # HAProxy 호스트 이름 표시
    stats show-node
    # 새로 고침 시간
    stats refresh 60s
    # 통계 리포트 URI
    stats uri /haproxy?stats

[root@dlp ~]# systemctl restart haproxy


■ 결과 확인

0111

0222


07-2. ACL 설정


HAProxy ACL을 설정하여 규칙에 따라 백엔드 서버로 요청을 분산할 수 있다. ACL을 HAProxy 서버에 설정한 호스트 이름이나 도메인 이름의 요청을 받기 위해 DNS를 설정해야 한다.


■ ACL 구문

“메뉴얼 참고”

acl <aclname> <criterion> [flags] [operator] [<value>] ...


■ HAPoxy 구성

# 구성
-----------+----------------------+
           |                      |
           |192.168.219.134       |
+----------+-----------+          |
|   [ dlp.test.srv ]   |          |
|        HAProxy       |          |
+----------------------+          |
                                  |
    ------------+-----------------+--------------+----------
                |                 |              |          
                |192.168.219.135  |              |192.168.219.136 
    +-----------+----------+      |  +-----------+----------+
    | [ node01.test.srv ]  |      |  | [ node02.test.srv ]  |
    |      Web Server#1    |      |  |      Web Server#2    |
    +----------------------+      |  +----------------------+
                                  |
         -------------+-----------+--------------+----------
                      |                          |          
                      |192.168.219.137           |192.168.219.10 
          +-----------+----------+   +-----------+----------+
          |  [ node03.test.srv ] |   |   [ www.test.srv ]   |
          |      Web Server#3    |   |      Web Server#4    |
          +----------------------+   +----------------------+


■ HAPoxy 서버 - ACL 설정

[root@dlp ~]# vi /etc/haproxy/haproxy.cfg

frontend http-in
        bind *:80
        option             forwardfor

        # ACL 설정
        # HTTP 요청 헤더의 [Host]가 [node01.test.srv]인 경우
        acl host_node01 hdr(Host) -i node01.test.srv

        # HTTP 요청 헤더의 [Host]가 [node02]로 시작하는 경우
        acl host_node02 hdr_beg(Host) -i node02

        # HTTP 요청 헤더의 [Host]가 [develop]을 포함하는 경우
        acl host_node03 hdr_sub(Host) -i develop

        # HTTP 요청 헤더의 [Host] 도메인 이름이 [virtual.host]인 경우
        acl host_virtual_host hdr_dom(Host) -i virtual.host

        # HTTP 요청의 PATH가 [/work]로 시작하는 경우
        acl path_workdir path -m beg /work

        # HTTP 요청의 PATH가 [test]를 포함하는 경우
        acl path_testdir path_sub -i test

        # HTTP 요청의 query가 [script]를 포함하는 경우
        acl query_script query -m sub script

        # 소스 클라이언트 IP 주소가 [192.168.219.1/24]인 경우
        acl src_ip src -m ip 192.168.219.1/24

        # 각 ACL에 대한 동작 설정
        use_backend www_node01 if host_node01 || path_workdir
        use_backend www_node02 if host_node02 || path_testdir
        use_backend www_node03 if host_node03 || query_script
        use_backend www_default if host_virtual_host || src_ip
        default_backend www_default


backend www_node01
        server node01 192.168.219.135:80 check

backend www_node02
        server node02 192.168.219.136:80 check

backend www_node03
        server node03 192.168.219.137:80 check

backend www_default
        server www_default 192.168.219.10:80 check


■ 결과 확인

0555

0666

0777

0888

0999

0101010

0111111

0121212

REDUNDANCY 카테고리 내 다른 글 보러가기

댓글 남기기