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?
Antworten:
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
pr1ms001
war.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 warorwell
.pr1imap001
Wenn 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 vonorwell
bisrhine
. Und alshudson
wir starben, konnten wir den Namen des Ersatzes ändern, ohne die Betriebsfunktionen zu beeinträchtigen, so dass wir nie das "Meinst du neuhudson
oder althudson
?" Hatten. Verwechslung.quelle
Dies hängt hauptsächlich davon ab, ob Ihre Server
pets
oderlivestock
.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.
quelle
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 wirdpeach
. Vielleicht müssen vorhandene Prozesse und Anwendungen sehencmt-prod-db1
. Sie können die Systeme austauschen, ohne Namenskonflikte erstellen und die Anwendungen (und Entwickler) bei Laune halten.quelle
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.
quelle
pointofsale
,payroll
etc.? 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 denpointofsale-database
CNAME, um auf den neuen Speicherort zu verweisen. Und so weiter.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.
quelle