[Redundancy] 07. HAProxy 구성 (2) - 모니터링, ACL 설정
카테고리: REDUNDANCY
태그: redundancy linux
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
■ 결과 확인
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
■ 결과 확인
댓글 남기기