Load Balancing
로드 = 서버가 받는 부하 , 밸런싱 = 분산 및 분배
-> 서버가 받는 부하를 분산하는 기술
서버에 대한 트래픽이 많아지게 되면, 트래픽을 분산시켜야 하는 문제를 만나게 된다
이를 해결하기 위한 기술이 로드밸런싱이다
1. Vertical Scale - Up
서버 자체의 성능을 높여 퍼포먼스를 늘리는 방법
-> 기술적 한계 때문에 무한정 성능을 높일수는 없다
-> 어느 정도 선에서 Scale - Out을 고려할수밖에 없다
2. Horizental Scale - Out
서버를 여러 대로 늘려 트래픽을 감당하는 방법
-> 로드밸런서라는 중간 매체로 여러 서버에 트래픽을 분산시킨다
2 - 1. Round Robin
들어오는 트래픽들을 순차적으로 서버에 배당하고 순회하는 방법
2 - 2. Random Select
들어오는 트래픽들을 무작위적으로 서버에 배당하는 방법
랜덤하게 배당하므로 평균적으로는 모든 서버가 비슷한 정도의 트래픽 부하를 받는다
2 - 3. Least Connection
서버들로부터 받은 트래픽에 대한 정보(어떤 서버가 트래픽이 많고 적은지에 대한 정보)를
바탕으로 로드밸런서가 서버에 트래픽을 분산하는 방법
2 - 4. Ratio
서버 성능이 모두 동일한 상태로 보장되지 않을 때, 서버마다의 퍼포먼스를 고려하여
트래픽 가중치를 설정하고, 이에 맞게 트래픽을 보내는 방법
-> 낮은 퍼포먼스 보여주는 서버에 과도하게 트래픽이 부하되면 서버가 죽는 가능성이 높아진다
-> 적은 트래픽이라도 감당하던 서버들이 죽게되면 다른 서버들이 받는 부하가 높아진다
-> 연쇄적으로 서버가 부담하는 트래픽 양이 높아지면서 전체적으로 다운되는 경우가 초래될수있다
서버들의 성능스펙을 최대한 높이고, 동일한 수준으로 구축하는것이 엔지니어 입장에서 고민을 덜어줄수있다
로드 밸런싱을 구현하는 방법 두 가지
소프트웨어적인 접근과 하드웨어적인 접근
1. Software적 접근
구현된 로직을 통해 트래픽을 분산시키는 방법
NginX나 Apache 같은 웹서버에 구현된 기능들(HAProxy, Reverse Proxy..)을 이용
로직으로 해결하기 때문에 하드웨어적인 접근보다 저렴
Scale - Out 시 Cofiguration만 바꾸면 되기 때문에 구현이 수월하다
2. Hardware적 접근
물리적으로 서버들을 묶는 방법
L4, L7 스위치가 대표적인 방법
L4와 L7은 어떤 메타데이터를 어느 범위까지 고려할것인가에 대한 차이가 있음
소프트웨어적인 방법보다 비싸다
물리적으로 서버들을 묶기때문에 Reliable, 안정적이다
데이터 센터에 출입을 제한하여 높은 Security를 얻을수 있다
로드밸런서가 죽으면 트래픽을 분배하는 서버들이 모두 동작하지 않는 경우가 발생한다
-> Single Point Of Failure(SPOF)
-> SPOF를 피하기 위한 방법도 고려해야한다
'Network' 카테고리의 다른 글
최신 Chat GPT-4 사용법 (0) | 2023.03.15 |
---|---|
Web Server vs Web Application Server (0) | 2023.03.15 |
Static Web Page vs Dynamic Web Page (0) | 2023.03.15 |