CentOS 7에서 HAProxy로 로드 밸런싱과 리버스 프록시 구성하기 완벽 가이드
CentOS 7에서 yum install 명령어를 사용하여 HAProxy를 설치하고, 로드 밸런싱과 리버스 프록시를 구성하는 방법을 알아보겠습니다.
HAProxy는 고성능의 오픈 소스 소프트웨어로, 웹 서버나 애플리케이션 서버의 부하를 분산시키거나, 보안을 강화하기 위해 사용할 수 있습니다. HAProxy는 TCP와 HTTP 프로토콜을 모두 지원하며, 다양한 옵션과 기능을 제공합니다.
HAProxy 설치하기
CentOS 7에서 HAProxy를 설치하는 방법은 간단합니다. yum install 명령어를 사용하면 됩니다.
sudo yum install haproxy
설치가 완료되면, HAProxy의 버전을 확인해보겠습니다.
haproxy -v
저는 다음과 같은 결과가 나왔습니다.
HA-Proxy version 1.5.18 2016/05/10
Copyright 2000-2016 Willy Tarreau <willy@haproxy.org>
HAProxy 설정하기
HAProxy를 설치했다면, 이제 설정 파일을 수정해야 합니다. 설정 파일은 /etc/haproxy/haproxy.cfg 에 위치해 있습니다. 이 파일을 열어보겠습니다.
sudo vi /etc/haproxy/haproxy.cfg
이 파일에는 HAProxy의 기본 설정이 들어있습니다. 우리는 이 파일을 수정하여 로드 밸런싱과 리버스 프록시를 구성할 것입니다.
로드 밸런싱 설정하기
로드 밸런싱이란, 여러 대의 서버에 요청을 균등하게 분배하여 서버의 부하를 줄이고, 성능과 안정성을 향상시키는 기법입니다. HAProxy는 다양한 로드 밸런싱 알고리즘을 제공하며, 우리는 그 중에서 roundrobin 알고리즘을 사용할 것입니다. roundrobin 알고리즘은 각 서버에 순서대로 요청을 할당하는 방식입니다.
로드 밸런싱을 설정하기 위해서는, 먼저 백엔드 서버들의 정보를 haproxy.cfg 파일에 추가해야 합니다. 백엔드 서버들은 backend 섹션에 정의됩니다. 예를 들어, 다음과 같이 3대의 웹 서버를 백엔드 서버로 사용한다고 가정해보겠습니다.
- web1: 192.168.0.11
- web2: 192.168.0.12
- web3: 192.168.0.13
이 경우, haproxy.cfg 파일에 다음과 같이 backend 섹션을 추가합니다.
backend web_servers
balance roundrobin
server web1 192.168.0.11:80 check
server web2 192.168.0.12:80 check
server web3 192.168.0.13:80 check
여기서 balance roundrobin 은 로드 밸런싱 알고리즘을 roundrobin으로 설정한다는 의미이고, server 라인은 각 백엔드 서버의 이름, IP 주소, 포트 번호, 상태 확인 옵션을 지정합니다.
백엔드 서버를 정의했다면, 이제 프론트엔드 서버를 정의해야 합니다. 프론트엔드 서버는 클라이언트의 요청을 받아서 적절한 백엔드 서버로 전달하는 역할을 합니다. 프론트엔드 서버는 frontend 섹션에 정의됩니다. 예를 들어, 다음과 같이 HAProxy 서버의 IP 주소가 192.168.0.10이고, 포트 번호가 80이라고 가정해보겠습니다.
frontend http_front
bind 192.168.0.10:80
default_backend web_servers
여기서 bind 라인은 HAProxy 서버의 IP 주소와 포트 번호를 지정하고, default_backend 라인은 모든 요청을 전달할 백엔드 서버의 이름을 지정합니다.
이렇게 하면 로드 밸런싱 설정이 완료됩니다. HAProxy 서비스를 재시작하면 적용됩니다.
sudo systemctl restart haproxy
리버스 프록시 설정하기
리버스 프록시란, 클라이언트와 웹 서버 사이에 위치하여 클라이언트의 요청을 대신 받아서 웹 서버로 전달하고, 웹 서버의 응답을 대신 전달하는 역할을 합니다.
리버스 프록시를 사용하면, 웹 서버의 보안을 강화하거나, 캐싱, 압축, SSL 암호화 등의 기능을 제공할 수 있습니다. HAProxy는 리버스 프록시로도 사용할 수 있습니다.
리버스 프록시를 설정하기 위해서는, 먼저 백엔드 서버들의 정보를 haproxy.cfg 파일에 추가해야 합니다. 이때, 백엔드 서버들은 실제로 웹 서비스를 제공하는 서버입니다. 예를 들어, 다음과 같이 2대의 웹 서버를 백엔드 서버로 사용한다고 가정해보겠습니다.
- web1: 192.168.0.11
- web2: 192.168.0.12
이 경우, haproxy.cfg 파일에 다음과 같이 backend 섹션을 추가합니다.
backend web_servers balance roundrobin server web1 192.168.0.11:80 check server web2 192.168.0.12:80 check
여기서 balance roundrobin 은 로드 밸런싱 알고리즘을 roundrobin으로 설정한다는 의미이고, server 라인은 각 백엔드 서버의 이름, IP 주소, 포트 번호, 상태 확인 옵션을 지정합니다.
백엔드 서버를 정의했다면, 이제 프론트엔드 서버를 정의해야 합니다. 프론트엔드 서버는 클라이언트의 요청을 받아서 적절한 백엔드 서버로 전달하는 역할을 합니다. 프론트엔드 서버는 frontend 섹션에 정의됩니다. 예를 들어, 다음과 같이 HAProxy 서버의 IP 주소가 192.168.0.10이고, 포트 번호가 443이라고 가정해보겠습니다.
frontend https_front bind 192.168.0.10:443 ssl crt /etc/haproxy/cert.pem default_backend web_servers
여기서 bind 라인은 HAProxy 서버의 IP 주소와 포트 번호를 지정하고, ssl crt 옵션은 SSL 인증서의 경로를 지정합니다. default_backend 라인은 모든 요청을 전달할 백엔드 서버의 이름을 지정합니다.
이렇게 하면 리버스 프록시 설정이 완료됩니다. HAProxy 서비스를 재시작하면 적용됩니다.
sudo systemctl restart haproxy
마치며
CentOS 7에서 HAProxy로 로드 밸런싱과 리버스 프록시를 구성하는 방법에 대해 알아보았습니다. HAProxy는 다양한 옵션과 기능을 제공하므로, 자신의 환경과 요구사항에 맞게 설정을 변경할 수 있습니다. HAProxy에 대한 자세한 정보는 공식 문서 를 참고하세요.
- 블로그 : www.infracody.com
이 글이 유익했나요? 댓글로 소중한 의견을 남겨주시거나 커피 한 잔의 선물은 큰 힘이 됩니다.