본문 바로가기
카테고리 없음

로드 밸런싱은 무엇인가?

by whdgus928 2023. 5. 19.

학습목표: 로드 밸런싱의 개념과 방법에 대해 알아보자

로드: 서버가 받는 부하

로드 밸런서: 트래픽들을 잘 밸런싱해서 우리의 서버들한테 골고루 분산시켜 주는 모듈

 

어떤 서비스를 런칭했다고 가정하자. 처음에는 유저가 적어서 1초에 1개의 request만 소화를 하면 되는 상황이다. 서비스가 유명해져서 1초에 100,000,000개의 request가 들어오게 된다면 이 때는 한대의 서버로는 감당하기 힘들어진다.

 

그렇다면 트래픽이 늘어났을 때 우리가 선택할 수 있는 방법으로 Vertical scale-up과 Horizontal scale-out이 있다

 

1. Vertical scale-up

서버 자체의 퍼포먼스를 늘리는 방법. 예를들어 서버의 ram이 4기가면 32기가로 늘리거나cpu를 더 많은 코어가 있는 것으로 변경하는 것이다 하지만 이 방법은 늘릴수 있는 한계가 있다

 

2. Horizontal scale-out

비싸긴하지만 한대로 처리할것을 두대,세대로 처리하는 방법이다. 분산시스템 구축하는 것으로 서버를 여러대 가지고 있으니까 트래픽을 분산시켜줄 로드 밸런서를 사용하는 것이다

 

로드밸런싱 방법

1. round robin

들어오는 요청을 서버들에 순차적으로 전송, 다 받으면 다시 처음부터 전송하는 방법. 모든 서버가 골고루 분산해서 가져간다

 

2. random select

랜덤으로 아무 서버 골라서 요청을 보내는 방식. 거의 라운드 로빈과 같은 성능을 가진다.

 

3. least connection

서버 입장에서 로드 밸런서한테 내가 얼마나 트랙픽을 감당하고 커넥션을 맺고 있는지 알려준다. 이 정보를 가지고 어떤 서버가 바쁜지 여유로운지를 판단해 여유로운 서버에 전송한다

 

또 다른 방식으로는 모든 서버의 스펙이 같지 않은 경우가 있는데 좋은 성능의 서버와 부족한 성능의 서버가 있을 수 있다. 이 때 좋은 성능의 서버에 트래픽을 많이 주고 성능이 떨어지는 서버에는 트래픽을 덜 주도록 가중치를 설정할 수 있다.

 

현실적으로 서버의 스펙들이 다르게 되면 고려할 것이 많아져서 같은 스펙의 서버로 분산시스템을 구축하는게 편리하다

 

로드밸런싱을 어떻게 구현하는지

1. 소프트웨어

로직을 구현해서 트래픽을 분산하는 방법. 예로 apache 웹 서버를 이용해 거기에 구현된 기능을 가지고 처리한다. 구현만 하면 돼서 저렴하다

2. 하드웨어

물리적으로 서버를 묶는다. l4와 l7스위치 같이 메타데이터를 어느정도 범위까지 고려해서 분산할거냐 차이

안정성이 높고 보안적이다

 

만약 로드밸런서가 죽으면?

우리 서비스도 죽는다 이것을 single point of failure(spof)라고 한다. 그래서 로드밸런서 자체도 스케일 아웃을 할 필요가 있다. 로드밸런서를 마스터 슬레이브방식으로 운영해 마스터가 항상 일하고 한 두개의 여유를 가진다. 어떠한 이유로 서버가 죽으면 슬레이브를 마스터로 임명시겨 서비스를 이어가게 할 수 있다. 

 

로드밸런서도 spof를 피하기 위해서는 여러개로 스케일 아웃을 할 필요가 있는 모듈이다

반응형

댓글