Frage Auswahl zwischen sinnvollen und bedeutungslosen Hostnamen [geschlossen]


Nehmen Sie eine Umgebung mit einem puppenverwalteten Cluster verschiedener Server an - verschiedene Hardware, Software, Betriebssysteme, virtuelle / dedizierte usw.

Würden Sie aussagekräftige Hostnamen wählen (mysqlmaster01..99, mysqlslave001..999, vpnprimary, vpnbackup, etc.) oder würden Sie bedeutungslose Hostnamen wie Charaktere aus einem Buch oder Film bevorzugen?

Das Problem, das ich bei aussagekräftigen Hostnamen sehe, ist, dass die Namen normalerweise einen einzelnen Dienst repräsentieren und wenn ein Server mehr als einen Zweck hat, wird es sehr unordentlich (besonders wenn Server-Rollen sich oft ändern).

Ordnet man einen Dienstnamen nicht einer IP-Adresse zu und verwaltet diese Zuordnung, was DNS tun soll?

Was sind die Vor- und Nachteile beider Ansätze und welche konkreten Probleme mussten Sie mit dem von Ihnen gewählten Ansatz bewältigen?


74
2018-02-18 14:04


Ursprung


Wenn Sie DNS steuern, können Sie immer beides tun. - jscott
Ich werde es einfach hier lassen: RFC 1178 - gelraen
Obwohl oberflächlich eine meinungsbasierte Frage ist, sind die tatsächlichen Antworten faktenbasiert mit empirischen Abfragen und basieren auf der menschlichen kognitiven Funktion (wie sich das menschliche Gehirn an Dinge erinnert). Meiner Meinung nach sollte diese Frage erneut aufgegriffen werden. - dotancohen


Antworten:


Es war einmal eine Gelegenheit, mich für ein Namensschema zu entscheiden. Also ging ich rum und fragte meine Entwickler, die schließlich die Leute waren, die täglich mit diesen Namen arbeiten mussten, ob sie es bevorzugten funktional Namen (dh Namen, die in irgendeiner verschlüsselten Form den Zweck der Maschine darstellen) oder Gedächtnisstütze Namen (dh Namen, die aus einem bereits existierenden menschlichen Namensschema stammen, das keinen impliziten Inhalt über den Zweck der Maschine enthielt).

Von 38 Entwicklern bevorzugten 37 mnemonische Namen; nur eine bevorzugte funktionelle Namen. Also habe ich sie alle nach Flüssen benannt (es gibt einen sehr großen Pool möglicher Namen, und viele von ihnen sind kurz, leicht zu merken und schnell zu tippen).

Das menschliche Gehirn ist ziemlich gut dafür ausgelegt, Namen mit Bedeutung zu versehen. Wenn Sie Namen bereitstellen, die einprägsam sind, werden sich die Benutzer schnell daran erinnern, wofür diese Namen verwendet werden, und sie verwenden. Wenn Sie Namen verwenden, die aus einem gemeinsamen Hintergrund stammen (z. B. Flüsse, Elemente, Sterne, Landkreise, Getränke, Sie erhalten die Idee), hilft es den Leuten, sofort einen Firmen-Hostnamen zu erkennen, wenn sie darauf stoßen; sonst Aussagen wie "die ganze E-Mail endete betelgeuse"kann ein bisschen verwirrend sein).

Umgekehrt hatten meine Entwickler das Gefühl, dass sie sich in früheren Jobs sehr schwer daran erinnerten, was genau zu tun war pr1ms001 war.

