로드밸런서 소개
로드밸런서는 2대 이상의 서버를 구축하고 로드밸런서와 연동하여 서버간 접속을 균등히 분배해주는 기술이나 개념을 의미한다.
일반적으로 접속자가 많아서 서버 1대로는 서비스가 어려운 경우 서버를 더 증설하고 동기화를 시킨 다음 로드밸런서와 연동하여 서비스를 한다.
접속자가 많은 경우 서버에 많은 부하가 발생하게 되는데 로드밸런서와 연결하여 여러대의 서버에서 부하를 분산시킨다는 의미이다.
아래 그림에서 보면 3대의 서버가 로드밸런서와 가상적으로 연결되어 있으며 로드밸런서는 접속자들을 서버에 균등하게 분배하여 접속시켜 준다.
예를 들어 총 3대의 서버를 로드밸런서와 연결하였다고 가정하면 3명의 접속자가 있다면 1:1:1 로 분배한다.
1번째 접속자 --> 로드밸랜서 --> 서버 1 2번째 접속자 --> 로드밸랜서 --> 서버 2 3번째 접속자 --> 로드밸랜서 --> 서버 3 4번째 접속자 --> 로드밸랜서 --> 서버 1 5번째 접속자 --> 로드밸랜서 --> 서버 2 6번째 접속자 --> 로드밸랜서 --> 서버 3 |
∗ 분배 알고리즘에 따라 정확히 1:1:1 분배는 되지 않을수 있다.
로드밸런서의 기능중 하나가 서버에 장애가 발생하거나 문제가 발생하면 로드밸런서에서는 이를 감지하고 장애가 발생한 서버로는 분배하지 않는데
이를 헬스체크 기능이라고 한다.
헬스체크 기능은 다시 서버가 정상화 되고 정상적으로 확인되면 다시 문제가 해결된 서버에 자동으로 분배를 시작한다.
헬스체크
로드밸런서가 하위에 연결된 서버들을 체크하여 문제 발생시 분배를 중단하고 정상적으로 복구시 다시 분배를 하는 기능 |
만약 3대의 서버중에 서버2번이 다운되면 로드밸런서는 '서버2' 를 분배에서 제거한다.
'서버 2번' 이 제거되었기 때문에 아래와 같이 동작하게 될것이다.
1번 접속자 --> 로드밸랜서 --> 서버 1 2번 접속자 --> 로드밸랜서 --> 서버 3 3번 접속자 --> 로드밸랜서 --> 서버 1 4번 접속자 --> 로드밸랜서 --> 서버 3 |
사용자가 2번 서버를 수리하였다면 다시 처음상태와 동일하게 복구가 된다.
1번 접속자 --> 로드밸랜서 --> 서버 1 2번 접속자 --> 로드밸랜서 --> 서버 2 3번 접속자 --> 로드밸랜서 --> 서버 3 4번 접속자 --> 로드밸랜서 --> 서버 1 |
∗ 헬스체크는 서비스 포트를 체크하여 동작한다.
요즘 출시되고 있는 로드밸런서들의 기능은 많고 다양하지만 기본적인 역활은 접속자를 여러대의 서버로 안정적으로 분배하고 중재하는 역활을 한다.
IWINV 로드밸런서는 부하에 따라 서버를 증설시키고 감소기키는 오토스케일과 연동이 가능하기 때문에 갑자기 늘어났다가 줄어드는 접속자에 유연하게
대처 할수 있는 방안이라 생각한다.
NOTE
실제 가상서버 장애가 발생하고 다시 복구될때 특정 시간 (10초 내외) 에는 사용자들이 페이지가 안 열리거나 세션꼬임으로 인해 로그아웃 현상이 발생할수 있다. 로드밸런서는 훌륭한 기술임에는 분명하지만 사용자의 서비스를 로드밸런서를 적용했을때 문제가 없는지 꼼꼼한 체크 또한 필요하다. |
관련링크
- 오토스케일 개념 (http://help.iwinv.kr/manual/read.html?idx=33)
- 로드밸런서 설정 (http://help.iwinv.kr/manual/read.html?idx=66)