"Hostname kann nicht aufgelöst werden" - So ändern Sie den Hostnamen sauber, ohne ihn neu zu starten

7

Bei der Arbeit arbeite ich an einer kleinen Website mit Ubuntu-Servern, die auf Amazon EC2-Instanzen gehostet werden. Wir haben zwei Webserver, und zu jedem Zeitpunkt ist einer "live" und einer "testend". Wenn jedoch unsere neuen Funktionen oder Bugfixes auf dem "Test" -Server funktionieren, führen wir ein Skript aus, das das verwendet AWS-API zum Austauschen der den beiden Feldern zugewiesenen IP-Adressen, sodass die von den beiden Servern bedienten Domänen ausgetauscht werden.

Folglich kann einer dieser Server zu jedem Zeitpunkt entweder unser "Live" -Server oder unser "Test" -Server sein, dies sind jedoch keine permanenten Zustände.

Um Verwirrung beim SSHing auf einem dieser Server zu vermeiden, insbesondere wenn eine dumme Person (wie ich) eine SSH-Sitzung für längere Zeit offen lässt und sich nicht sicher ist, auf welchem ​​Server sie sich befinden, möchte ich die Hostnamen der beiden Server ändern Damit werden die Eingabeaufforderung und der Titel im Terminalfenster angezeigt ubuntu@ourwebsiteLIVEoder ubuntu@ourwebsiteTESTINGabhängig davon, ob der Server gerade aktiv ist oder getestet wird.

Ich weiß, dass ich dies tun kann, indem ich hostname ourwebsiteLIVEusw. in unserem IP-Swap-Skript ausführe, und habe dies bereits implementiert. Es funktioniert, aber jetzt wird jedes Mal, wenn ich sudoetwas auf einem unserer Server habe, z

sudo: host ourwebsiteLIVE kann nicht aufgelöst werden

das scheint nichts zu brechen, ist aber ziemlich irritierend. Ich gehe davon aus, dass es in Zukunft auch zu Problemen kommen kann, wenn ich versuche, Befehle zu verketten, die die Ausgabe miteinander verbinden. Ich denke, dies ist technisch nicht nur ein ästhetisches Problem.

Alle Lösungen, die ich für die Meldung "Hostname kann nicht aufgelöst werden" gesehen haben, umfassen das Ändern /etc/hostsoder eine ähnliche Datei und den anschließenden Neustart des Servers . Ich kann sehen, dass dies für viele Anwendungsfälle in Ordnung wäre, aber für uns alles andere als ideal ist, da wir den Hostnamen routinemäßig und programmgesteuert ändern. Wir möchten nicht jedes Mal, wenn wir unser Swap-Skript ausführen, auf einen Neustart warten müssen.

Gibt es eine Möglichkeit, die Fehlermeldung zu löschen, ohne neu starten zu müssen?

Mark Amery
quelle
1
Der von Ihrem Terminalfenster angezeigte Titel müsste zurückgesetzt werden, und ich bezweifle, dass ssh routinemäßig überprüft, ob sich der Hostname geändert hat (warum sollte es so sein, dass ein Hostname dauerhaft sein soll). Und ich finde den "Switch Test / Live" eine seltsame Idee. Haben Sie einfach eine Testmaschine und kopieren Sie Daten auf die Live-Maschine, wenn es in Ordnung ist. Funktioniert das nicht, weil?
vonbrand
@vonbrand Durch Ändern der IP werden ohnehin alle offenen SSH-Sitzungen beendet, sodass das Ändern des Titels der aktuell geöffneten Sitzungen kein Problem darstellt. Der Grund, warum wir nicht nur darauf drängen, zu leben, wenn etwas funktioniert, liegt daran, dass wir auf Ihre Art und Weise die Möglichkeit haben, jedes Mal Fehler zu machen, wenn wir etwas auf den Servern ändern, das nicht in unserem Versionsverwaltungs-Repo enthalten ist und daher nicht Teil davon ist unseres normalen Änderungs-Push-Prozesses (z. B. Ändern von Konfigurationsdateien oder Installieren neuer Software). Auf unsere Weise besteht kein Risiko, dass wir die Site beschädigen, indem wir die Bereitstellung auf der Live-Site vermasseln (und das Zurücksetzen von Fehlern bei der Serveradministration ist einfach; einfach zurückwechseln).
Mark Amery

Antworten:

1

Ich würde vorschlagen, nss-myhostname zu verwenden . Es ist ein NSS-Plugin, das Ihren aktuellen Hostnamen immer auflöst, sodass keine Änderungen erforderlich sind /etc/hosts.

