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@ourwebsiteLIVE
oder ubuntu@ourwebsiteTESTING
abhängig davon, ob der Server gerade aktiv ist oder getestet wird.
Ich weiß, dass ich dies tun kann, indem ich hostname ourwebsiteLIVE
usw. in unserem IP-Swap-Skript ausführe, und habe dies bereits implementiert. Es funktioniert, aber jetzt wird jedes Mal, wenn ich sudo
etwas 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/hosts
oder 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?
Antworten:
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.$DOMAIN
nur auf die IP-Adresse des Computers behoben.quelle
Eine schnelle Problemumgehung könnte darin bestehen,
hostname ourwebsiteLIVE
UND/etc/hosts
ohne Neustart zu bearbeiten. Der Fehler sollte verschwinden.quelle
/etc/hosts
oder auch ändern/etc/hostname
?ourwebsiteOFF
in der Datei/etc/hosts
zuourwebsiteLIVE
und führen den Befehl in der Befehlszeile aus und melden sichhostname ourwebsiteLIVE
dann erneut an.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
Ihr neuer Hostname ist jetzt ohne Neustart aktiv und bleibt natürlich nach einem Neustart bestehen.
quelle
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.
hostname
wird 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/html
usw.) als in ein Verzeichnis für jede Version der Website erstellen ...Das
v1.1a
undv1.1b
wird 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 ...
Also benennen wir das
html
Verzeichnis, das der Dienst uns gibt, in ein Versionsverzeichnis umv1.1a
und erstellen einen Symlink zu diesem Verzeichnis mit dem Namenhtml
.Wenn unsere Symlinks festgelegt sind, sieht die Verzeichnisliste möglicherweise wie folgt aus ...
Nachdem wir Änderungen an den Website-Dateien im
.../v1.1b
Verzeichnis vorgenommen haben, führen wir ein Skript aus, das entfernt (Ubuntu hat einen sichererenunlink
Befehl) und die Symlinks neu erstellt, wobei "html" und "TEST" wie in ...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 ...
Netz
Das Hauptproblem hat mit dem Befehl 'hostname' zu tun.
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 ...
Gegen Ende der Linux-Hostnamenkonfiguration werden die Überlegungen zu Xwindow erläutert
Dieser Technote von IBM.com zum Thema " Auswirkung der Änderung der IP-Adresse oder des Hostnamens auf den ITM-Komponentenserver " ist ein gutes Beispiel für die Machenschaften, die häufig erforderlich sind, um nach einer Änderung des Hostnamens alles wieder synchron zu machen.
quelle