로드 밸런서는 무엇을 반환합니까?


12

사용자가로드 밸런서에 도달하고로드 밸런서가 전달할 웹 서버를 결정하면 다음에 어떻게됩니까? 로드 밸런서는 요청과 모든 데이터를 웹 서버에 전달하고 웹 서버의 응답을 수신 한 후 사용자에게 다시 반환합니까?

아니면로드 밸런서가 문자 그대로 선택한 서버의 IP 주소를 브라우저로 다시 반환하고 브라우저가 지정된 서버와의 새 연결을 열어야하는 리디렉션과 더 비슷합니까?

내 본능은 모든 웹 서버 IP 주소가 공개 될 것이라는 것을 의미하기 때문에 후자가 아닐 것이라고 말했다. 보안상의 이유로로드 밸런서 주소를 공개하는 것이 가장 좋습니다. 그러나 다시 SSL termination로드 밸런서에서 활성화 하면 리디렉션 된 서버로 SSL을 다시 설정할 필요가 없기 때문에 확실 하지 않습니다.


답변:


13

최종 IP가 게시되지 않습니다. 이 프로세스는 실제로 클라이언트 (밸런서를 치는 사용자)가 실제 노드와 통신하면서 밸런서와 통신하고 있다고 믿는 방식으로 작동합니다.

매우 간단한 설명 에서 대부분의 트랜잭션은 다음과 같이 작동합니다.

  1. 사용자가로드 밸런서에 요청합니다.
  2. 밸런서는 어떤 노드가 가장 적합한 지 (밸런싱에 사용중인 전략에 따라) 결정하고 대상 IP를 선택 (변경)합니다.
  3. (이것은 마술이 일어나는 곳입니다.) 노드는 요청을 받고 연결을 수락 한 후 밸런서에 다시 응답합니다.
  4. 밸런서는 응답 IP를 다시 밸런서 중 하나 인 가상 IP로 변경하고 응답을 사용자에게 전달합니다.
  5. Voilà, 사용자는 실제로 다른 곳에서 처리되었지만 초기 요청의 IP로 응답을받습니다.

패킷 재 작성 (4 단계에서 IP 주소 변경)은 매우 중요합니다. 클라이언트가 없으면 클라이언트가 신뢰하지 않는 IP에서 패킷을 수신하면 단순히 응답을 버립니다.


4

Lad 밸런서는 Layer 4 OSI에서 작동합니다. 포트 번호까지 패킷을 캡슐화 해제 한 다음 3 모드 중 하나로 패킷을 지정합니다.

로드 밸런서는 3 가지 모드에서 작동 할 수 있습니다. 1. 직접 라우팅 이 모드에서 실제 서버는 IP 공개를 사용합니다. 밸런서는 패킷을 수신하고 계층 4까지 캡슐화를 해제합니다.로드 밸런싱 규칙이 일치하면 패킷은 수정없이 실제 서버 중 하나로 리디렉션됩니다. 실제 서버는로드 밸런싱 주소와 동일한 별칭 주소를 가지므로 실제 서버가 xxx.xxx.xxx.xxx 대상이있는 패킷을 수신하면 해당 주소 (별칭)에 해당 패킷을 정의합니다. 그런 다음 실제 서버 응답 요청을 클라이언트에 직접로드합니다 (로드 밸런스를 통하지 않음).

2. NAT 이 모드에서는 패킷이 대상 주소를 수정하여 실제 서버로 리디렉션됩니다. 대상 주소는 실제 서버 주소 (NAT)로 바뀝니다. 이 모드에서는 실제 서버에 IP 공용이 필요하지 않으며 로컬 네트워크를 사용할 수 있습니다. 그리고 패킷은 새로운 목적지 주소를 전달하지 않습니다. 실제 서버가 패킷을 수신하면 클라이언트 요청 주소 트로프 게이트웨이 (로드 밸런스)에 응답합니다. 이 모드에서로드 밸런스는 라우터 및 실제 서버의 게이트웨이로 사용됩니다.

3. 터널 이 모드에서 패킷은 새로운 src-dst 주소 (vpn과 같은)로 터널링되어 패킷을 실제 서버로 전달합니다. 실제 서버에서 패킷을 수신하면 실제 서버는 터널링 된 파이프를 통해 부하 분산에 응답합니다. 그런 다음 실제 요청 소스 주소로로드 밸런싱 배달 응답.

HTTPS / SSL의 경우로드 밸런싱이 처리하지 않고 계층 4 OSI까지로드 밸런싱 프로세스를 수행하십시오. 위의 계층 5는 실제 서버에서 처리됩니다. 따라서 TCP 3 방식 hanshake, SSL / HTTPS는 실제 서버에서 처리됩니다. 패킷의로드 밸런스 전용 디렉터.

내 작은 설명이 도움이 되길 바랍니다.


여기서 lvs에 대해 이야기하고있는 것 같지만 반드시 http (s)로드 밸런싱이 작동하는 방식은 아닙니다. 예를 들어 haproxy를 살펴보십시오. 이 앱은 사용자 영역에서로드 밸런싱을 수행하고 멋진 백엔드 라우팅 기능도 제공합니다.
Friek

내 데이터 센터에서 lvs를 사용하여 https 앱 서비스의로드 밸런싱을 수행하고 제대로 작동합니다.
dek.tiram

내 무지를 실례하지만 "lvs"는 무엇입니까? haproxy의 경쟁자입니까?
smaili

Haproxy는 lv도 사용합니다. 핵심 프로세스에 lvs를 사용하는 piranha를 사용합니다.
dek.tiram

haproxy는 독립형 응용 프로그램이며 lv가 전혀 필요하지 않습니다 (lv의 존재조차 알지 못합니다). haproxy의로드가 너무 많은 경우 lvs를 사용하여 haproxy 노드 클러스터의 균형을 조정할 수 있습니다.
Friek

-1

로드 밸런서는 라우터 또는 리버스 프록시 일 수 있습니다.

LVS는 Linux 커널을위한 업계 표준 레이어 4 (라우팅 기반)로드 밸런싱 모듈입니다. Barracuda, Loadbalancer.org 및 Kemp Technologies를 포함한 다양한 상업용로드 밸런서에 사용됩니다. Barracuda와 Loadbalancer.org는 Layer 7로드 밸런싱 ( 역 프록시 기반 )을 위해 HAProxy를 사용 합니다.

추신. 나는 이것이 어디에서 왔는지 분명히 잊었다. Loadbalancer.org


1
외부 리소스에 대한 링크를 게시 할 때 제휴 관계를 공개 해야합니다. 스패머가 아닌 방법
gnat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.