2 Server, eine Domain

cortlieb

New Member
Hallo liebe Experten, mal eine dumme Frage.

Ich habe 2 Server und eine Domain, die dem ersten Server zugeordnet ist.
Den zweiten Server spreche ich mit seiner IP-Adresse an.
Zukünftig möchte ich aber auch Dienste auf beiden Servern dritten zugänglich machen. Da ist das mit der IP-Adresse dann nicht mehr ganz praktikabel.

Ich könnte einen weitere Domain buchen und damit den zweiten (und perspektivisch auch noch weitere) Server erreichen.
Schöner wäre es aus meiner Sicht aber, wenn man die Server mit der gleichen Domain und verschiedenen Subdomains ansprechen könnte.
Tolle wäre, wenn man dann auch keine Portnummern für die verschiedenen Dienste mehr angeben müsste, sondern die Ports sozusagen über die verschiedenen Subdomains mit angesprochen werde würden.

Also nicht:
<tolle_domain>1.de:1234, <tolle_domain>2.de:2345, <tolle_domain>3.de:3456, ...
sondern
<service_a>.<tolle_domain>.de, <service_b>.<tolle_domain>.de, <service_c>.<tolle_domain>.de, ...

Habe hier schon ein bisschen rum gelesen, aber noch keine ganz klare Idee. Vielleicht hat ja auch jemand einen Link zu einer Anleitung.

Vielen Dank
Christian
 
Du brauchst noch nicht mal unbedingt eine zweite Domain, sondern kannst auch einfach nur Subdomains auf die IP des zweiten Servers zeigen lassen und er ist dann über diese Subdomain erreichbar.
Portnummern kannst du über Subdomains aber nicht abbilden. Eine Portangabe ist i.d.R. nicht notwendig, wenn der Standardport der Anwendung verwendet wird (http hat Port 80, https hat Port 443, das HTTP-Protokoll liefert auch die (Sub-)Domain mit, welche im Browser eingetippt wurde und daran kann der Webserver erkennen, welche Webseite übertragen werden muss). Musst du einen abweichenden Port verwenden, muss dieser immer mit angegeben werden.
Der Vollständigkeit halber sei noch erwähnt, dass einige DIenste auch SRV-Records im DNS unterstützen und darüber den Port ermitteln, da kommt es aber sehr stark auf den jeweiligen Serverdienst an - da ist es aber normalerweise auch in der Doku des jeweiligen Dienstes beschrieben.
 
Welche Dienste verwendest auf den Ports?

Wenn das http/https ist, kannst Du einen ReverseProxy davor setzen und du brauchst gar keine Ports mehr angeben.
 
Du brauchst noch nicht mal unbedingt eine zweite Domain, sondern kannst auch einfach nur Subdomains auf die IP des zweiten Servers zeigen lassen und er ist dann über diese Subdomain erreichbar.
Ja, das war genau mein Wunsch.
 
Welche Dienste verwendest auf den Ports?

Wenn das http/https ist, kannst Du einen ReverseProxy davor setzen und du brauchst gar keine Ports mehr angeben.
Ja, ich habe schon gemerkt, dass meine Frage nicht ganz präzise formuliert war (auch weil ich mir erst mal selber darüber klar werden musste).
Aber ich glaube da hast du einen Punkt, obwohl ich nur eine sehr vage Vorstellung davon habe, was ein ReverseProxy tut.

Tatsächlich geht es um Anwendungen, die eine Web-Oberfläche bereitstellen. Um nicht einem Standard-Webserver in die Quere zu kommen, nutzen sie andere Ports.
Konkret:
  • InfluxDB (Zeitreihen Datenbank)
    Interface auf Port 8086
  • Grafana (grafische Darstellung von Daten)
    Interface auf Port 3000
Im Kopf habe ich jetzt so etwas:

daten_smartcity.tolledomain.de --> <IP server 1>:8086
daten_smartforest.tolledomain.de --> <IP server 2>:8086
dashboard_smartcity.tolledomain.de --> <IP server 1>:3000
dashboard_smartforest.tolledomain.de --> <IP server 2>:3000

Ist dafür ein ReverseProxy die richtige Antwort?
 
Solange es auf den anderen Ports ebenfalls um http/https Traffic geht, kann ein Reverseproxy die passende Lösung sein. Vereinfacht geht ein ReverseProxy hin, nimmt die Anfrage auf dem Standardport entgecken, baut dann eine eigene Verbindung zum Dienst auf dem anderen Port auf und gibt dessen Antwort an den Browser zurück.
Sofern auf den Servern schon ein Webserver wie Apache oder nginx läuft, können diese die Aufgabe des ReverseProxy mitübernehmen.
Wenn es dich nicht stört, dass der abweichende Port im Browser angezeigt wird, kannst du im Webserver auf Port 80/443 auch einfach eine Weiterleitung auf den Non-Standardport einrichten. Diese Einrichtung ist oft weniger komplex.
 
OK, dann werde ich mich mal mit ReverseProxys beschäftigen.

Aber damit ich das noch mal richtig verstehe. Wenn ich mein obiges Beispiel nehme:
  • Ich müsste auf Server 1 und Server 2 einen ReverseProxy laufen haben, um die Zuordnung von Subdomains (oder Unterverzeichnissen, vielleicht noch besser) zu Ports zu haben.
  • Es müsste zusätzlich DNS-Einträge geben, die Subdomains (oder auch Unterverzeichnisse, würde das auch gehen?) von tolledomain.de auf entweder <IP server 1> oder <IP server 2> leiten, wo dann die ReverseProxys übernehmen?
:unsure:
 