Da es sich bei dem von Ihnen beschriebenen Problem nur um ein Resolver-Problem handelt, können Sie es beheben, indem Sie über ein ordnungsgemäßes DNS-Setup verfügen, dh es wird ourwebsiteLIVE.$DOMAINnur auf die IP-Adresse des Computers behoben.

Ulrich Dangel
quelle
Es ist wahrscheinlich mein Mangel an Grundkenntnissen, aber ich verstehe Ihren letzten Absatz überhaupt nicht. Könntest Du das erläutern? Was Ihren ersten Absatz betrifft, verstehe ich nicht ganz, was die Tools tun (ich habe zunächst keine Ahnung, welche Auswirkungen das Ändern des Hostnamens hat), aber es sieht so aus, als würde das verknüpfte Tool unser Problem lösen. Vielen Dank. Ich werde es am Montag testen und akzeptieren, ob es funktioniert.
Mark Amery
0

Eine schnelle Problemumgehung könnte darin bestehen, hostname ourwebsiteLIVEUND /etc/hostsohne Neustart zu bearbeiten. Der Fehler sollte verschwinden.

xx4h
quelle
Können Sie die Änderungen beschreiben, die ich vornehmen muss? Muss ich nur /etc/hostsoder auch ändern /etc/hostname?
Mark Amery
Sie bearbeiten alle ourwebsiteOFFin der Datei /etc/hostszu ourwebsiteLIVEund führen den Befehl in der Befehlszeile aus und melden sich hostname ourwebsiteLIVEdann erneut an.
xx4h
0

Ich weiß, dass ich diese Frage von den Toten zurückbringe, aber derzeit (zumindest in Ubuntu Server 16.04) können Sie Folgendes tun, um den Hostnamen ohne Neustart zu aktualisieren.

Bearbeiten Sie zuerst Ihren / etc / hosts und / etc / hostname mit Ihrem neuen Hostnamen

Führen Sie die Befehle aus

systemctl restart systemd-logind.service
hostnamectl --static --transient --pretty set-hostname YOURHOSTNAME

Ihr neuer Hostname ist jetzt ohne Neustart aktiv und bleibt natürlich nach einem Neustart bestehen.

Rob K.
quelle
-1

Ahem ... Das dynamische Ändern des Hostnamens des Servers führt wahrscheinlich zu einer Fehlfunktion vieler Systemdämonen, und zwar häufig auf eine Weise, die nicht sofort erkennbar ist. Das Betriebssystem erwartet, dass der Hostname bei der Installation des Systems festgelegt wird und unverändert bleibt. hostnamewird fast immer nur einmal beim Prozessstart überprüft. Es gibt jedoch auch andere Möglichkeiten, Versionen im laufenden Betrieb zu wechseln ...

Am einfachsten ist es, mithilfe von Symlinks eine Indirektionsebene einzurichten ...

Sie benötigen dafür keine zwei Server. Stattdessen auf der gleichen Verzeichnisebene wie die „home“ Verzeichnis der Website (dh /var/www, hosted/server/htmlusw.) als in ein Verzeichnis für jede Version der Website erstellen ...

.../
.../v1.0
.../v1.1a
.../v1.1b
   :

Das v1.1aund v1.1bwird dein abwechselndes "LIVE" und "TEST" sein.

Hier kommt die Indirektion ...

Das Erstellen von Symlinks ist sehr schnell, sodass Sie sie wahrscheinlich neu erstellen können, wenn Sie Versionen mit der Site unter geringer Last ohne allzu große Unterbrechungen austauschen möchten.

Für den Hosting-Service, auf den ich mich stütze, muss das Verzeichnis "home" der Website "html" sein, wie in ...

/home/group/subgroup/myuserid/html

Also benennen wir das htmlVerzeichnis, das der Dienst uns gibt, in ein Versionsverzeichnis um v1.1aund erstellen einen Symlink zu diesem Verzeichnis mit dem Namen html.

Wenn unsere Symlinks festgelegt sind, sieht die Verzeichnisliste möglicherweise wie folgt aus ...

.../
.../TEST -> v1.1b
.../html -> v1.1a
.../v1.0
.../v1.1a
.../v1.1b

Nachdem wir Änderungen an den Website-Dateien im .../v1.1bVerzeichnis vorgenommen haben, führen wir ein Skript aus, das entfernt (Ubuntu hat einen sichereren unlinkBefehl) und die Symlinks neu erstellt, wobei "html" und "TEST" wie in ...

