Auswahl zwischen sinnvollen und sinnlosen Hostnamen [geschlossen]

79

Nehmen Sie eine Umgebung mit einem Puppet-verwalteten Cluster aus verschiedenen Servern an - verschiedene Hardware, Software, Betriebssysteme, virtuelle / dedizierte usw.

Möchten Sie aussagekräftige Hostnamen auswählen (mysqlmaster01..99, mysqlslave001..999, vpnprimary, vpnbackup usw.) oder möchten Sie aussagekräftige Hostnamen wie Zeichen aus einem Buch oder einem Film bevorzugen?

Das Problem, das ich bei aussagekräftigen Hostnamen sehe, ist, dass Namen normalerweise einen einzelnen Dienst darstellen und wenn ein Server mehr als einen Zweck hat, wird er sehr unübersichtlich (insbesondere, wenn sich die Serverrollen häufig ändern).

Ordnet man einen Dienstnamen nicht einer IP-Adresse zu und behält diese Zuordnung bei, was DNS tun soll?

Was sind die Vor- und Nachteile beider Ansätze und welche tatsächlichen Probleme hatten Sie mit dem gewählten Ansatz zu lösen?

keymone
quelle
10
Wenn Sie DNS steuern, können Sie immer beides tun.
Jscott
16
Ich lasse es einfach hier: RFC 1178
Gelraen
Obwohl es sich oberflächlich gesehen um eine meinungsbasierte Frage handelt, basieren die tatsächlichen Antworten auf empirischen Befragungen und auf der kognitiven Funktion des Menschen (wie sich das menschliche Gehirn an Dinge erinnert). Meiner Meinung nach sollte diese Frage erneut geöffnet werden.
Dotancohen

Antworten:

98

Es war einmal eine Gelegenheit, mich für ein Namensschema zu entscheiden. Also ging ich herum und fragte meine Entwickler, die schließlich die Leute waren, die täglich mit diesen Namen arbeiten mussten, ob sie funktionale Namen (das heißt Namen, die in irgendeiner verschlüsselten Form die Zweck der Maschine) oder mnemonische 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 ein bevorzugter Funktionsname. Also habe ich sie alle nach Flüssen benannt (es gibt eine sehr große Anzahl möglicher Namen, und viele von ihnen sind kurz, leicht zu merken und schnell zu tippen).

Das menschliche Gehirn ist ziemlich gut darauf ausgelegt, Namen einen Sinn zu geben. Wenn Sie einprägsame Namen eingeben, werden sich die Leute ziemlich schnell daran erinnern, wofür diese Namen verwendet werden, und sie verwenden. Wenn Sie Namen verwenden, die aus einem bestimmten Hintergrund stammen (z. B. Flüsse, Elemente, Sterne, Landkreise, Getränke), können die Benutzer den Hostnamen eines Unternehmens sofort erkennen, wenn sie darauf stoßen. Andernfalls können Aussagen wie "Alle E-Mails, auf die zugegriffen wurde betelgeuse" etwas verwirrend sein.

Umgekehrt hatten meine Entwickler das Gefühl, dass sie es in früheren Jobs sehr schwer hatten, sich genau daran zu erinnern, was es pr1ms001war.

Aber ich sollte hinzufügen, dass wir CNAMEs im internen DNS verwendet haben, um einen funktionalen Namen für die Mnemonic-Namenszuordnung bereitzustellen. Wenn Sie sich also wirklich leichter daran erinnern können, dass der Haupt-Mailserver im ersten Cluster am PR-Standort derselbe war pr1ms001, würde dies der DNS sein lass dich wissen, dass das aktuell war orwell. pr1imap001Wenn Sie also immer den Funktionsnamen verwenden, der für die von Ihnen bearbeitete Funktion relevant ist, können Sie sicher sein, dass immer auf den IMAP-Server verwiesen wird, auch wenn wir diese Funktionalität verschoben haben von orwellbis rhine. Und als hudsonwir starben, konnten wir den Namen des Ersatzes ändern, ohne die Betriebsfunktionen zu beeinträchtigen, so dass wir nie das "Meinst du neu hudsonoder alt hudson?" Hatten. Verwechslung.

