IT/Network

[Network] Load Balancing and Clustering (로드밸런싱과 클러스터링)

Wookii 2018. 1. 15. 16:21
728x90

Load Balancing and Clustering (로드밸런싱과 클러스터링)

1. 로드밸런싱이란?

서버의 로드를 클러스터링한 서버별로 균등하게 나누어주는 서버를 말한다.


예를 들어, 하나의 서버에 사용자가 많이 몰릴 경우, 해당 서버가 다운될 수 있다. 또 서버에 이상이 생기는 경우에도 서버가 다운될 수 있다.


로드밸런싱을 이용하면 한 서버가 다운되더라도 이중화시킨 다른 서버에서 서비스를 지속하여, 사용자들이 문제를 인지하지 못하게 할 수 있다.


로드밸런싱의 성능과 안정성이 보장되어야 하는 경우 특별한 하드웨어 장비가 이용되는데, 이것이 로드밸런서 이다.
(물론 로드밸런서는 소프트웨어로도 구현이 가능하다.)


로드밸런싱을 위한 서비스 요청 처리 알고리즘은 다양하다.
랜덤, 라운드 로빈, CPU나 메모리 사용률 등과 같은 특정 범주에 따라 노드를 선택하는 등의 방법이 있다.
오픈소스 로드밸런서 중 많이 사용되고 있는 것은 HAProxy이다.

로드밸런싱은 System Capacity를 확장하는 쉬운 방법이다. 그리고 분산 시스템 아키텍처에서는 필수적이다.[1][2]


그러나 로드밸런싱에는 문제가 있다.


클라이언트의 연결 정보를 저장하는 세션이 로드밸런싱을 통해 하나의 서버 장비에 저장이 되는 경우,
추후 다른 서버로 접속하게 되면, 해당 클라이언트의 세션이 유지되지 않는다는 것이다.
[3]

2. 클러스터링이란?

여러 대의 컴퓨터를 병렬로 연결한 시스템이다. 여러 대의 컴퓨터를 가상의 하나의 컴퓨터처럼 사용하게 해주는 것을 클러스터링 이라고 한다.
클러스터링 환경에서는 특정 장비에 문제가 생기거나 애플리케이션에 문제가 생기더라도, 전체적인 서비스에는 영향을 주지 않게 제어할 수 있다.


예를 들어, Web application의 경우, 클러스터링된 서버들 중 한쪽의 서버가 죽더라도, 기존의 연결 세션이 끊어지지 않고 failover 가 된다.[4]


클러스터링은 virtual IP 기반으로 구현되는데, 서비스를 제공하는 실제 장비는 physical IP를 가지고, 데이터의 처리는 virtual IP를 통해 처리한다. 이렇게 내부의 시스템은 철저하게 가려 추상화하는 것이 원칙이다.

특징

로드밸런싱과 클러스터링 모두 scale out 방식이라는 특징이 있다. scale out은 수평 방향으로 노드를 추가하는 것으로, 값싼 노드를 여러 대 묶어 성능을 높이며, scale up 방식에 비해 비용을 줄일 수 있고, 보다 유연한 구성이 가능하다.[5]


  1. http://asfirstalways.tistory.com/320 ↩︎

  2. http://d2.naver.com/helloworld/206816 ↩︎

  3. https://www.phychode.com/sprt/blog/sprtBlogPost.pem?blogSeq=147 ↩︎

  4. http://egloos.zum.com/gunsystems/v/6781945 ↩︎

  5. http://www.aosabook.org/en/distsys.html ↩︎


728x90