로드 밸런싱(Load Balancing)은 네트워크나 서버에 분산된 작업 부하를 균형적으로 분배하는 기술입니다. 로드 밸런싱은 대규모 트래픽이 발생하는 웹 애플리케이션, 서비스, 데이터베이스 서버 등에서 사용됩니다.
로드 밸런싱의 주요 목적은 다음과 같습니다:
과부하 방지: 로드 밸런서는 작업 부하를 여러 대상 서버로 분산시켜 부하를 고르게 분담함으로써 서버의 과부하를 방지합니다. 이를 통해 서비스의 가용성과 성능을 향상시킬 수 있습니다.
확장성: 로드 밸런서는 새로운 서버 인스턴스를 추가하여 작업 부하를 분산시킬 수 있습니다. 이를 통해 시스템의 확장성을 강화하고 트래픽 증가에 대응할 수 있습니다.
장애 극복: 로드 밸런서는 여러 대상 서버 중 일부 서버의 장애를 감지하고 해당 서버로의 요청을 다른 정상 서버로 자동으로 전달합니다. 이를 통해 시스템의 내결함성과 신뢰성을 향상시킬 수 있습니다.
로드 밸런싱은 일반적으로 네트워크 레벨에서 수행되기도 하며, 주로 소프트웨어나 하드웨어 기반 로드 밸런서를 사용합니다. 로드 밸런서는 여러 알고리즘을 사용하여 부하를 분산하는 방식을 결정하고, 클라이언트의 요청을 받아서 적절한 대상 서버로 전달합니다. 일반적으로 라운드 로빈(Round Robin), 가중치 기반(Weighted Round Robin), 최소 연결(Least Connection), 세션 퍼시스턴스(Session Persistence) 등의 알고리즘이 사용됩니다.
로드 밸런싱은 대규모 트래픽을 처리하고 서비스의 가용성, 성능, 확장성을 향상시키는 중요한 구성 요소입니다.
빅데이터의 데이터 마이닝이나 검색엔진 데이터 분석 처리 등을 대표하는 OLAP(Online Analytical Processing) 어플리케이션 환경에서는 대량의 데이터 처리와 복잡한 쿼리가 이루어지기 때문에 스케일아웃 구성이 더 효율적이다.
반면 온라인 금융거래와 같이 워크플로우 기반의 빠르고 정확하면서 단순한 처리가 필요한 OLTP(Online Transaction Processing) 환경에서는 고성능의 스케일 업 방식이 적합하다고 한다.
L4 Load Balancer는 단지 부하를 분산시키는 것이라면, L7 Load Balancer는 요청의 세부적인 사항을 두고 결제만 담당하는 서버, 회원가입만을 담당하는 서버 등으로 분리해서 가볍고 작은 단위로 여러 개의 서비스를 운영하고 요청을 각각의 서버에 분산할 수 있는 것입니다.
L7 Load Balancer는 L4 Load Balancer와 다르게 데이터를 분석해서 처리가 가능하기 때문에 악의적이거나 비 정상적인 콘텐츠를 감지해 보안 지점을 구축할 수도 있는 장점이 있고, 그 만큼 자원 소모가 크다는 단점이 있습니다.
Layer 4 load balancers act upon data found in network and transport layer protocols (IP, TCP, FTP, UDP).
Layer 7 load balancers distribute requests based upon data found in application layer protocols such as HTTP.
로드벨런서 사용시 서버에서 클라이언트로 요청에대한 응답을 할 때, 로드밸런서(스위치의 IP주소)가 아닌 클라이언트의 IP로 응답을 보내 네트워크 스위치를 거치지않고 클라이언트를 찾아갈 수 있게 해줍니다.
Private IP를 Public IP로 바꾸는데 사용하는 통신망의 주소 변조기로 패킷이 로드밸런서를 통과할 때 패킷의 ip/port 정보를 변경하는 역할
인터넷 상에 보이지않는 통로를 만들어 통신할 수 있게하는 개념. 데이터를 캡슐화해 연결된 노드만 캡슐을 해제할 수 있게 만들어줍니다.
IP tunneling (IP encapsulation) is a technique to encapsulate IP datagram within IP datagrams, which allows datagrams destined for one IP address to be wrapped and redirected to another IP address. IP encapsulation is now commonly used in Extranet, Mobile-IP, IP-Multicast, tunneled host or network. Please see the NET-3-HOWTO document for details.
Operation of Loadbalancing
Bridge/Transparent Mode
사용자가 서비스를 요청하면 L4로 전달된 목적지 IP 주소를 real server IP 주소로 변조하고 MAC 주소를 변조해서 목적지를 찾아가는 방식
사용자가 L4를 호출하면 중간에 NAT가 목적지 IP 주소를 real server IP 주소로 변조하고 MAC 주소도 변조합니다.
real server에서 L4를 거치면서 출발지(source) IP 주소를 L4 가상 IP 주소로 변조한다. 동일 네트워크 대역이므로 MAC 주소는 변조하지 않습니다.
Router Mode
Bridge/Transparent Mode와 유사하지만 출발지(source) MAC 주소도 변조됩니다.
목적지 IP가 다른 대역으로 구성
One Arm Mode
사용자가 real server에 접근할 때 목적지 IP는 L4 스위치 IP를 바라본다. L4에 도달하면 L4가 클라이언트에게 받은 목적지 IP 주소를 L4 IP 주소에서 real server IP와 real server MAC 주소로 변조한다. 되돌아가는 IP는 L4의 IP pool의 IP 주소로 변조합니다.
DSR (Direct Server Return) Mode
사용자가 real server에 접근할 때 출발지와 목적지의 IP 주소를 변조하지 않고, L4에서 관리하는 real server의 MAC 주소 테이블을 확인해서 MAC 주소만 변조합니다.
ref
https://jaehoney.tistory.com/73
https://vaert.tistory.com/189
https://blog.neonkid.xyz/227
https://zigispace.net/434
https://tecoble.techcourse.co.kr/post/2021-10-12-scale-up-scale-out/
https://preparingforcodinginterview.wordpress.com/2019/08/25/tcp-vs-https-load-balancing/