MadHatter
quelle
7
Sie könnten das denken, aber meine Entwickler sagten, dass das Gedächtnisschema besser sei, egal ob etwas anderes kommuniziert wurde oder nicht, weil sie alle ihre eigenen internen Statustabellen für das erstellten, was sich dort befand das menschliche Gehirn erinnert sich gerne.
MadHatter
11
Sie sollten sie nach Vulkanen in Island benannt haben.
Chloe
1
+1 für "Pool von Flüssen";)
Konerak
2
Das ist eine großartige Idee und ich klaue sie.
SpacemanSpiff
1
Ich bin damit einverstanden, dass das Benennen von Servern auf diese Weise mit einem AutoBuild-System besser funktioniert, aber ich stelle fest, dass der Zweck des Erstellens darin besteht, dass andere Benutzer sie verwenden - und die obigen Daten stammen von den Benutzern, die sie verwenden mussten. Es mag sein, dass sich das, was sie wollen, geändert hat, aber ich denke, dass unsere Entscheidungen in Bezug auf den Serveradministrator auf mehr beruhen sollten, als auf dem, was unsere Arbeit einfacher macht.
MadHatter
93

Dies hängt hauptsächlich davon ab, ob Ihre Server petsoder livestock.

Haustiere bekommen 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 pflegen. Traditionell waren Server Haustiere.

Vieh bekommt Zahlen. Sie sind größtenteils identisch und welche Unterschiede es gibt, ist uns egal und wir versuchen normalerweise, sie zu minimieren. Wenn einer krank wird, legen wir ihn weg und holen 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 sind zum Beispiel mit ziemlicher Sicherheit Nutztiere. Wenn Sie mehr brauchen, drehen Sie ein paar mehr mit der Standardkonfiguration; Wenn Sie nicht so viele benötigen, schalten Sie einige aus. Ihre Datenbankserver sind in einigen Konfigurationen Haustiere. Es kann eine Menge spezieller Einstellungen auf jedem geben; Sie können sie sogar auf Bare Metal anstatt auf Virtualisierung ausführen.

Natürlich können Sie in beiden Umgebungen DIENSTLEISTUNGEN benennen und diese direkt ansprechen. Dies ist in jedem Fall eine bewährte Methode. Ihre Entwickler sollten nicht wissen oder sich darum kümmern müssen, wie der tatsächliche Hostname eines Dienstes lautet. Der Hostname sollte ein rein operatives Detail sein. Denken Sie also daran, Informationen, die für Ihre Mitarbeiter nützlich sind, in den Hostnamen zu verschlüsseln. Beispielsweise ist es oft hilfreich, anzugeben, in welchem ​​Rechenzentrum sich ein Server befindet.

Thaeli
quelle
22
Haustiere oder Vieh - das ist eine nette Art und Weise, es auszudrücken.
Michael Hampton
5
Ich habe kürzlich den Artikel wiedergefunden, in dem ich dieses Konzept zum ersten Mal gesehen habe: gregarnette.com/blog/2012/05/cloud-servers-are-not-our-pets
Thaeli
Danke @ Ian, ich habe den letzten Tag nach diesem Artikel gesucht. SEO scheitert heh
Rudolf Olah
18

Dies wurde hier schon einmal behandelt ...

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

Wenn Sie eine Anwendung schreiben und sie adressieren müssen ccts-logserver1, verwenden Sie diesen Namen durchgehend, machen Sie diesen jedoch zu einem CNAME oder einem Alias. Der echte Hostname kann beliebig sein: Obst oder Gemüse, griechische Mythologie oder Seinfeld-Charakter ... aber er bietet Ihnen Flexibilität, wenn Sie echte funktionale Namen zuordnen müssen, aber etwas behalten möchten, an das sich die Leute erinnern können.

Stellen Sie sich das Beispiel vor mango, bei dem der DB-Server ausfällt, aber durch etwas anderes ersetzt wird peach. Vielleicht müssen vorhandene Prozesse und Anwendungen sehen cmt-prod-db1. Sie können die Systeme austauschen, ohne Namenskonflikte erstellen und die Anwendungen (und Entwickler) bei Laune halten.

ewwhite
quelle
4

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 Clients haben, die möglicherweise mehrere Büros in verschiedenen Domänen haben (oder ein einziges Büro in mehreren Domänen oder mehrere Büros in derselben Domäne oder alle oben genannten).

Die Informationen enthalten für uns Firma / Domain, Ort, Funktion, Nummer. Für einen Domänencontroller für ein Unternehmen, sagen wir, Cypress in Chicago, wäre dies:

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

CYPRCHSQL001 wäre der SQL-Server, CYPRCHMGM001 wäre die Verwaltung (dh Antivirus, Backups usw.), und CYPRCHAPP001 wäre ein gemischter Anwendungsserver. Leicht zu merken, leicht zu sortieren, leicht zu lehren.

