Ich habe einen Web-Server, der über ein VPN eine Verbindung zu einer internen Datenbank herstellt. Es gibt 2 IPs (primäre und sekundäre) für die Datenbank vom Webserver. Wie kann ich meine Datei / etc / hosts so einrichten, dass die sekundäre IP verwendet wird, wenn die primäre IP nicht verfügbar ist?
Würde dies für meine Hosts-Datei funktionieren?
141.131.286.1 abc.efg.datastore.com #primary
141.131.286.237 abc.efg.datastore.com #secondary
linux
networking
hosts
Mike T
quelle
quelle
Antworten:
Die hosts-Datei bietet keinen solchen Mechanismus. Wenn Sie zwei IPs mit demselben Namen auflisten, wird nur die erste verwendet. Es gibt also keine primären und sekundären IPs.
Die Hosts-Datei verarbeitet auch keine URLs. Es behandelt nur Namen wie die in der Frage angegebenen. Eine URL enthält vollständigen Pfad und Protokoll wie
http://host/path/to/resource
.quelle
Sie können keine Ausfallsicherheit oder einen Round-Robin-Lastenausgleich über die
/etc/hosts
Datei bereitstellen - sie wurde nicht für diesen Zweck entwickelt.Stattdessen sind Ihre Optionen ... (in keiner bestimmten Reihenfolge)
quelle
/ etc / hosts unterstützt kein Round-Robin, aber Sie können ein einfaches Bash-Skript schreiben, um einen mit einem # RoundRobin-Kommentar gekennzeichneten Eintrag zu ersetzen (oder ein anderes Tag, das Sie verwenden möchten, spiegeln Sie es einfach in der grep-Zeile des Skripts wider). .
Das obige Skript erfasst die Ausgabe von nslookup für sub.domain.com und speichert sie in einem Array. Anschließend wird der höchste Wert in $ new ausgegeben und der vorhandene Wert für das in / etc / hosts zugewiesene Tag #RoundRobin abgerufen. Zuletzt wird ein sed replace ausgeführt
So würde der Eintrag in der Datei / etc / hosts aussehen
Zuletzt platzieren Sie dieses Skript in der crontab des Roots, um es jede Stunde oder so auszuführen und Sie haben jetzt ein Round-Robin / etc / host.
Dies ist besonders nützlich, wenn Sie eine codierte Seite haben, die einige Daten von einer API abruft und die DNS-Suche nach dem API-Server viel Zeit in der Skriptausführung der Seite blockiert. Dies führt zu einem hohen CPU-Verbrauch scheint eine einfache Seite zu sein. Um die kostspielige DNS-Suche zu vermeiden (insbesondere wenn Ihre Site Hunderte davon pro Minute für hohen Datenverkehr ausführt), sollten Sie / etc / hosts verwenden, um den vollqualifizierten Domänennamen des Remote-API-Servers aufzulösen. Dadurch wird die CPU-Auslastung zum Abrufen der API-Daten und zum Generieren der Seite drastisch reduziert.
quelle
Ja, das würde funktionieren.
Der Suchmechanismus durchsucht die Liste jedoch einfach, bis eine Übereinstimmung gefunden wird.
Während die Antwort auf die Frage wie geschrieben JA lautet, wird es eine Herausforderung sein. Aber nichts unüberwindliches.
Versuchen Sie Folgendes: Jede dieser IP-Adressen muss unterschiedliche Namen haben.
quelle
Eine einfache Möglichkeit, dies zu erreichen, besteht darin, einen öffentlichen DNS-Dienst wie AWS Route53 zu verwenden. Sie können mehrere IP-Adressen pro A-Datensatz mit Priorität eingeben
abc.efg.datastore.com
Solange keine Zertifikate beteiligt sind, funktioniert dies und verstößt afaik auch nicht gegen Normen oder Best Practices.
NSLookup oder andere Domänenabfragen geben beide Adressen zurück. Ihre App muss damit umgehen können. Und ja, die Domain muss öffentlich registriert sein, nicht nur ein lokaler Hostname.
quelle
A
Datensätze haben kein Prioritätsfeld. Einige autorisierende DNS-Dienste haben eine Datensatzgewichtung, dies erfolgt jedoch durch probabilistisches Einschließen oder Ausschließen der Datensätze.Einfach einzurichten, folgen Sie bitte den Anweisungen:
dass zwei Einträge mit RR-DNS beantwortet werden sollen. Wenn also ein Knoten aus der Liste ausgefallen ist, wird Ihre Anwendung mit einem anderen verbunden
quelle