.../
.../TEST -> v1.1a
.../html -> v1.1b
.../v1.0
.../v1.1a
.../v1.1b

Hoffe das hilft.

2013-02-16 18:15:12 EST ergänzend ...

Die heutige Forschung zeigt, dass es anscheinend viele widersprüchliche Meinungen dazu gibt.

Meine eigene Erfahrung besteht darin, viel Zeit damit zu verbringen, die Xwindows- und Ubuntu-Funktionalität "zeroconfig" nach dem Ändern des Hostnamens wiederherzustellen, wie einige meiner Notizen aus dem Vorfall zeigen ...

  • Ubuntu-10.04
  • Netz

    • Seit den Updates vom Mai 2011 haben sich die Anforderungen an die Netzwerkeinstellungen dramatisch geändert, um Zeroconf!
    • Das Hauptproblem hat mit dem Befehl 'hostname' zu tun.

      • Die Methode, mit der Ubuntu den Hostnamen, die IP-Adresse usw. verwaltet, wurde geändert.
      • Die Dateien / etc / hostname und / etc / hosts sind jetzt die Berechtigung für alle diese Werte
      • In / etc / hosts können nicht mehr mehrere Aliase für einen Host vorhanden sein
      • In / etc / hosts sollte der Vorname der vollqualifizierte Domänenname (FQDN) sein - mit anderen Worten hostname.domainname.
      • SSH sendet jetzt den vollqualifizierten Domänennamen anstelle des Hostnamens. Daher muss /etc/hosts.allow von ... geändert werden.

        ALL: LOCAL
        bis ..
        ALL: LOCAL * .DORIS

  • Auszug aus http://www.oldapps.com/linux/ubuntu.php?old_ubuntu=35?changelog ...

    • 'Avahi wird immer gestartet, auch wenn eine .local-Domain vorhanden ist. Das avahi-daemon-Paket, das den mDNS-Standard "zeroconf" implementiert, enthielt früher eine Überprüfung, um die Ausführung zu vermeiden, wenn eine in Konflikt stehende lokale DNS-Domäne vorhanden ist, da berichtet wurde, dass einige ISPs eine solche lokale Domäne in ihren Netzwerken bewerben und diese verlassen Ubuntu-Hosts können im lokalen Netzwerk angekündigte Namen nicht sehen (327362). In Ubuntu 9.10 wird der Avahi-Daemon trotzdem gestartet. Es ist möglich, dass dies andere Probleme verursacht. Wenn Ihr Netzwerk auf diese Weise konfiguriert ist, können Sie mDNS mit dem folgenden Befehl deaktivieren: '

      sudo stop avahi-daemon sudo sed -e '/ ^ start /, + 1s / ^ / # /' /etc/init/avahi-daemon.conf

Ein paar relevante Artikel ...

DocSalvager
quelle
Wie ich bereits als Antwort auf einen Kommentar erklärt habe, ist der Grund, warum wir Hotswapping verwenden, nicht einfach, dass wir Änderungen an unserem Code zum Leben erwecken können. Mit zwei Servern und Quellcodeverwaltung wäre das schon einfach. Durch das Hotswapping können wir Software von Drittanbietern installieren oder aktualisieren oder Änderungen an Dingen wie unserer Apache-Serverkonfiguration vornehmen, die einen Neustart erfordern, und zwar auf eine Weise, die sofort umkehrbar ist und keine Ausfallzeiten auf der Live-Site verursacht. Was Sie vorgeschlagen haben, ist keine alternative Lösung, sondern ein wesentlicher Rückschritt, wenn Sie nur Hotswapp-fähige Server haben, ohne den Hostnamen zu ändern.
Mark Amery
Außerdem scheint es mir potenziell gefährlich, beide Websites auf einem Server zu hosten, denn wenn wir etwas auf die Staging-Site übertragen, das den gesamten Speicher oder die CPU-Kapazität des Servers belegt, wird auch die Live-Site beschädigt. Können Sie abschließend beschreiben, welche nicht offensichtlichen Fehlfunktionen das Ändern des Hostnamens verursachen kann? Sie haben die Existenz behauptet, aber keine Beispiele angegeben.
Mark Amery
Zusätzlich zu meiner obigen Bearbeitung gibt es in der rechten Spalte eine Reihe verwandter Fragen, die möglicherweise mehr Licht ins Dunkel bringen.
DocSalvager