Schlaflosigkeit
quelle
1
Wie können Sie sich erinnern, welche Anwendungen auf CYPRCHAPP001 im Gegensatz zu CYPRCHAPP003 ausgeführt werden? Ich gebe zu, dass dies auch ein Problem mit mnenomischen Namen ist, aber wenn Sie sich für eine Art von funktionalen Namen entscheiden, kann dies auch spezifisch sein.
ein Lebenslauf vom
2
@ MichaelKjörling Feinkörnige Angaben zu dem, was sich auf einem Server befindet, gehören nicht in einen Namen, sondern in eine Art Dokumentation. Wenn jemand wissen muss, was auf CYPRCHAPP001 läuft, liest er die Dokumentation. Neben dem Umzug von Anwendungen wird CYPRCHAPP001_PointofSale_Payroll_HRSoftware-etc eine falsche Bezeichnung sein, wenn das Unternehmen seine Gehaltsabrechnungssoftware auf eine gehostete Lösung umzieht.
Wulfhart
2
@Wulfhart mich mit Ihrem Punkt zustimmen, aber was mit mit CNAMEs falsch für pointofsale, payrolletc.? Auf diese Weise muss sich nur der Systemadministrator darum kümmern, wo genau die Lohn- und Gehaltsabrechnungssoftware ausgeführt wird. für alle anderen funktioniert es einfach. Möchten Sie etwas in ein anderes Rechenzentrum verschieben? Überhaupt kein Problem. Möchten Sie die POS-Systemdatenbank auf einen eigenen dedizierten Server verschieben? Aktualisieren Sie einfach den pointofsale-databaseCNAME, um auf den neuen Speicherort zu verweisen. Und so weiter.
ein Lebenslauf
1
Angenommen, Sie müssen eine Maschine ersetzen: Sobald Sie CYPRCHSQL002 erstellt und getestet haben, müssen Sie nur den Namen CYPRCHSQL001 zurückziehen (niemals zu ersetzen) oder 002 in 001 umbenennen, nachdem Sie die alte 001 entfernt haben, oder so etwas sonst?
Nickgrim
@ MichaelKjörling Das scheint mir eine großartige Idee zu sein. Mit "Angaben gehören nicht in einen Namen" meine ich nicht in den Hostnamen des Rechners.
Wulfhart
2

Die einzige Voraussetzung für Hostnamen ist, dass sie im Netzwerk eindeutig sind.

Die Bedeutung hat nicht nur mit der Serverfunktion zu tun. 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 hilfreich sein. Das Erkennen des Unterschieds zwischen einem Netzwerkgerät, einem Linux-Server oder einer Windows-Box kann sehr praktisch sein, wenn Sie herausfinden möchten, mit welchem ​​Tool Sie sich anmelden müssen.

Wir versuchen, diese Informationen wie folgt in den Gerätenamen einzufügen:

L oder T - lebt oder Test - P oder V - physischer oder virtueller S oder N - Server oder Netzwerk (wir haben noch keinen Linux - Server) eine laufende Nummer , um sicherzustellen , Einzigartigkeit Einen ISO 3166-1 drei Buchstaben bestehenden Ländercode angibt , wo das Gerät befindet sich.

Anschließend verwenden wir CNAMES in DNS, um dem Hostnamen verschiedene Dienstnamen zuzuordnen.

Ich habe diesbezüglich gemischte Gefühle. Es spart sicherlich Zeit, nachzuschlagen, wo sich ein bestimmtes Gerät befindet. Andererseits ist es viel schwieriger, sich zu merken, was ein bestimmter Server tut, wenn er seinen Hostnamen erhält, im Vergleich zu unserem vorherigen System, das Edelsteine ​​verwendet. Die Edelsteine ​​hatten überhaupt keine Bedeutung, aber sie waren leicht zu merken, da 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 auftauchte, als wir von einem System zum anderen übergingen.

dunxd
quelle
Ich bin damit nicht einverstanden: "Zu wissen, ob ein Gerät virtuell oder physisch ist, kann auch nützlich sein" im Rahmen einer Namensdiskussion . Natürlich sind es nützliche Informationen, aber es ist nicht das erste, was Sie über einen Server wissen müssen, wenn Sie dessen Namen lesen. Darüber hinaus unterbricht P2V oder V2P entweder Ihr Schema oder erfordert eine Umbenennung des Servers, wodurch andere Probleme auftreten können.
Mfinni
1
Meiner Erfahrung nach macht P2V oder V2P eine ganze Reihe von Dingen kaputt und sollte nach Möglichkeit vermieden werden - wir tun dies, daher ist es kein Problem mit unserer Namenskonvention. Die Namenskonvention muss den Anforderungen des Entwicklers entsprechen - in der Organisation, in der ich arbeite, wurde sie von dem Team entworfen, das alle Server und Netzwerkgeräte verwaltet, und sie möchte in der Lage sein, die oben genannten Dinge zu erklären. Es ist vielleicht nicht richtig für Sie, aber dann ist alles offen für Diskussionen. Die einzige technische Voraussetzung ist die Einzigartigkeit.
dunxd