Last Updated on 9월 15, 2021 by Jade(정현호)
Load Balance Module 을 활용
현재 블로그와 별도로 운영중인 페도라 한국 사용자 모임의 구성은 아래와 같이 3개의 서버를 이용한 3-Tier 로 구성되어 있습니다.
이런 구성환경에서 4번 서버에도 PHP-FPM을 구성하여 1대(apache) - N구조(2대- PHP-FPM) 로 구성 하려고 합니다
아래의 그림이 구성 후 모습입니다.
Apache 와 PHP-FPM 구성에 관련은 아래글을 참조해주세요
Apache 설정 변경
기존 포스팅 글에서 PHP-FPM 구성에 대해서 설명해 두었기에 이번글에서는 Apache 에서의 설정 부분만 기술 하도록 하겠습니다.
* 참고로 reverse proxy 로 사용하기 위해서 아래 내용도 추가해 줍니다
ProxyRequests Off
virtualhost 내에 기존 설정 내역
ProxyRequests Off
ProxyPreserveHost On
ProxyErrorOverride on
Timeout 600
ProxyTimeout 600
<FilesMatch \.php$>
SetHandler "proxy:fcgi://instance-3:9002"
</FilesMatch>
virtualhost 내에 변경한 설정 내역
변경1안)
<Proxy balancer://mycluster>
BalancerMember "fcgi://instance-4:9001" route=1
BalancerMember "fcgi://instance-3:9002" route=2
ProxySet lbmethod=bytraffic
ProxySet stickysession=ROUTEID
</Proxy>
<FilesMatch \.php$>
SetHandler proxy:balancer://mycluster
</FilesMatch>
* ProxySet lbmethod=bytraffic
Load Balance 방법은 3가지이며 byrequests (요청별 분배), bytraffic (byte 트래픽 가중치 분배) bybusyness (보류중 요청 분배) 입니다.
위와 같이 FilesMatch 를 이용해도 되고 아래와 같이 proxypass , ProxyPassReverse, 그리고 ProxyPassMatch 또한 가능 합니다.
<Proxy balancer://mycluster>
BalancerMember "fcgi://instance-4:9001" route=1
BalancerMember "fcgi://instance-3:9002" route=2
ProxySet lbmethod=bytraffic
ProxySet stickysession=ROUTEID
</Proxy>
ProxyPass /Websource/path/ balancer://mycluster/
ProxyPassReverse /Websource/path/ balancer://mycluster/
enablereuse 옵션을 통해서WAS 와 DB간의 Connection Pool 과 유사하게 Apache 와 PHP-FPM 간의 미리 연결을 확보하여 Connection 을 재사용 할수 있습니다.
# 설정 예시
<Proxy balancer://mycluster>
BalancerMember "fcgi://instance-4:9001" route=1 enablereuse=On max=5
BalancerMember "fcgi://instance-3:9002" route=2 enablereuse=On max=5
ProxySet lbmethod=bytraffic
ProxySet stickysession=ROUTEID
</Proxy>
<FilesMatch \.php$>
SetHandler proxy:balancer://mycluster
</FilesMatch>
event 및 worker 방식일 경우 스레드의 수와 연관되어 Connection 이 맺어진다고 하여 enablereuse 옵션 사용시 사전에 검토나 고려가 필요한 부분은 있습니다.
enablereuse 미사용 때보다 php-fpm 에서의 프로세스 확보가 더 필요해 오히려 늦어지거나 저하 현상이 발생할 수도 있습니다. enablereuse 사용전 검토가 필요 합니다.
* 지금 현재로는 처음 안내해드린 변경1안) 으로 사용 중에 있습니다.
연관된 글
Principal DBA(MySQL, AWS Aurora, Oracle)
핀테크 서비스인 핀다에서 데이터베이스를 운영하고 있어요(at finda.co.kr)
Previous - 당근마켓, 위메프, Oracle Korea ACS / Fedora Kor UserGroup 운영중
Database 외에도 NoSQL , Linux , Python, Cloud, Http/PHP CGI 등에도 관심이 있습니다
purityboy83@gmail.com / admin@hoing.io