로드밸런싱
로드밸런싱이란
서버 부하 분산을 위해 가상 IP를 통해 여러 서버에 접속하도록 분배하는 방법
- 트래픽이 많을 때 여러 대의 서버가 분산처리하여 서버의 로드율 증가, 부하량, 속도 저하 등을 고려하여 적절히 분산처리하여 해결하는 기술.
- 하나의 서비를 하나 이상의 노드가 처리하는 식으로 작동한다.
- 서버의 로드를 클러스터링된 서버별로 균등하게 나눈다.
- 로드 밸런싱을 이용하면 한 서버가 다운되더라도 이중화시킨 다른 서버에 서비스를 지속하여, 사용자들이 문제를 인지하지 못하게 할 수 있다.
- 로드밸런싱을 해주는 소프트웨어 또는 하드웨어를 로드밸런서라고 한다.
로드 밸런서 목적
로드밸런서의 주 목적은 동시에 오는 수 많은 커넥션을 처리하고 해당 커넥션 요청이 노드 중의 하나로 전달될 수 있게 하는 것이다.
또한 노드를 추가하는 것만으로도 서비스가 확장성을 가질 수 있도록 한다.
로드 밸런싱의 종류
L2
Mac 주소를 바탕으로 로드밸런싱 진행
L3
IP 주소를 바탕으로 로드밸런싱 진행
L4
Transport Layer(IP + Port) 레벨에서 로드밸런싱 진행
L7
Application Layer (Request) 레벨에서 로드밸런싱 진행
로드 밸런싱 장애 대비
로드밸런서 서버의 이중화를 기본으로 구성한다.
장애 발생시
이중화된 로드 밸런서들은 서로 체크를한다.
마스터 서버와 스탠바이 서버를 구성하고
마스터 서버가 장애 시 스탠바이 서버가 자동으로 마스터 서버의 역할을 한다.
스탠바이 서버는 평상시엔 대기상태로만 있다가 마스터 서버가 Fail되었을 경우에만 작동을 한다.
이러한 구성을 Fail Over라고 한다.
로드 밸런싱의 단점
로드밸런서를 사용할 때 어려움 - 세션 데이터 관리
로드밸런싱을 통해 다른 서버에 접속하게되면 해당 클라이언트의 세션이 유지되지 않는다.
이런 문제를 해결하기 위해 세션을 고정한다. (session sticky)
클러스터링
서버 클러스터링이란?
여러 대의 컴퓨터를 똑같은 구성의 서버를 병렬로 연결해 하나의 컴퓨터처럼 사용하는 방법
- 여러 대의 컴퓨터를 가상의 하나의 컴퓨터처럼 사용하게 해주는 것을 클러스터링이라고 한다.
- 클러스터링 환경에서는 특정 장비에 문제가 생기거나 어플리케이션에 문제가 생기더라도, 전체적인 서비스에는 영향을 주지 않게 제어
- 클러스터링은 Virtual IP 기반으로 구현, 서비스를 제공하는 실제 장비는 Physical IP를 가지고, 데이터 처리는 Virtual IP를 통해 처리한다. (추상화)
- 클러스터링 환경에서는 특정 장비에 문제가 생기거나 특정 장비에서 실행중인 어플리케이션에 문제가 발생하더라도 전체 서비스에 영향을 미치 않도록 함
- 로드 밸런서에 의해 각 클러스터링된 서버에 의해 서비스가 진행이 된다.
두 방식의 차이
- 로드 밸런싱은 L4 or L7를 이용해 여러 대의 서버에 패킷을 부하 분산시키는 것이고 클러스터링은 여러 대의 서버를 하나의 서버로 만들어주는 것
- 클러스터링은 하나의 서비스를 제공하는 여러 서버를 하나로 묶어 성능을 높이는 것이고, 로드밸런싱은 여러 대로 분산을 시키는 것.
하기 블로그들을 참고해서 작성했습니다.
참고블로그1
참고블로그2