웹 애플리케이션에서 로드 밸런싱과 콘텐츠 전환의 개념 간에 차이가 있습니까? 로드 밸런서는 하나의 서버가 자체적으로 처리할 수 있는 것보다 더 많은 트래픽을 처리하기 위해 여러 서버에 요청을 분산합니다.
추가 하드웨어나 소프트웨어를 추가하지 않고도 웹 애플리케이션을 확장할 수 있습니다. 또한 로드 밸런싱을 사용하면 들어오는 모든 요청이 단 하나의 서버에서 처리되는 경우 필요한 것보다 더 적은 리소스를 사용할 수 있습니다.
반면에 콘텐츠 전환은 현재 서버가 요청을 처리할 수 없을 때 사용자를 한 페이지에서 다른 페이지로 리디렉션하는 것을 말합니다. 이 기사에서는 두 개념의 차이점을 다룰 것입니다.
로드 밸런서는 들어오는 요청을 여러 서버에 분산합니다. 특정 요청에 응답해야 하는 서버를 결정하지 않습니다. 대신 사용 가능한 서버로 요청을 전달합니다. 로드 밸런서는 일반적으로 새 요청이 들어올 때마다 사용 가능한 다음 서버로 요청을 보내는 라운드 로빈 스케줄링을 사용합니다.
로드 밸런서는 이 기능을 수행하기 위해 요청을 보낼 IP 주소를 알아야 합니다. 따라서 로드 밸런서는 구성 정보에 액세스할 수 있어야 합니다.
예를 들어 로드 밸런서는 웹 애플리케이션을 호스팅하는 시스템의 이름, 해당 IP 주소, 포트 번호 등을 알아야 할 수 있습니다.
로드 밸런서는 SSL 종료, 캐싱, 모니터링, 장애 조치 등과 같은 다른 기능도 제공합니다. 이러한 기능은 문서 뒷부분에서 자세히 설명합니다.
현재 사용되는 로드 밸런싱에는 RR(라운드 로빈), WR(가중 랜덤) 및 LC(최소 연결)의 세 가지 유형이 있습니다.라운드 로빈(RR):
이러한 유형의 로드 밸런싱은 로터리 다이얼 전화 시스템처럼 작동합니다. 통화가 스위치로 들어오면 대상에 도달할 때까지 연결을 거칩니다. 각 연결에는 연관된 특정 가중치가 있습니다.
남은 무료 연결이 없으면 통화가 끊어집니다. RR을 사용하면 서로 다른 연결에 할당된 가중치가 시간에 따라 달라집니다. 결과적으로 통화는 사용 가능한 서버 전체에 고르게 분산됩니다.
WR(Weighted Random): 총 대역폭의 고정 비율을 각 서버에 할당합니다. 따라서 10개의 서버가 있고 전체 대역폭의 5%가 할당되면 각 서버는 전체 용량의 5%를 가져옵니다. 즉, 첫 번째 서버는 용량의 50%, 두 번째 서버는 25% 등을 갖게 됩니다. Least Connections(LC):
LC를 사용하면 로드 밸런서는 가장 사용량이 적은 서버에만 요청을 보냅니다. 모든 서버가 똑같이 사용 중인 경우 부하 분산 장치는 항상 부하가 가장 적은 서버를 선택합니다.
WR의 가장 큰 장점은 서버에서 특별한 설정이 필요하지 않기 때문에 더 나은 성능을 제공한다는 것입니다. 그러나 RR보다 더 많은 메모리와 CPU 주기가 필요합니다. WR의 주요 단점은 서버의 작업 부하가 크게 변경되면 문제가 발생할 수 있다는 것입니다.
사용자가 특정 URL을 요청하면 해당 위치에서 콘텐츠를 볼 수 있기를 기대합니다. 그러나 때로는 네트워크 문제로 인해 요청된 리소스를 호스팅하는 서버에 요청이 도달하지 못할 수 있습니다.
이러한 경우 사용자는 페이지를 찾을 수 없거나 서버를 일시적으로 사용할 수 없다는 메시지를 받습니다. "404 찾을 수 없음" 오류라고 합니다. 이 문제를 방지하기 위해 "콘텐츠 전환"이라는 기술을 사용할 수 있습니다. 콘텐츠 전환을 사용하면 특정 리소스에 대한 요청이 실패하면 로드 밸런서가 클라이언트의 요청을 동일한 리소스를 호스팅하는 다른 서버로 리디렉션합니다. 이렇게 하면 사용자에게 404 오류가 표시되지 않습니다.
로드 밸런서는 콘텐츠 전환을 구현하기 위해 리디렉션을 수행하는 방법을 이해해야 합니다. 302라는 HTTP 응답 코드를 사용하여 이를 수행합니다. 302 응답은 브라우저에게 다른 위치에 대한 새 요청을 만들도록 지시합니다.
또한 로드 밸런서는 어떤 리소스가 어떤 서버에서 호스팅되는지 확인할 수 있어야 합니다. 이를 위해 DNS NS(DNS Name Server)라는 기능을 사용합니다. DNS NS는 호스트 이름을 IP 주소로 변환합니다. 로드 밸런서는 콘텐츠 전환을 달성하기 위해 웹 사이트의 DNS 구성에 대한 정보에 액세스해야 합니다. 예를 들어 DNS 이름 서버의 위치와 IP 주소를 알아야 합니다.
로드 밸런서를 DNS 전달자로 구성하면 됩니다. 적절한 DNS 이름 서버에 쿼리를 보내도록 DNS 전달자를 구성합니다.
DNS 전달자가 DNS 이름 서버가 있는 위치를 알게 되면 쿼리를 서버로 전달합니다. DNS 네임 서버로부터 응답을 받은 후 로드 밸런서는 요청된 리소스를 호스팅하는 서버의 IP 주소를 반환합니다.
가상 서버는 콘텐츠 전환을 지원하지 않는다는 점에 유의해야 합니다. 404 상태 코드를 반환합니다.
가상 서버는 하나의 물리적 서버를 논리적으로 표현한 것입니다. 각 가상 서버에는 IP 주소와 포트 번호가 있습니다. 가상 서버는 내결함성을 제공하는 데 사용됩니다. 가상 서버가 다운되면 가상 서버로 향하는 트래픽이 다른 물리적 서버로 리디렉션됩니다.
로드 밸런싱에서 모든 요청은 동일한 경로를 거칩니다. 따라서 캐시에는 항상 데이터 복사본이 하나만 있습니다. 첫 번째 서버에 과부하가 걸리면 다른 서버의 작업량이 줄어듭니다. 콘텐츠 전환에서 각 요청은 별도의 경로로 이동합니다. 따라서 캐시에는 데이터의 여러 복사본이 있습니다. 첫 번째 서버에 과부하가 걸리면 다른 서버에 더 많은 작업이 할당됩니다.
로드 밸런싱에서 로드 밸런서는 각 서버의 상태를 추적합니다. 서버가 응답을 중지하면 로드 밸런서에 경고합니다. 그런 다음 로드 밸런서는 서비스에서 해당 서버를 제거합니다. 콘텐츠 스위칭에서 로드 밸런서는 서버의 상태를 추적합니다. 그러나 그들은 클라이언트에게 경고를 보내지 않습니다. 대신 요청을 다른 서버로 리디렉션합니다.
로드 밸런싱에서 서버가 충돌하면 로드 밸런서는 요청이 실패했다는 메시지를 클라이언트에 보냅니다. 콘텐츠 전환에서 서버가 충돌하면 로드 밸런서는 클라이언트에 아무 것도 알려주지 않습니다.
로드 밸런싱에서 서버가 다시 가동되면 로드 밸런서는 충돌 원인을 파악하려고 시도합니다. 그런 다음 다시 온라인 상태로 전환할지 여부를 결정할 수 있습니다. 콘텐츠 스위칭에서 로드 밸런서는 서버가 작동할 때 모든 것이 정상이라고 가정합니다. 왜 다시 왔는지 확인할 필요가 없습니다. 새 요청을 보내기 시작합니다.
로드 밸런싱에서 클라이언트가 웹 사이트에 도달하려는 시도를 포기하기 전에 오류가 발생하는 횟수를 설정할 수 있습니다. 콘텐츠 전환에서는 클라이언트가 웹 사이트에 도달하기를 포기하기 전에 대기하는 시간을 제어할 수 없습니다.
부하 분산에서 단일 서버 오류는 일부 응용 프로그램에 문제를 일으킬 수 있습니다. 좋은 예는 장바구니 애플리케이션입니다. 사용자가 장바구니에 항목을 넣은 다음 결제하지 않고 떠나면 주문이 완료되지 않습니다.
콘텐츠 스위칭에서 단일 서버 장애는 어떤 애플리케이션에도 영향을 미치지 않습니다.
로드 밸런싱은 제한이 적고 성능이 더 좋기 때문에 콘텐츠 전환보다 낫습니다. 전체 프로그램은 로드 밸런서가 모든 연결을 처리하는 반면 콘텐츠 스위처는 동일한 IP 주소에서 오는 연결만 처리한다는 점을 제외하면 매우 유사합니다. 그러나 둘 다 장점과 단점이 있습니다. 그것들을 사용하기 전에 그것이 무엇인지 아는 것이 중요합니다.
게리 밀레바