
Kann Traceroute einen Load Balancer erkennen, der zwischen einem Anwendungsserver und einer Datenbank sitzt? Nachdem ich ein Traceroute vom Anwendungsserver zur Datenbank ausgeführt hatte, erhielt ich nur einen Hop. Der Hop war die Zieldatenbank
Antwort1
Lassen Sie uns zunächst den trivialen Fall klären: Ich gehe davon aus, dass die von Ihnen verfolgte IP nicht tatsächlich zum Load Balancer gehört. Das wäre der typischste Fall.
Wenn Sie das weglassen, bedeutet das, dass Sie versuchen, einen Load Balancer zu erkennen, der sich auf Ihrem Routing- (Weiterleitungs-)Pfad befindet. Diese Dinge werden als Network Load Balancer (NLBs) bezeichnet. Der Traceroute erkennt nur eine bestimmte Art von Geräten – diejenigen, die das TTL-Feld in einem Paket verringern. Ein typischer Router tut das, ein NLB jedoch oft nicht.
Daher können Sie nicht zuverlässig sagen, ob ein NLB unterwegs war, wenn Sie nur auf Traceroute schauen.
Antwort2
Kurze Antwort: Nein.
Lange Antwort:
traceroute
soll erkennen router
. Diese werden verwendet, um Verkehr von einem IP-Subnetz (IP + MASKE gibt ein Subnetz an) zu einem anderen zu übertragen.
Loadbalancer sollen für Clients transparent sein. Das heißt, sie nehmen Verkehr an und leiten ihn an das eine oder andere Ziel weiter. Für den Client sieht es also so aus, als ob er jedes Mal auf denselben Server zugreift, aber im Hintergrund wird die Anfrage aus verschiedenen Gründen (Lastausgleich, hohe Verfügbarkeit, ...) auf zwei oder mehr Server verteilt.
Für Ihre spezielle Konstellation sieht das so aus:
user-client <-> application server <-> database
Ihr Benutzer-Client fordert Ressourcen vom Anwendungsserver an, aber der Anwendungsserver ist der Client der Datenbank und nicht der Benutzer-Client selbst. Sie können also die Datenbank hinter dem Anwendungsserver grundsätzlich nicht aus der Perspektive des Benutzer-Clients sehen.
Wenn Sie diese Konstellation nicht selbst erstellt haben, können Sie nicht sicher sein.
Sie könnten versuchen, Wireshark/tcpdump zu verwenden und die MAC-Adressen zu analysieren, um zu sehen, woher Ihr Datenverkehr kommt.
Antwort3
Der Load Balancer ist also für die Datenbankverbindungen gedacht? Können Sie die IP des Load Balancers und auch direkt die Datenbank anpingen? Gibt es mehrere Datenbanken?
Und sprechen wir von einer LAN-Verbindung oder befinden sich der App-Server und die Datenbank zumindest im selben öffentlichen oder privaten Subnetz? Ich möchte nur sicherstellen, dass Sie keinen anderen Hop als die Datenbank oder den Lastenausgleich erwarten.
Ohne weitere Informationen ist es schwierig, eine konkrete Antwort zu geben, aber wenn Sie einen Traceroute zur IP des Load Balancers ausführen, sollte er dort enden. Wenn Sie den Traceroute direkt zur IP der Datenbank ausführen ... dann sollte der Traceroute dort hingehen.
Ich glaube, dass es sich bei den meisten Datenbank-Load Balancern tatsächlich um Proxys handelt, sodass Ihr Traceroute „zur Datenbank“ möglicherweise den Load Balancer erreicht … wenn dies die IP ist, die Sie eingeben.