Aber ich sollte hinzufügen, dass wir CNAMEs im internen DNS verwendet haben, um einen funktionalen Namen für die mnemonische Namenszuordnung bereitzustellen, also wenn Sie es wirklich leichter fanden, sich daran zu erinnern, dass der Haupt-Mail-Server im ersten Cluster auf der PR-Site war pr1ms001, dann würde der DNS Sie wissen lassen, dass das zur Zeit war orwell. Außerdem haben wir viele funktionale Namen pro Maschine, so lange Sie immer den funktionalen Namen verwendet haben, der für die Funktion relevant ist, an der Sie gearbeitet haben, können Sie sicher sein, dass pr1imap001 würde immer auf den IMAP-Server zeigen, selbst wenn wir diese Funktionalität von orwell zu rhine. Und wann hudson gestorben, wir könnten den Namen des Ersatzes ändern, ohne die betrieblichen Funktionen zu beeinflussen, so dass wir nie das "meinst du neu" hatten hudsonoder alt hudson?" Verwechslung.


96
2018-02-18 14:10



Sie könnten das denken, aber meine Entwickler sagten, dass das Mnemonic-Schema besser war, ob etwas anderes kommuniziert wurde oder nicht, weil sie alle ihre eigenen internen Statustabellen von dem, was wo war, erstellten, und diese Art von Speicher ist leichter auf Namen aufzubauen das menschliche Gehirn erinnert sich gern. - MadHatter
Sie sollten sie nach Vulkanen in Island benannt haben. - Chloe
+1 für "Flusspool";) - Konerak
Das ist eine großartige Idee und ich stiehl sie. - SpacemanSpiff
Ich stimme zu, dass das Benennen von Servern auf diese Weise mehr Arbeit mit einem Autobuild-System bedeutet, aber ich stelle fest, dass der Zweck des Aufbaus darin besteht, dass andere Benutzer sie verwenden - und die obigen Daten stammen von den Personen, die dies tun mussten benutzen Sie. Es kann sein, dass das, was sie wollen, sich geändert hat, aber ich denke, dass unsere Entscheidungen bezüglich des Serveradmins auf mehr basieren sollten als das, was unsere Jobs einfach macht. - MadHatter


Dies hängt weitgehend davon ab, ob Ihre Server es sind pets oder livestock.

Haustiere erhalten individuelle Namen. Sie unterscheiden sich voneinander, und wir kümmern uns um diese Unterschiede. Wenn jemand krank wird, versuchen wir normalerweise, ihn wieder gesund zu machen. Traditionell waren Server Haustiere.

Vieh erhält Zahlen. Sie sind größtenteils identisch, und welche Unterschiede es gibt, ist uns egal und versucht normalerweise zu minimieren. Wenn einer krank wird, legen wir ihn ab und holen uns einen anderen. Vollständig virtualisierte Server, insbesondere IaaS-Server wie AWS, sind Nutztiere.

In den meisten komplexen Umgebungen haben Sie eine Mischung. Ihre Web-Backends zum Beispiel sind mit ziemlicher Sicherheit Vieh. Wenn du mehr brauchst, drehst du ein paar mehr mit der Standardkonfiguration hoch; Wenn Sie nicht so viele brauchen, schalten Sie einige aus. Ihre Datenbankserver sind in einigen Konfigurationen Haustiere. Es kann viele spezielle Einstellungen auf jedem geben; Sie können sie sogar auf Bare-Metal statt Virtualisierung laufen lassen.

Natürlich können Sie in beiden Umgebungen SERVICES benennen und diese direkt adressieren. Dies ist in jedem Fall eine bewährte Methode. Ihre Entwickler sollten nicht wissen oder sich darum kümmern müssen, was der tatsächliche Hostname eines Dienstes ist. Der Hostname sollte ein rein operatives Detail sein. Denken Sie also daran, Informationen zu kodieren, die für Ihre Mitarbeiter in den Hostnamen nützlich sind - zum Beispiel ist es oft hilfreich, das Datencenter anzugeben, in dem sich ein Server befindet.


93
2018-02-18 18:16



