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.