Netzwerkports und Lastverteilung

Portübersicht

  1. Webzugriffe:
    • HTTP - 80
    • HTTPS - 443
  2. Datenbank-Verbindungen:
    • MySQL - 3306
    • PostgreSQL - 5432
    • Microsoft SQL Server:
      • 1433 - Für Datenbank-Engine
      • 1434 - Für Browser-Dienst
    • Redis-Cache - 6379
  3. Management-Zugriffe:
    • SSH - 22
    • FTP - 21
  4. Interne Zugriffe:
    • DNS - 53
    • DHCP:
      • 67 - Server
      • 68 - Client
    • NTP - 123
    • NFS - 2049
    • SMB - 139, 445
  5. Externe Zugriffe:
    • SMTP:
      • 25 - Server zu Server unverschlüsselt
      • 587 - Standard für verschlüsselte E-Mails
      • 465 - Älterer Standard für SSL/TLS
    • IMAP:
      • 143 - Unverschlüsselt
      • 993 - SSL/TLS
    • POP3:
      • 110: Unverschlüsselt
      • 995: SSL/TLS

HTTP Status Codes

1xx: Informational - Request received, continuing process
2xx: Success - The action was successfully received, understood, and accepted
3xx: Redirection - Further action must be taken in order to complete the request
4xx: Client Error - The request contains bad syntax or cannot be fulfilled
5xx: Server Error - The server failed to fulfill an apparently valid request

HTTP-Methoden

GET: Ruft Daten ab.
POST: Erstellt neue Ressourcen.
PUT: Aktualisiert eine bestehende Ressource.
DELETE: Löscht eine Ressource.

HTTP-Header

HeaderTypTechnische Relevanz
HostRequestGibt den Ziel-Hostnamen an (z.B. shop.example.com). Dies ist zwingend erforderlich für Virtual Hosting, damit der Webserver weiß auf welche Website ausgeliefert werden soll, wenn mehrere Domains auf derselben IP-Adresse liegen.
Cookie/Set-CookieBeideDient der Zustandsverwaltung (Session Management). Im Kontext von Lastverteilung wird dieser Header oft genutzt, um Session Stickiness zu gewährleisten (ZUordnung eines Clients zu einem spezifischen Backend-Server).
User-AgentRequestÜbermittelt Informationen über die Client-Software und das Betriebssystem. Dies wird für Analytics, Browser-Weichen oder das Blockieren unerwünschter Bots verwendet.
X-Forwarded-ForRequestIdentification der Quell-IP: Da ein Webserver hinter einem Load-Balancer nur die IP des Balancers sieht, wird hier die ursprüngliche IP-Adresse des Clients durchgereicht. Wichtig für korrekte Access-Logs und Sicherheitesanalysen.

Load Balancing

Load Balancing ist die Verteilung von Rechenlasten auf mehrere Computer/Server. Im Internet wird Load Balancing genutzt um den Netzwerktraffic auf mehrerere Server aufzuteile. Dies reduziert die Belastung der einzelnen Server und erhöht die Effizienz, Performance und verringert die Latenz.

Ohne Load Balancing:

OSI Modell
Server überlasten ohne Load Balancing.
Quelle: Cloudflare

Mit Load Balancing:

OSI Modell
Der Loadbalancer verteilt die Last auf mehrere Server
Quelle: Cloudflare

Es gibt zwei Arten von Loadbalancing: Statisch und Dynamisch

Statisches Load Balancing

Statische Loadbalancer weisen ‘stur’ einem vorgelegtem Plan nach Clients zu den servern. Dies kann dazu führen, dass sich Clients die mehr Leistung anfordern durch Zufall bei einem Server sammeln und diesen Überlasten. Statisches Loadbalancing ist schnell im Setup aber kann gegebenfalls zu Problemen führen.

Dynamisches Load Balancing

Anders als Statische Loadbalancer berücksichtigen Dynamische Loadbalancer mehrere Dinge beim zuordnen von Clients zu Server. Sie können weniger belastete Server bevorzugen oder Server überspringen wenn diese ausfallen. Das Setup hier ist komplizierter und das Loadbalancing ist Rechenintensiver aber zahlt sich long term aus da sie Stabiler laufen.