진짜 개발자
본문 바로가기

Linux/CentOS

CentOS6 - Web Load Balancing 웹 로드밸런싱(HaProxy)

728x90

Load Balancing 

하나의 서버에 서비스 트래픽이 많을 때 여러개의 서버로 나누어 서비스를 함으로 써 서버의 로드율 증가, 부하량

속도 저하, 등을 개선하는 것

 

시나리오 

- HaProxy를 이용한 Web Load Balanace 구현 

 

host 

CentOS1 

 CentOS2 

CentOS3 

 W7-1

 IP 

 1.0.0.21

  1.0.0.22 

 1.0.0.23

  1.0.0.101

 SM 

 255.255.255.0

 DG 

 1.0.0.252

 DNS 

 설정에 따라

 Roles 

  Load Balance, DNS

 Web1 Web2 Tester(Client)



 


원리

1) 클라이언트가 www.babo.com 에 접속을 시도한다

2) DNS1.0.0.21www.babo.com IP1.0.0.21로 기록해두었기 때문에 1.0.0.21로 이동 된다

3) 1.0.0.21 PC에는 haproxy가 자신의 APP목록에 있는 IP주소로 RR방식으로 맵핑한다


과정

1) CentOs6-1 

a) 설치

- haproxydns를 설치한다

 

b) 방화벽 설정

80 : Client들이 haproxy에게 서비스를 요청할 포트이다

53 : dns에 사용될 포트

4331 : haproxy에 사용될 포트

 

- iptables를 재시작한다

 

c) dns 설정 

- /etc/named.rfc1912.zone 파일에 새영역에대한 레코드를 추가한다

 

- /var/named에 영역파일을 생성한다(named.localhost를 복사하여 생성한뒤 편집하면 편하다)



영역 파일에 다음과 같이 입력한다

www.babo.com , babo.com 에 대한 iphaproxy서버가 구현되어있는 서버로 향하게 한다

 

named 디렉토리 및 이하 파일들의 권한을 755로 설정

 

d) haproxy 설정 

- /etc/haproxy/haproxy.cfg 파일을 편집한다.


Connect 지점 설정 

- 사용자들이 접속할 포트를 80로 향하게 한다


Backend Web 설정

 

- 사용자들에게 제공할 어플리케이션의 주소와 포트를 적는다


- backend app 섹션의 balance   roundrobin 줄 위에 위와 같은 코드를 추가하면

  5초당 1번씩 health check를 자동으로 하게 되는데 3번실패하면 lb backend에서 삭제하고 2번성공하면

  다시 등록되게 할 수 있다.


Backend static file 설정

- html안에 static(css,js) 파일이 위치한 경로는 지정이 되어있으므로

  static file들이 있는 서버의 위치만을 지정해주면 된다(port : 80)


 

- haproxy service를 재시작한다.

 

2) CentOS6-2 

http를 설치한다

 

index 파일을 생성

  


80포트를 해제

 

http 서비스 시작

 


3) CentOS6-3 

CentOS6-2 와 똑같이 구성한다

 


4) Client

 

www.babo.com 접속한다

 

새로고침하면 다른 서버로 연결됨을 볼 수 있다.