Haustiere oder Vieh - das ist eine gute Idee. - Michael Hampton♦
Ich habe kürzlich den Artikel gefunden, in dem ich dieses Konzept zum ersten Mal gesehen habe: gregarnette.com/blog/2012/05/cloud-servers-are-not-our-pets - Ian
Danke @Ian Ich habe für den letzten Tag für diesen Artikel gesucht, SEO scheitern heh - Rudolf Olah


Dies wurde hier schon einmal behandelt ...

Meine Empfehlung ist eine Kombination aus funktionalen Namen und mnemonischen Namen ...

Wenn Sie eine Anwendung schreiben und sie ansprechen müssen ccts-logserver1, benutze diesen Namen überall, aber mache das zu einem CNAME oder einem Alias. Der echte Hostname kann sein, was immer du willst: Obst oder Gemüse, griechische Mythologie oder Seinfeld-Charakter ... aber es gibt dir etwas Flexibilität, wenn du echte funktionale Namen assoziieren musst, aber behalte etwas, an das sich die Leute erinnern können.

Denken Sie an das Beispiel wo mango, der DB-Server schlägt fehl ... wird aber durch etwas anderes ersetzt, sagen wir peach. Vielleicht müssen bestehende Prozesse und Anwendungen gesehen werden cmt-prod-db1. Sie können die Systeme austauschen, sie ohne Namenskonflikte erstellen und die Anwendungen (und Entwickler) glücklich machen.


18
2018-02-18 14:17





Wo ich arbeite, verwalten wir mehrere Standorte, mehrere Unternehmen in mehreren Städten. Für uns können mnemonische Namen nicht funktionieren. Stattdessen verwenden wir eine Kurzform, die unsere Server beschreibt. Dies funktioniert in unserem Fall gut, da wir einige Kunden haben, die mehrere Büros in verschiedenen Domains haben (oder ein einzelnes Büro in mehreren Domains oder mehrere Büros in derselben Domain oder alle oben genannten!)

Für uns enthält die Information Firma / Domain, Ort, Funktion, Nummer. Also für einen Domänencontroller für Unternehmen, sagen wir Cypress in Chicago wäre es:

CYPRCHDOM001 (Wir würden dies als Cypress Haupt-DOM im Gespräch bezeichnen)

CYPRCHSQL001 wäre sein SQL-Server, CYPRCHMGM001 wäre seine Verwaltung (dh Antivirus, Backups usw.), und CYPRCHAPP001 wäre ein gemischter Anwendungsserver. Einfach zu merken, einfach zu sortieren, einfach zu lehren.


4
2018-02-18 18:31



Wie können Sie sich daran erinnern, welche Anwendungen auf CYPRCHAPP001 im Gegensatz zu CYPRCHAPP003 ausgeführt werden? Ich gebe zu, das ist ein Problem mit mnomischen Namen, aber wenn Sie für eine Art von funktionalen Namen gehen, könnte auch genau sein. - α CVn
@ MichaelKjörling Feinkörnige Besonderheiten dessen, was auf einem Server ist, gehören nicht in einen Namen, sie gehören in irgendeine Art von Dokumentation. Wenn jemand wissen muss, was auf CYPRCHAPP001 läuft, lesen sie die Dokumentation. Neben der Verschiebung von Anwendungen ist CYPRCHAPP001_PointofSale_Payroll_HRSoftware-etc eine falsche Bezeichnung, wenn das Unternehmen seine Gehaltsabrechnungssoftware auf eine gehostete Lösung umstellt. - Wulfhart
@Wulfhart Ich stimme deinem Standpunkt zu, aber was ist falsch daran, CNAMEs zu haben? pointofsale, payroll, usw.? Auf diese Weise muss sich niemand außer den Systemadministratoren darum kümmern, wo genau die Gehaltsabrechnungssoftware läuft. für alle anderen funktioniert es einfach. Möchten Sie etwas in ein anderes Datencenter verschieben? Überhaupt kein Problem. Möchten Sie die Point of Sale-Systemdatenbank auf einen eigenen dedizierten Server verschieben? Aktualisieren Sie einfach die pointofsale-database CNAME, um auf den neuen Standort zu zeigen. Und so weiter. - α CVn
Angenommen, Sie müssen eine Maschine ersetzen: Nachdem Sie CYPRCHSQL002 erstellt und getestet haben, geben Sie einfach den Namen CYPRCHSQL001 (niemals ersetzt) ​​zurück oder benennen Sie 002 in 001 um, nachdem Sie die alte 001 entfernt haben sonst? - nickgrim
@ MichaelKjörling Das scheint mir eine großartige Idee zu sein. Unter "Besonderheiten gehören nicht in einen Namen" meinte ich nicht im Hostnamen der Maschine. - Wulfhart


