Traefik: Datenverkehr auf einen anderen Server weiterleiten

Als Vorbereitung f√ľr das √úbersiedeln meiner Websites habe ich nach einer M√∂glichkeit gesucht den kompletten Datenverkehr vom alten Server einfach auf den neuen weiterzuleiten.¬†

DNS-Eintrag ändern

Bisher habe ich nach dem √úbertragen meiner Websites auf einen neuen Server nur den DNS-Eintrag ge√§ndert und gewartet bis dieser √ľberall aktiv war. Innerhalb einer gewissen √úbergangsphase landeten die Zugriffe dabei teils noch am alten, teils schon am neuen Server.¬†Klar kann vorbereitend die TTL der DNS-Eintr√§ge verkleinert und somit die √úbergangszeit zumindest f√ľr einen Gro√üteil der Zugriffe minimiert werden, dennoch bleibt eine gewisse Zeit, in der die Versionsst√§nde der Server etwas auseinanderdriften.¬†

‚ďė
Die TTL (Time to Live) ist eine Eigenschaft eines jeden DNS-Eintrags und gibt vor, in welchen Abst√§nden andere DNS-Server diesen auf eine √Ąnderung kontrollieren sollen. Je nach Auslastung der DNS-Server wird der Wert in der Praxis nicht immer eingehalten, speziell, wenn die Zeit auf wenige Minuten gestellt wird. √úbliche TTL-Werte sind 86400 Sekunden (24 Stunden) oder 3600 Sekunden (1 Stunde)

Um die Downtime beim Serverwechsel möglichst gering zu halten, habe ich den Datenverkehr vom alten Server dieses Mal einfach auf den neuen weitergeleitet. 

Alle Anfragen vom alten auf den neuen Server weiterleiten

Ich habe alle Docker-Volumes:¬†Traefik Reverse Proxy + Let¬īs Encrypt inklusive aller Websites mit rsync auf den neuen Server kopiert und dort aktiviert. Damit alle Zugriff am Ziel-Server¬† landen, habe ich die¬†Traefik-Einstellungen am¬†Quell-Server ersetzt. Mit dem folgenden Setup k√∂nnen √ľber die IP-Adresse des alten Servers, alle Zugriffe auf den neuen Server weitergeleitet werden und somit die Zeit bis die DNS-√Ąnderungen fl√§chendeckend bekannt sind √ľberbr√ľckt werden:

F√ľr das Setup habe ich zwei Dateien angelegt: docker-compose.yml und traefik.yml:

Traefik docker-compose.yml

version: "3.3"
services:
  traefik:
    image: "traefik:v2.8"
    container_name: "traefikforward2"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "./traefik.yml:/etc/traefik/traefik.yml"

Traefik sucht in /etc/traefik nach einer traefik.yml-Datei und versucht diese zu laden:

traefik.yml

Die folgende Traefik-Konfiguration leitet http und https-Anfragen komplett auf einen anderen Server. Die IP-Adresse f√ľr die Umleitung ist hier mit dem Platzhalter ???.???.???.??? bef√ľllt und muss entsprechend der IP-Adresse des Zielservers angepasst werden. Durch die Option tls: passthrough wird der komplette Datenverkehr verschl√ľsselt weitergeleitet und somit dem Ziel-Server √ľberlassen.¬†

[+]
providers:
  file:
    filename: /etc/traefik/traefik.yml

accessLog: {}
log:
  level: DEBUG

entryPoints:
  web:
    address: ":80"
  websecure:
    address: ":443"

tcp:
  routers:
    router4web:
      entryPoints:
        - web
      service: web-forward
      rule: "HostSNI(`*`)"
    router4websecure:
      entryPoints:
        - websecure
      service: websecure-forward
      rule: "HostSNI(`*`)"
      tls:
         passthrough: true

  services:
    web-forward:
      loadBalancer:
        servers:
          - address: "???.???.???.???:80"

    websecure-forward:
      loadBalancer:
        servers:
          - address: "???.???.???.???:443"

