IOT 관련 일은 하다 보니 자연스럽게 접하게 된 로드밸런싱 자주 보이는데 무슨 말인지 몰라 이참에 정리해보려 합니다
로드밸런싱
트래픽을 여러 대의 서버로 분산해주는 기술이 없다면 한 곳의 서버에 모든 트래픽이 몰리는 상황이 발생할 것입니다. 이때 필요한 기술이 바로 로드밸런싱입니다.
✨로드밸런서 아키텍처
로드밸런서?
로드밸런서는 서버에 가해지는 부하(=로드)를 분산(=밸런싱)해주는 장치 또는 기술을 통칭합니다. 클라이언트와 서버 풀(Server Pool, 분산 네트워크를 구성하는 서버들의 그룹) 사이에 위치하며, 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 합니다.
L4 로드밸런싱과 L7 로드밸런싱
- 부하 분산에는 L4 로드밸런서와 L7 로드밸런서가 가장 많이 활용됩니다. 그 이유는 L4 로드밸런서부터 포트(Port)정보를 바탕으로 로드를 분산하는 것이 가능하기 때문입니다. 한 대의 서버에 각기 다른 포트 번호를 부여하여 다수의 서버 프로그램을 운영하는 경우라면 최소 L4 로드밸런서 이상을 사용해야만 합니다.
L4? L7?
- 네트워크 통신 시스템은 크게 일곱 가지의 계층(OSI 7 layers, 개방형 통신을 위한 국제 표준 모델)으로 나뉩니다. 각각의 계층(Layer)이 L1/L2/L3‥‥L7에 해당합니다. 상위 계층에서 사용되는 장비는 하위 계층의 장비가 갖고 있는 기능을 모두 가지고 있으며, 상위 계층으로 갈수록 더욱 정교한 로드밸런싱이 가능합니다.
✨L4(Layer 4) 로드밸런싱
✨L7(Layer 7)
L4 로드밸런서는 네트워크 계층(IP, IPX)이나 트랜스포트 계층(TCP, UDP)의 정보를 바탕으로 로드를 분산합니다. IP주소나 포트번호, MAC 주소, 전송 프로토콜에 따라 트래픽을 나누는 것이 가능합니다.
반면 L7 로드밸런서의 경우 애플리케이션 계층(HTTP, FTP, SMTP)에서 로드를 분산하기 때문에 HTTP 헤더, 쿠키 등과 같은 사용자의 요청을 기준으로 특정 서버에 트래픽을 분산하는 것이 가능합니다. 쉽게 말해 패킷의 내용을 확인하고 그 내용에 따라 로드를 특정 서버에 분배하는 것이 가능한 것입니다. 위 그림과 같이 URL에 따라 부하를 분산시키거나, HTTP 헤더의 쿠키값에 따라 부하를 분산하는 등 클라이언트의 요청을 보다 세분화해 서버에 전달할 수 있습니다. 또한 L7 로드밸런서의 경우 특정한 패턴을 지닌 바이러스를 감지해 네트워크를 보호할 수 있으며, DoS/DDoS와 같은 비정상적인 트래픽을 필터링할 수 있어 네트워크 보안 분야에서도 활용되고 있습니다.
L4 로드밸랜서 | L7 로드밸랜서 | |
네트워크 계층 | Layer 4 전송계층(Transport layer) | Layer 7 응용계층(Application layer) |
특징 | TCP / UDP 포트 정보를 바탕으로 함 | TCP / UDP 정보는 물론 HTTP의 URL , FTP의 파일명 , 쿠키 정보 등을 바탕으로 함 |
장점 | 👉 데이터 안을 들여다보지 않고 패킷 레벨에서만 로드를 분산하기 떄문에 속도가 빠르고 효율이 높음 👉 데이터의 내용을 복호화할 필요가 없기에 안전함 👉 L7로드밸런서보다 가격이 저렴함 |
👉 상위 계층에서 로드를 분산하기 때문에 훨씬 더 섬세한 라우팅이 가능함 👉 캐싱기능을 제공함 👉 비정상적인 트래픽을 사전에 필터링할 수있어 서비스 안정성이 높음 |
단점 | 👉 패킷의 내용을 살펴볼 수 없기 때문에 섬세한 라우팅이 불가능함 👉 사용자의 IP가 수시로 바뀌는 경우라면 연속적인 서비스를 제공하기 어려움 |
👉 패킷의 내용을 복호화해야 하기에 더 높은 비용을 지불해야 함 👉 클라이언트가 로드밸런서와 인증서를 공유해야하기 때문에 공격자가 로드밸런서를 통해 클라이언트에 데이터에 접글할 보안 상의 위험성이 존재함 |
🎈참고
https://m.post.naver.com/viewer/postView.naver?volumeNo=27046347&memberNo=2521903
'개발자 성장 일지' 카테고리의 다른 글
Kafka 란? (0) | 2022.08.08 |
---|---|
Spring Boot Controller 어노테이션 (0) | 2022.08.05 |
EJB JEE (0) | 2022.08.03 |
Tomcat, JBoss 차이 (0) | 2022.08.03 |
@Transactional 그리고 @Commit (0) | 2022.07.22 |