Das einzige Anforderung Bei Hostnamen sollten sie im Netzwerk eindeutig sein.

Die Bedeutung muss nicht nur mit der Serverfunktion zu tun haben. Der Standort kann sehr nützlich sein, wenn Sie mit physischen Geräten arbeiten müssen. Zu wissen, ob ein Gerät virtuell oder physisch ist, kann ebenfalls nützlich sein. Die Möglichkeit, den Unterschied zwischen einem Netzwerkgerät, einem Linux-Server oder einer Windows-Box zu erkennen, kann sehr nützlich sein, wenn es darum geht, herauszufinden, welches Tool zum Anmelden verwendet wird.

Die Art, wie wir damit umgehen, besteht darin, diese Informationen wie folgt in den Gerätenamen zu schreiben:

L oder T - Live oder Test P oder V - Physisch oder Virtuell S oder N - Server oder Netzwerk (wir haben keine Linux-Server) eine fortlaufende Nummer zur Sicherstellung der Eindeutigkeit Ein ISO 3166-1 Ländercode mit drei Buchstaben Zeigt an, wo sich das Gerät befindet.

Wir verwenden dann CNAMES im DNS, um verschiedene Servicenamen durch den Hostnamen abzubilden.

Ich habe gemischte Gefühle darüber. Das spart Zeit beim Nachschlagen, wo sich ein bestimmtes Gerät befindet. Auf der anderen Seite ist es viel schwieriger, sich daran zu erinnern, was ein bestimmter Server macht, wenn er mit seinem Hostnamen verglichen wird, verglichen mit unserem vorherigen System, das Edelsteine ​​verwendet. Die Edelsteine ​​bedeuteten überhaupt keine Bedeutung, aber sie waren leicht zu merken, weil jede Person ihre eigenen Verbindungen herstellen konnte.

Ich denke, der einzige Rat wäre, sich auf ein Schema zu einigen, da die größte Verwirrung entstand, als wir von einem System zum anderen übergingen.


2
2018-02-19 15:18



Ich stimme dem nicht zu: "Zu wissen, ob ein Gerät virtuell oder physisch ist, kann auch nützlich sein" im Kontext eines Benennung Diskussion. Natürlich sind es nützliche Informationen, aber es ist nicht das erste, was Sie über einen Server wissen müssen, wenn Sie seinen Namen lesen. Außerdem bricht P2V oder V2P entweder Ihr Schema oder erfordert das Umbenennen des Servers, was andere Dinge beschädigen kann. - mfinni
Nach meiner Erfahrung bricht P2V oder V2P eine ganze Reihe von Dingen und sollte wo möglich vermieden werden - wir tun es, daher ist es kein Problem mit unserer Namenskonvention. Die Namenskonvention muss die Anforderungen des jeweiligen Entwicklers erfüllen - in der Organisation, in der ich arbeite, wurde sie vom Team entworfen, das alle Server und Netzwerkgeräte verwaltet, und sie möchten die oben genannten Dinge sagen können. Es ist vielleicht nicht richtig für Sie, aber dann ist alles offen für Diskussionen. Die einzige technische Anforderung ist die Eindeutigkeit. - dunxd