Durch das Anpassen der Rule "HostSNI(`*`)" eines Routers k√∂nnten auch nur bestimmte Websites weitergeleitet werden (* erlaubt alle Domain-Namen). Nat√ľrlich k√∂nnen mit dem Setup auch weitere Ports, wie zum Beispiel 25 beim Betrieb eines Mailservers angegeben werden. Ich habe die Traefik-Konfiguration (traefik.yml) absichtlich schlank gehalten, damit diese noch √ľbersichtlich bleibt. Der Inhalt der traefik.yml Datei ist ein einfaches Beispiel und hat mir geholfen die einzelnen Traefik-Services besser zu verstehen:

Die¬†entryPoints¬†legen die Zugriffe, als Beispiel auf bestimmte Ports fest. Ein Zugriff √ľber einen entryPoint kann dann von einem Router¬†verarbeitet und an ein¬†Service¬†√ľbergeben werden.

Forwarder starten

Der Start erfolgt aus dem Ordner mit den zuvor angelegten Dateien mit dem Befehl docker-compose up:

docker-compose up -d

Zugriffe kontrollieren

In der traefik.yml-Datei habe ich das Loglevel auf "DEBUG" gesetzt um eingehende Zugriffe in der Ausgabe des Docker-Containers beobachten zu können. Die Aufrufe können einfach mit "docker logs" angezeigt werden:

docker logs traefikforward2 -f

Ausgabe:

Siehe auch, Praxisbericht zum √úbersiedeln meines Webservers: alle Docker-Container √ľbersiedeln

Weitere Informationen zu meinem Traefik-Setup, siehe auch: sichere https Verbindung: Traefik Reverse Proxy + Let¬īs Encrypt

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE f√ľr deine Bewertung!

Aktualisiert: 11.09.2022 von Bernhard | Translation English |ūüĒĒ | Kommentare:0

‚ě® Webserver mit Docker Container umziehen, Theorie und Praxis | ‚ě¶ Webhosting | Docker vs. Plesk, eine Alternative f√ľr den Betrieb von Websites ‚ě®

Top-Artikel in diesem Bereich


Webserver mit Docker Container umziehen, Theorie und Praxis

Wer einen virtuellen Server oder Cloud-Server mietet, muss diesen f√ľr ein neues Betriebssystem von Zeit zu Zeit austauschen. Sp√§testens, wenn f√ľr das Betriebssystem keine Updates mehr zur Verf√ľgung gestellt werden, ist ein Serverwechsel unausweichlich. Vor einiger Zeit habe ich alle Websites auf Docker-Container umgestellt, was den Umzug beschleunigen soll. Zun√§chst etwas Theorie zu meinen √úberlegungen, dann wie mein Serverumzug zuletzt vonstattenging. Zus√§tzli...


WordPress in Docker inkl. HTTPS Let's Encrypt-Setup

Die zurzeit wohl am weitesten verbreitete Blogging-Software WordPress kann unter anderem einfach und kosteng√ľnstig in Docker-Containern betrieben werden. Als Server bietet sich daf√ľr ein virtueller Server oder Cloud-Server eines bekannten Hosting-Providers an, siehe auch: Providerwechsel HostEurope vs Hetzner, vServer vs Cloud-Server. Wer den Betrieb eines eigenen Webservers nicht scheut, kann mit dem hier vorgestellten Setup darauf eine oder mehrere WordPress-Seiten inklusive kostenlosem https-...


Systeme √ľberwachen: Monitoring in HomeAssistant mit Glances

F√ľr das Sammeln von Systemdaten anderer Betriebssysteme bietet HomeAssistant unter anderem eine Glances-Integration.¬† Glances ist ein Terminalprogramm f√ľr das √úberwachen des Systemstatus wie der CPU, Memory oder des Diskverbrauches. Der zus√§tzliche WebServer-Mode erlaubt es den Status auch ohne SSH abzurufen. Informationen zur Integration in Home-Assistant, siehe:¬†Home-Assistant.¬†

Fragen / Kommentare


Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu Mehr Details