Load Balancing
- 로드 밸런싱은 네트워크 또는 서버 리소스의 부하를 분산시켜 서비스의 가용성, 성능, 및 안정성을 향상하기 위한 기술입니다.
- 여러 서버 간에 들어오는 요청을 분산하여 각 서버에 동등하게 할당함으로써 네트워크 및 서버 환경을 최적화하여 효율적으로 관리가
가능합니다.
- 로드 밸런싱은 웹, 애플리케이션, 데이터베이스 서버 및 다양한 네트워크 서비스와 같이 다양한 서버 및 서비스에서 사용됩니다.
로드 밸런싱이 사용되는 이유
1. 성능 향상: 로드 밸런싱을 통해 트래픽을 분산하면 각 서버의 부하가 분산되므로 더 빠른 응답 시간을 제공 할 수 있다.
2. 고가용성: 로드 밸런서가 여러 서버를 관리하면 하나의 서버가 고장 또는 다운될 때 다른 서버로 트래픽을 자동 전환 가능하다.
3. 확장성: 증가하는 트래픽에 대응하기 위해 서버를 쉽게 추가할 수 있다. 또 새로운 서버를 도입하고 로드 밸런서에 연결하여 서비스 확장 이 용이하다.
4. 세션 유지: 일부 로드밸런서는 사용자의 세션을 특정 서버에 고정시키는 기능을 제공할 수 있다.
로드 밸런싱의 알고리즘 종류로는
- 라운드 로빈(Round Robin)
- 로드 밸런싱 기본 설정이며 클러스터내의 서버를 순회한다.
- 서버간 처리 용량이 다른 경우 적합하지 않으며, session clustering이 구성되어 있어야 한다. - 최소 연결(least connection)
- 현재 연결 수가 가장 적은 서버에 요청을 보내고, 연결 수를 기준으로 부하를 분산하므로 서버 응답 시간의 차이를 고려한다.
- session clustering이 구성되어 있어야 한다. - IP 해시(IP Hash)
- 클라이언트 IP 주소를 해시하여 특정 서버에 매핑하는 방식으로 동일한 클라이언트는 항상 동일한 서버로 라우팅 된다.
- 클라이언트별로 세션 일관성을 제공하며, 특정 클라이언트의 요청을 동일한 서버로 보낼 수 있다.
- 서버 수 변경 시 재배포가 필요할 수 있으며, 불균형한 부하 분산 문제를 일으킬 수 있다. - 가중치 기반(Weighted Round Robin)
- 각 서버에 가중치를 할당하고, 가중치에 따라 요청을 분배한다. (가중치가 높은 서버는 더 많은 요청을 받게 된다)
- 서버의 성능 차이를 고려해 트래픽을 분배 가능하다.
- 복잡성이 증가할 수 있으며, 가중치를 관리해야 한다. - 가장 빠른 응답 시간(Least Response Time)
- 각 서버의 응답 시간을 측정하고, 가장 빠른 응답 시간을 가진 서버에 요청을 보낸다.
- 응답 시간을 최소화해서 최적의 성능을 제공 가능하다. (단, 서버의 응답 시간이 빠른 경우에만 효과적이다.)
로드 밸런싱을 사용함에 있어 여러 서버, 데이터베이스간 데이터 일관성을 유지하기 위해 데이터를 동기화 해야 하는데,
동기화 방법 예시로는
- Database Replication
- 데이터베이스의 데이터를 여러 서버간에 복제하는 방법
Master - Slave 또는 Master - Master 구성을 사용하여 데이터를 동기화한다.
로드 밸런서는 쓰기 작업을 마스터 노드에 보내고, 읽기 작업을 슬레이브 노드에 보낸다. - Sticky Sessions
- 동일한 세션을 항상 동일한 서버로 연결되도록 함으로써 세션 데이터를 동기화할 수 있다. - Shared File System
- 로드 밸런서 및 백엔드 서버 간에 공유 파일 시스템을 사용하여 정적 자원 또는 구성 파일을 동기화한다.
- 서버 클러스터 내의 모든 서버가 동일한 설정과 인증서를 사용하도록 해서 일관성 유지가 가능하다. - 분산 캐시
- 로드 밸런서 앞에 분산 캐시 시스템을 구축하여 자주 읽는 데이터나 캐시할 데이터를 모든 서버에서 동일하게 제공한다.
참고
반응형
'IT' 카테고리의 다른 글
JAVA에서 래퍼 클래스(Wrapper Class)란? (2) | 2023.10.10 |
---|---|
OSI 7계층 요약정리 (2) | 2023.07.19 |
db 쿼리문 (0) | 2019.12.19 |
modal form 이용해서 데이터 update 하기 (0) | 2019.11.07 |
전자정부프레임워크 공통컴포넌트 새로운 패키지 추가 context, servlet bean설정 (0) | 2019.11.01 |