끄적끄적 아무기록

HAProxy란? HAProxy 기능을 사용한 DNS 설정

by 현생사는갓생지망생
반응형

HAProxy

 

- L4(TCP), L7(HTTP) 네트워크 스위치를 대체할 수 있는 로드 밸런싱, HA(High Availability)용 오픈소스

- 예를 들어, 웹 서버가 여러대가 있고 이 서버를 로드 밸런싱한다면 웹 서버 앞단에 HAProxy 서버를 구성한다.

그럼 웹 서버 중 1대에 장애가 발생해도 서비스에는 지장이 없다.

HAProxy 서버가 장애를 인지하고 해당 서버를 서비스에서 제외시키기 때문이다.

 

로드 밸런싱

- 부하 분산을 위해서 가상 IP를 통해 여러 서버에 접속하도록 분배하는 기능

 

라운드 로빈 스케줄링

(Round Robin Scheduling, RR)

- 시분할 시스템을 위해 설계된 선점형 스케줄링(분산처리) 방식 중의 하나로서,

프로세스들 사이에 우선순위를 두지 않고, 순서대로 시간단위로 CPU를 할당하는 방식의 CPU 스케줄링 알고리즘

- 웹페이지를 선택하는 여러 스케줄링 방식의 하나

실습을 위해 Linux Server 5대와 Client역할을 할 Windows 7 한 대를 준비한다.

그리고 위와 같이 IP설정을 한다.

테스트를 위해 web server 역할을 할 3대의 서버에는 Main Page를 구분되게 만들어준다.

 

DNS 설정.

1.0.0.21(Load1)과 1.0.0.24(Load2) 모두 호스트 추가를 해주었으며

W7에서 www.hh.com 입력하여 접속하면 1.0.0.24로 가게 된다.

그럼 1.0.0.24(Load2)에서 HAProxy를 이용하여 RR방식으로 web-1,2,3으로 연결하게 된다.

또한 Load1(1.0.0.21)에서도 마찬가지로 DNS설정을 해주어야 한다.

 

HAProxy 기능을 사용하기 위해 먼저 설치를 해준다.

yum install -y haproxy

 

설정 파일의 위치는 /etc/haproxy/haproxy.cfg 이며,

63번째 줄에 포트를 웹 포트인 80으로 바꾸어준다.

또한 80번째 줄에 위와 같이 입력해준다.

RR방식으로 web-1,2,3 (1.0.0.22, 1.0.0.23, 1.0.0.25)로 연결하겠다는 의미이다.

 

75번째 줄을 보면 4331번 포트를 사용함을 알 수 있으므로 방화벽에서 4331 포트를 열어준다.

 

Load1,2 에서 http설정을 해줄 것은 아니지만 설치는 돼있어야 한다.

httpd service를 stop시키고 haproxy를 시작한다.

 

web-1,2,3 서버에는 위와 같이 설정해준다.

vi /etc/httpd/conf/httpd.conf

문서 위치는 /var/www/html 이며, 그 안에 index.html 파일을 만들어주는데,

어떤 서버로 접속이 되었는지 구분을 위해 다르게 만들어준다.

 

W7에서 DNS를 1.0.0.21과 1.0.0.24 모두 바라보게 설정한다.

 

그리고 www.hh.com 로 접속한다.

 

어떤 서버로 접속하였는지 netstat -na -p tcp 명령어로 확인 가능하다.

현재 1.0.0.24(Load2)에서 서비스하고 있으며, RR방식으로 web-1,2,3 번갈아 연결하므로

새로고침을 할 때마다 web page가 변경된다.

 

web-1 page.

 

다시 접속을 해보면 이번엔 1.0.0.21(Load1)에서 서비스한다.

반응형

블로그의 정보

현생이네

현생사는갓생지망생

활동하기