Lastausgleichsunterschied zwischen DNS und IP - Weiterleitung vs. Umleitung


9

Ich bin auf eine Situation gestoßen, die ich nicht verstehen kann. Wir haben eine Fortigate-Firewall, die wir für den Lastausgleich zwischen zwei Back-End-Apache-Webservern aktiviert haben. Ein DNS-Name wird dann der virtuellen IP auf dem Load Balancer zugeordnet.

Wenn Sie zum DNS- Namen / zur DNS- URL (z. B. www.something.com) navigieren, stellt der Load Balancer erwartungsgemäß eine Seite von einem der Back-End-Apache-Webserver bereit. Die URL im Browser bleibt www.something.com . Soweit ich weiß, leitet der Load Balancer in diesem Fall einfach Pakete zwischen dem Browser und Apache weiter, während er immer im Pfad bleibt.

Wenn ich jedoch zu der IP-Adresse navigiere, der der DNS zugeordnet ist, gibt der Load Balancer einen gefundenen HTTP 302 zurück, wobei der Standortheader auf die DNS-URL eines der Apachen gesetzt ist. Die URL im Browser ändert sich in den DNS des Back-End-Servers.

Warum leitet der Load Balancer bei einer Abfrage über IP um, leitet den In-Path jedoch korrekt weiter, wenn er über einen DNS-Namen abgefragt wird?

Antworten:


10

Ich habe keine Fortigate FW für den Lastausgleich verwendet, daher werde ich einige der Fragen allgemeiner beantworten.

Was Ihr Problem betrifft, macht der Load Balancer genau das, was er tun soll, und ich denke, Ihre Server sind möglicherweise nicht richtig konfiguriert, um auf eine Anfrage nach ihrer IP-Adresse zu antworten. Wenn Sie dies hinter dem Lastenausgleich testen, können Sie den Domänennamen in der Hosts-Datei eines lokalen Clients hinter der Firewall mit dem Server festlegen und sowohl mit dem Domänennamen als auch mit der internen IP darauf zugreifen. Sie werden wahrscheinlich das gleiche Ergebnis erhalten, das Sie jetzt sehen.

Ich vermute, dass Sie virtuelles Hosting aktiviert haben (um mehrere Domains auf einem einzigen Server zu unterstützen) und der "Standard" nicht dieselben Seiten wie Ihre Domain bedient. In beiden Fällen erhalten Sie eine Webseite vom Server zurück. Wenn Sie Hilfe bei der Konfiguration Ihres Webservers benötigen, können Sie ServerFault ausprobieren .

Zweitens, um etwas detaillierter zu werden. Ein Load Balancer arbeitet normalerweise bei L7 für mindestens HTTP- und HTTPS-Cluster. Dies bedeutet, dass sie nicht nur die IP-Adresse überprüfen und weiterleiten, noch die Seite "umleiten".

Wenn sie eine Anfrage erhalten, analysieren sie die Anfrage tatsächlich und leiten sie nach der Verarbeitung der Anfrage an einen Server weiter. Zu diesem Zeitpunkt können sie viele Dinge tun, z. B. das Umschreiben der Header in beide Richtungen, das Hinzufügen von Cookies (aus Gründen der Persistenz) zu den Daten, die an den Client zurückgegeben werden, das Beenden von SSL-Sitzungen, das Abgleichen anhand der URL usw.

Ich empfehle Ihnen, einige Zeit damit zu verbringen, die Herstellerdokumente vollständig zu lesen, um ein besseres Verständnis der Funktionsweise des Lastausgleichs zu erhalten (mit Fortigate können Sie sowohl deren als auch Coyote Point lesen - ein weiteres von Fortigate erworbenes Lastausgleichsunternehmen). Wenn Sie wissen, was es tut, können Sie in solchen Fällen Funktionen freischalten, von denen Sie nicht wissen, dass sie vorhanden sind.


Das Problem war eine Konfiguration auf dem Back-End-Apache-Webserver. Der neue DNS-Name musste als Alias ​​hinzugefügt werden.
Yusuf

3

Nachdem ich den hostbasierten HTTP-Lastausgleich im Fortigate Load Balancing- Dokument gelesen habe , kann ich sehen, wie Sie eine atypische Lastausgleichskonfiguration haben können, die zu dem führen kann, was Sie beschreiben. Ohne einen Teil Ihrer Konfiguration können wir jedoch nicht sicher sein, ob dies bei Ihnen der Fall ist.

Fortigate FortiOS ermöglicht die Erstellung eines virtuellen Servers, der an reale Server gebunden ist, die jeweils eine andere Host-Header-Konfiguration haben . Sollten Anforderungen mit dem VIP Ihres virtuellen Servers übereinstimmen, werden die Anforderungen mit Lastenausgleich nur an echte Server gesendet, die diesen Anforderungen entsprechen host header. Der wichtigste Teil, der Ihre Symptome gut erklärt, ist, dass einer der Real Server den Host-Header weglassen kann, damit er mit jedem Host-Header übereinstimmt .

Der Real Server ohne Host-Header wurde möglicherweise als eine Art "Sammelbegriff" konfiguriert, der auf einer Site landet, die die Umleitung durchführt.

Im folgenden Beispiel verarbeiten nur der erste und der zweite Server den Datenverkehr, der Ihrem bevorzugten DNS-Namen entspricht, über den Host-Header. Der dritte Server verwendet jedoch alles, was mit allen anderen Host-Headern übereinstimmt, einschließlich des DNS-VIP selbst, und sendet an eine Site, die eine Umleitung durchführen könnte .

config firewall vip
 bearbeiten Sie "http-host-ldb"
  Stellen Sie den Typ Server-Lastausgleich ein
  setze extip 192.0.2.1
  set extintf "lan"
  Legen Sie den Servertyp http fest
  setze ldb-Methode http-host
  setze extport 80
  config realservers
    bearbeiten 1
      setze http-host "www.example.com"
      setze ip 192.168.2.1
      Stellen Sie Port 80 ein
      Nächster
    bearbeiten 2
      setze http-host "www.example.com"
      setze ip 192.168.2.2
      Stellen Sie Port 80 ein
      Nächster
    bearbeiten 3
      setze ip 192.168.2.3
      Stellen Sie Port 80 ein
      Nächster
    Ende
 Ende

Ich nehme an, der Firewall-Lastausgleich könnte die Umleitung selbst durchführen, aber wir können dies anhand der begrenzten Informationen nicht beurteilen.


In dieser Konfiguration wird die namenbasierte Übereinstimmung festgelegt. Und das ist das Problem. Wenn Sie nach Adresse zum VIP gehen, weiß dieser nicht, was er damit machen soll. (Es gelten dann die normalen NAT-Regeln)
Ricky Beam

Der Hauptgrund, warum ich nicht geglaubt habe, dass dies die Antwort ist, ist, dass kein mir bekannter FW / Load Balancer einen 302 zurückgibt, dessen Speicherort auf den Hostnamen / die Domäne der internen Ressource festgelegt ist (zumindest ohne dies speziell zu konfigurieren) also, was aufgrund der Frage nicht der Fall war).
YLearn

@ RickyBeam, nur die ersten Server führen einen Hostnamenabgleich durch. Der letzte Server würde mit der VIP-Adresse als Host übereinstimmen.
Generalnetworkerror

@YLearn, ich stimme zu, dass dies seltsam wäre; Ich sagte, der Server, nicht der LB, hätte den 302 gemacht und wäre dafür konfiguriert worden. Ich kenne auch keine LB, die das getan hätte.
Generalnetworkerror
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.