Den ReverseProxy solltest du auf beiden Systemn installieren - sonst muss der ganze Datenverkehr von z.B. Server 2 ja erst noch durch Server 1 durch, auf dem der ReverseProxy läuft (wenn du nur auf Server 1 einen installierst).
Die DNS-Auflösung macht nur die Zuordnung FQDN <-> IP, keine Ports und keine Verzeichnisse. Ob du Subdomains nimmst oder Verzeichnisse, regelt die Konfiguration des ReverseProxys. Du benötigst aber mindestens zwei Domains, um die unterschiedlichen IPs deiner beiden Server aufzulösen.
Und wenn du auf deinen Servern schon einen normalen Webserver wie Apache laufen haben, kannst du natürlich nicht noch extra einen ReverseProxy installieren. Aber Apache kann als ReverseProxy arbeiten.
 
Du benötigst aber mindestens zwei Domains, um die unterschiedlichen IPs deiner beiden Server aufzulösen
Den Teil habe ich nicht verstanden. Das war ja gerade eines meiner ursprünglichen Ziele, zwei Server unter einer TLD zu erreichen.
So hatte ich auch einen früheren Post von dir in diesem Thread verstanden.

Du brauchst noch nicht mal unbedingt eine zweite Domain, sondern kannst auch einfach nur Subdomains auf die IP des zweiten Servers zeigen lassen und er ist dann über diese Subdomain erreichbar.
Habe ich dich missverstanden?
 
Du hast bisher noch nicht mal gesagt, welchen Webserver Du verwendest. Apache bzw. Nginx waren nur eine Vermutung von Danton.

Aber nehmen wir mal Dein Beispiel:
daten_smartcity.tolledomain.de --> <IP server 1>:8086
daten_smartforest.tolledomain.de --> <IP server 2>:8086
dashboard_smartcity.tolledomain.de --> <IP server 1>:3000
dashboard_smartforest.tolledomain.de --> <IP server 2>:3000
Zunächst setzt Du im DNS:
Code:
daten_smartcity.tolledomain.de       IN A <IP server 1>
daten_smartforest.tolledomain.de     IN A <IP server 2>
dashboard_smartcity.tolledomain.de   IN A <IP server 1>
dashboard_smartforest.tolledomain.de IN A <IP server 2>

Anschließend konfigurierst Du im Apache auf Server 1:

Apache config:
<VirtualHost *:80 *:443>
  ServerName daten_smartcity.tolledomain.de
  [...]
  ProxyPass / http://localhost:8086/
</VirtualHost>
<VirtualHost *:80 *:443>
  ServerName dashbord_smartcity.tolledomain.de
  [...]
  ProxyPass / http://localhost:3000/
</VirtualHost>

und auf Server 2:

Apache config:
<VirtualHost *:80 *:443>
  ServerName daten_smartforest.tolledomain.de
  [...]
  ProxyPass / http://localhost:8086/
</VirtualHost>
<VirtualHost *:80 *:443>
  ServerName dashbord_smartforest.tolledomain.de
  [...]
  ProxyPass / http://localhost:3000/
</VirtualHost>

Wenn Du willst, kannst Du auch kreuzweise proxyen, also auf Server 1 noch

Apache config:
<VirtualHost *:80 *:443>
  ServerName daten_smartforest.tolledomain.de
  [...]
  ProxyPass / http://<IP server 2>:8086/
</VirtualHost>
<VirtualHost *:80 *:443>
  ServerName dashbord_smartforest.tolledomain.de
  [...]
  ProxyPass / http://<IP server 2>:3000/
</VirtualHost>

und andersherum. Damit könnte man die Last verteilen, erreicht aber keine wirkliche Redundanz, weil natürlich die eigentlichen Graphen jeweils nur auf einem Server laufen.

Noch schnell Zertifikate für alle Domains bei Let's Encrypt besorgt und es klappt auch mit https://

Disclaimer: Config ist ungetestet.
 
Den Teil habe ich nicht verstanden. Das war ja gerade eines meiner ursprünglichen Ziele, zwei Server unter einer TLD zu erreichen.
So hatte ich auch einen früheren Post von dir in diesem Thread verstanden.
Das bezog sich auf Sub-Domains. Selbst wenn du mit Verzeichnissen arbeitest, benötigst zu zumindest zwei Subdomains, weil du ja zwei Server und somit zwei IP-Adressen auflösen musst. Im übrigen sind deine Beispieldomains ungültig wegen dem Unterstrich, verwende stattdessen einen Bindestrich.
 
Du hast bisher noch nicht mal gesagt, welchen Webserver Du verwendest
Das liegt daran, dass ich im Moment gar keinen verwenden. Die oben genannte Applikationen bringen ihren eigenen Webserver mit. Ich würde jetzt einen als Reverseproxy installieren. Vielleicht dann auch als Webserver (geht das gleichzeitig?).
Aber nehmen wir mal Dein Beispiel:
Super, vielen Dank für deine detaillierten Hinweise! Ich werde mich ein bisschen damit beschäftigen und ich denke, dann wird es klappen!
 
Ich würde jetzt einen als Reverseproxy installieren. Vielleicht dann auch als Webserver (geht das gleichzeitig?).
Apache und Nginx sind Webserver, die als ReverseProxys eingesetzt werden - und das sehr flexibel - für einzelne Subdomains oder sogar nur einzelne Verzeichnisse. Dabei können sie auch weiter als normaler Webserver arbeiten. Wenn du später auch mal statische oder dynamische Webseiten (z.B. mit PHP, Perl oder Python) auf seinem Server hosten willst, ist das kein Problem. Auf meinen privaten Servern läuft Apache, weil ich den besser kenne.
 
Back
Top