DNS와 IP의 부하 분산 차이-전달과 리디렉션


9

이해할 수없는 상황을 겪었습니다. 두 개의 백엔드 Apache 웹 서버에서로드 밸런싱을 수행 할 수있는 Fortigate 방화벽이 있습니다. 그런 다음 DNS 이름이로드 밸런서의 가상 IP에 매핑됩니다.

예상 한대로 DNS 이름 / URL (예 : www.something.com) 을 탐색 하면 Load Balancer가 백엔드 Apache 웹 서버 중 하나에서 페이지를 제공합니다. 브라우저의 URL은 www.something.com으로 유지됩니다 . 내가 이해 한 바에 따르면,이 경우 Load Balancer는 항상 경로에 머무르면서 브라우저와 Apache 사이에 패킷을 전달하는 것입니다.

그러나 DNS가 매핑 된 IP 주소 를 탐색 하면 Load Balancer는 Location 헤더가 Apaches 중 하나의 DNS URL로 설정된 HTTP 302 Found를 리턴합니다. 브라우저의 URL이 백엔드 서버 DNS로 변경됩니다.

IP를 통해 쿼리 할 때로드 밸런서가 리디렉션되지만 DNS 이름을 통해 쿼리 할 때 경로 내에서 올바르게 전달하는 이유는 무엇입니까?

답변:


10

로드 밸런싱에 Fortigate FW를 사용하지 않았으므로 좀 더 일반적으로 몇 가지 질문에 대답하겠습니다.

첫째, 문제에 관해서는로드 밸런서가 예상대로 작동하고 있으며 서버가 IP 주소의 요청에 응답하도록 올바르게 구성되어 있지 않을 수 있다고 생각합니다. 로드 밸런싱 뒤에서이를 테스트하려는 경우 서버가있는 방화벽 뒤에서 로컬 클라이언트의 호스트 파일에 도메인 이름을 설정하고 도메인 이름과 내부 IP로 모두 액세스 할 수 있습니다. 아마 지금보고있는 것과 같은 결과를 얻을 것입니다.

내 생각에 당신은 (단일 서버에서 여러 도메인을 지원하기 위해) 가상 호스팅이 켜져 있고 "기본"이 도메인과 동일한 페이지를 제공하지 않는 것입니다. 두 경우 모두 서버에서 웹 페이지를 다시받습니다. 웹 서버 구성에 도움이 필요한 경우 ServerFault 를 시도해보십시오 .

둘째, 좀 더 자세히 설명합니다. 로드 밸런서는 일반적으로 최소한 HTTP 및 HTTPS 클러스터에 대해 L7에서 작동합니다. 즉, IP 주소 만보고 전달하지 않고 페이지를 "리디렉션"하지도 않습니다.

요청을 받으면 실제로 요청을 구문 분석하고 요청을 처리 한 후 서버로 전달합니다. 이 시점에서 헤더를 양방향으로 다시 작성하거나, 쿠키를 클라이언트로 돌아가는 데이터에 추가하거나, SSL 세션을 종료하고, URL을 기반으로 일치시키는 등 여러 가지 방법이 있습니다.

로드 밸런싱 작동 방식에 대한 이해를 돕기 위해 공급 업체 문서를 완전히 읽는 데 시간을 투자하는 것이 좋습니다 (Fortigate를 사용하면 포티게이트가 인수 한 또 다른로드 밸런싱 회사 인 Coyote Point를 모두 읽을 수 있음). 그것이 무엇을하고 있는지 이해하면 이와 같은 경우에 도움이되며 존재하지 않은 기능을 잠금 해제 할 수 있습니다.


이 문제는 백엔드 Apache 웹 서버의 구성이었습니다. 새 DNS 이름을 별칭으로 추가해야했습니다.
Yusuf

3

Fortigate로드 밸런싱 문서 에서 HTTP 호스트 기반로드 밸런싱 을 읽은 후 비정형로드 밸런싱 구성을 사용하여 설명하는 결과를 얻을 수있는 방법을 알 수 있습니다. 그러나 구성의 일부가 없으면 이것이 사실인지 확실하지 않습니다.

Fortigate FortiOS를 사용하면 각각 다른 호스트 헤더 구성을 가진 실제 서버에 연결된 가상 서버를 만들 수 있습니다 . 요청이 가상 서버의 VIP와 일치하면로드 밸런싱 요청은 해당 서버와 일치하는 실제 서버로만 전달됩니다 host header. 증상을 잘 설명하는 가장 중요한 부분은 실제 서버 중 하나가 호스트 헤더를 생략하여 모든 호스트 헤더 와 일치 할 수 있다는 것입니다 .

호스트 헤더가없는 실제 서버는 경로 재 지정을 수행하는 사이트에있는 일종의 "포괄"로 구성되었을 수 있습니다.

아래 예를 사용하면 첫 번째 서버와 두 번째 서버 만 호스트 헤더를 통해 원하는 DNS 이름과 일치하는 트래픽을 처리하지만 세 번째 서버는 DNS VIP 자체를 포함하는 다른 모든 호스트 헤더와 일치하는 항목을 가져와 리디렉션 할 수있는 사이트로 보냅니다. .

구성 방화벽 VIP
 "http-host-ldb"편집
  유형 서버 부하 분산 설정
  Extip 192.0.2.1 설정
  extintf "lan"설정
  서버 유형 http 설정
  ldb-method http-host 설정
  extport 80 설정
  구성 서버
    편집 1
      http-host "www.example.com"설정
      IP 192.168.2.1 설정
      포트 80 설정
      다음
    편집 2
      http-host "www.example.com"설정
      ip 192.168.2.2 설정
      포트 80 설정
      다음
    편집 3
      IP 192.168.2.3 설정
      포트 80 설정
      다음
    종료
 종료

방화벽로드 밸런싱이 리디렉션 자체를 수행하고 있다고 가정하지만 제한된 정보만으로는 알 수 없습니다.


이 구성에서는 이름 기반 일치로 설정되어 있습니다. 그리고 그것이 문제입니다. 주소로 VIP를 방문하면 VIP로 무엇을해야할지 모릅니다. (일반 NAT 규칙이 적용됨)
Ricky Beam

내가 이것이 대답이라고 생각하지 않은 주된 이유는 내가 아는 FW /로드 밸런서가 내부 리소스의 호스트 이름 / 도메인으로 설정된 위치와 함께 302를 반환하지 않기 때문입니다 (적어도 특별히 수행하도록 구성하지 않은 경우) 그래서, 그것은 질문에 근거한 것처럼 들리지 않습니다).
YLearn

@RickyBeam, 첫 번째 서버에서 서버까지만 호스트 이름 일치 마지막 rserver는 호스트로서 VIP 주소와 일치합니다.
generalnetworkerror

@YLearn, 나는 이것이 이상하다는 것에 동의합니다. 나는 LB가 아닌 rserver가 302를 수행했을 것이고 그렇게 벌을 구성했을 것이라고 말하고 있었다. 나는 그렇게 한 LB가 없다는 것을 알고 있습니다.
generalnetworkerror
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.