[Apache] Balancer
작성일 23-06-08 07:28
페이지 정보
작성자sbLAB 조회 2,261회 댓글 0건본문
Apache Module mod_proxy_hcheck
https://httpd.apache.org/docs/trunk/mod/mod_proxy_hcheck.html
https://runebook.dev/ko/docs/apache_http_server/mod/mod_proxy_hcheck
https://httpd.apache.org/docs/2.4/howto/reverse_proxy.html //status=+H
[httpd.conf]
-----------------------------------------------------------
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so <- Dynamic health check of Balancer members (workers) for mod_proxy
LoadModule watchdog_module modules/mod_watchdog.so <- health check
-------------------------------------------------------------
[httpd-proxy.conf] - case1 ★★
----------------------------------------------------------------------
<IfModule proxy_module>
<IfModule proxy_http_module>
# Off : Reverse Proxy / On : Forward Proxy
ProxyRequests Off
#프록시에 액세스할 수 있는 사용자를 제어
<Proxy *>
Require all granted
</Proxy>
#서버 상태체크 동작 옵션설정
ProxyHCExpr in_maint {hc('body') !~ /Under maintenance/}
ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
ProxyHCExpr gdown {%{REQUEST_STATUS} =~ /^[5]/}
<Proxy balancer://mycluster>
#http://192.168.0.11/status.php 체크(기본 30초마다)하여 Under maintenance 문자열이 포함되어 있으면 서버연결 비활성화(문자열 없으면 자동 서버 활성화됨)
BalancerMember http://192.168.0.11:80 loadfactor=1 retry=1 hcmethod=GET hcexpr=in_maint hcuri=/status.php
#http://192.168.0.35 체크(10초마다)하여 응답상태가 2xx, 3xx, 4xx 인지확인하여 밸런서 서버로 활성화/비활성화 결정
BalancerMember http://192.168.0.35:80 loadfactor=1 retry=1 hcmethod=HEAD hcexpr=ok234 hcinterval=10
#http://192.168.0.45 TCP소켓 연결가능한지 체크(5초마다/3번 연결실패하면 비활성화)하여 밸런서 서버로 활성화/비활성화 결정
BalancerMember http://192.168.0.45:80 hcmethod=TCP hcinterval=5 hcpasses=2 hcfails=3
ProxySet lbmethod=byrequests
</Proxy>
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
</IfModule>
</IfModule>
----------------------------------------------------------------------
[status.php]
<?php
echo "Under maintenance";
?>
[httpd-proxy.conf] - case2
----------------------------------------------------------------------
#
# Implements a proxy/gateway for Apache.
# # Required modules: mod_proxy, mod_proxy_http
#
<IfModule proxy_module>
<IfModule proxy_http_module>
ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
ProxyHCExpr gdown {%{REQUEST_STATUS} =~ /^[5]/}
ProxyHCExpr in_maint {hc('body') !~ /Under maintenance/}
<Proxy balancer://mycluster>
Order deny,allow
Allow from all
#Active node1
BalancerMember http://192.168.0.21:80 loadfactor=1 retry=1 hcmethod=GET hcexpr=in_maint hcuri=/status.php
#Active node2
BalancerMember http://192.168.0.25:80 loadfactor=1 retry=1 hcmethod=HEAD hcexpr=ok234 hcinterval=10
#Passive node
BalancerMember http://192.168.0.45:80 status=+H retry=0
</Proxy>
ProxyPass / balancer://mycluster/ stickysession=JSESSIONID|jsessionid
ProxyPassReverse / http://192.168.0.21:80/
ProxyPassReverse / http://192.168.0.25:80/
ProxyPassReverse / http://192.168.0.45:80/
</IfModule>
</IfModule>
------------------------------------------------
댓글목록
등록된 댓글이 없습니다.