IT/Cloud Architect

[공통] 로드 밸런서 부하 분산할 때 생기는 문제

송시 2022. 6. 19. 23:20
728x90

로드 밸런서를 사용하게 될때 크게 2개의 형태의 로드 밸런서가 있다.

 

웹에 안성 맞춤인 application Load balancer 와 TCP에 안성 맞춤인 Network Load balancer

 

그래 앞서 설명했던 것 처럼

2022.06.19 - [IT/Cloud Service] - [공통]Load balancer 로드 밸런서

 

[공통]Load balancer 로드 밸런서

로드 밸런서는 어떤 CSP를 사용하던지 대부분 기능을 제공해준다. 그냥 쉽게만 바로 본다면 부하를 분산하자!! 만약 네이버 홈페이지가 1개의 서버에서 운영된다고 가정해보자. 아무리 scale up 한

songsiaix.tistory.com

로드 밸런서는 가용성을 높여주고 자원을 효율적으로 사용하는데 큰 도움을 준다.

 

1개의 ALB(Application Load Balancer) 와 4개의 웹 서버의 구조로 서비스를 하고 있다고 치자.

 

Round Robin 방식으로 설정되어 있는 ALB이다.

 

최초 웹 서버로 접속을 했고 회원 로그인을 진행하였다. 웹 서버 1에 접속하였다.

 

사용자가 새로고침을 하였는데, 왠일인지 로그아웃이 되어있다. 라운드로빈에 의해 웹 서버 2에 접속된 상태다.

 

다시 로그인을 하고 잘 사용한다. 현재 웹 서버 2에서 사용하고 있다.

 

사용자가 다시 새로고침을 하였는데 로그아웃이 또 되어 있다. 라운드로빈에 의해 웹 서버 3에 접속된 상태다.

 

계속 된 로그아웃으로 사용자는 짜정이 많이 난다.

 

ALB는 자신의 역활을 잘 해줬다. 분산을 잘 해줬다.

 

하지만 웹 서버1에서 사용하던 웹 사용자의 세션 및 쿠키는 웹 서버 1과의 통신으로 얻게 된 로그인 정보다.

 

이게 웹 서버 2에 까지 있기를 바란다면 당신은 욕심쟁이.

 

물론 이를 해결하기 위해 개발 단에서의 방법이 존재한다. 

 

그보다 ALB를 사용하는 입장에서는 더 쉬운 방법도 있다.

 

이거슨 바로 스티키 세션(sticky session) 라고 한다.

 

ALB에서 스티키 세션을 설정하면, LB는 기존에 갔던 서버로 지속적으로 연결되어 사용할 수 있도록 돕는다.

 

이 스티키세션을 통해서 ALB에서 사용자와 서버간에 지속할 수 있는 쿠키를 할당 한다.

 

더 자세한 내용은 추후에 좀더 공부해보고 남겨보도록 하겠고, 

 

ALB의 경우 세션을 유지하기 위해서는 스티키 세션을 사용해야 한다는 점이다.

(LB 생성을 위해 target group을 만드는데 이때 sticky session을 설정할 수 있다)

 

그런데 TCP를 기반으로 하는 Network Load balancer 는 TCP의 연결 특성으로 인해 그 자체로 세션을 유지하는데 사용할 수 있다.

728x90