在有意义的主机名和无意义的主机名之间进行选择


79

假设一个环境是由人偶管理的,由不同服务器组成的集群-各种硬件,软件,操作系统,虚拟/专用等。

您将选择有意义的主机名(mysqlmaster01..99,mysqlslave001..999,vpnprimary,vpnbackup等),还是希望使用无意义的主机名,例如书或电影中的字符?

我发现有意义的主机名存在的问题是,名称通常代表单个服务,并且如果服务器具有多个目的,则它会变得非常混乱(尤其是如果服务器角色经常更改)。

是不是将服务名称映射到IP地址并保持该映射DNS应该做的事情?

两种方法的优点和缺点是什么?选择的方法必须解决哪些实际问题?


10
如果您控制DNS,则始终可以同时进行。
jscott 2013年

16
我将其保留在此处:RFC 1178
gelraen

尽管从表面上看是一个基于意见的问题,但实际答案是基于实证和经验调查,并基于人类的认知功能(人脑如何记忆事物)。我认为这个问题应该重新讨论。
dotancohen 2015年

Answers:


98

从前,我有机会决定命名方案。因此,我四处询问了我的开发人员,这些开发人员毕竟是每天必须使用这些名称的人员,他们是否更喜欢功能名称(即以某种编码形式表示名称的功能名称)。机器名称)或助记符名称(即,从某些现有的人类命名方案中提取的名称,其中不包含有关机器用途的隐式内容)。

在38个开发人员中,有37个首选助记符名称。只有一个首选功能名称。因此,我都以河流命名(有很多可能的名字,其中许多都很简短,易于记忆且易于输入)。

人脑经过精心设计,可以将含义附加到名称上。如果您提供令人难忘的名称,人们会很快记住这些名称的用途并加以使用。如果您使用的名称取自一些常见的背景(例如河流,元素,星星,县,酒水,您会想到的),它可以帮助人们在遇到公司名称时立即识别出该公司的名称;否则,诸如“所有电子邮件都以电子邮件结尾”之类的陈述betelgeuse可能会造成混淆。

相反,我的开发人员觉得他们以前的工作很难记住确切的内容pr1ms001

但我要补充一点,我们在内部DNS中使用了CNAME来提供功能名称到助记符名称的映射,因此,如果您真的容易记住,在PR站点的第一个群集中的主邮件服务器是pr1ms001,则DNS会让你知道那是当前orwell。而且,这使我们每台计算机拥有许多功能名称,因此,只要您始终使用与正在使用的功能相关的功能名称,就可以确定pr1imap001即使我们移动了该功能,它也始终指向IMAP服务器从orwellrhine。而且,当hudson死亡时,我们可以在不影响操作功能的情况下更改替换的名称,因此我们再也不会遇到“您是指新的hudson还是旧的hudson?” 混乱。


7
您可能会认为,但是我的开发人员说,无论是否传递其他任何信息,助记符方案都更好,因为他们都建立了自己的内部状态表(位于什么地方),并且这样的内存更容易建立在名称上人类的大脑喜欢记忆。
MadHatter

11
您应该以冰岛的火山命名。
Chloe

1
为“河池” +1;)
Konerak

2
这是一个很棒的主意,我正在偷它。
SpacemanSpiff

1
我同意以这种方式命名服务器在自动构建系统中的工作更多,但是我注意到构建服务器的目的是供其他人使用它们-上面的数据来自必须使用它们的人。也许他们想要的东西已经改变了,但是我认为我们在服务器管理上的决定应该以使我们的工作变得简单的更多为基础。
MadHatter

93

这主要取决于您的服务器是pets还是livestock

宠物有个名字。它们彼此不同,我们关心这些差异。当一个人生病时,我们通常会尝试将其恢复健康。传统上,服务器是宠物。

畜牧业获得数字。它们大部分是相同的,并且有什么区别,我们不在乎,通常会尽量减少。当一个人生病时,我们把它放下来,再得到另一个。完全虚拟化的服务器,尤其是IaaS服务器(例如AWS)是牲畜。

在大多数复杂的环境中,您会混在一起。例如,您的Web后端几乎可以肯定是牲畜。如果需要更多功能,可以使用标准配置增加一些功能。如果不需要那么多,可以将其关闭。在某些配置中,数据库服务器是宠物。每种设置可能有很多特殊的设置;您甚至可能在裸机上而不是虚拟化上运行它们。

当然,在任何一种环境中,您都可以命名“服务”并直接对其进行寻址。无论如何,这都是最佳做法。您的开发人员不需要知道或关心服务的实际主机名是什么。主机名应该纯粹是操作细节。然后,考虑对主机名称中的操作人员有用的信息进行编码-例如,指示服务器所在的数据中心通常会很有帮助。


22
宠物或家畜-这是放置它的好方法。
迈克尔·汉普顿

5
我最近在以下位置重新找到了我第一次看到此概念的文章:gregarnette.com/blog/2012/05/cloud-servers-are-not-our-pets
Thaeli 2013年

谢谢@Ian我一直在为该文章寻找最后一天,SEO失败了
Rudolf Olah 2015年

18

之前已经在这里介绍了...

我的建议是功能名称和助记符名称的组合...

如果您正在编写应用程序,并且需要寻址ccts-logserver1,请在整个过程中使用该名称,但要使用CNAME或别名。真实的主机名可以是您想要的任何名称:水果或蔬菜,希腊神话或Seinfeld角色...但是当您需要关联真实的功能名称时,它为您提供了一定的灵活性,但保留了人们可以记住的名称。

想想这个例子mango,数据库服务器发生故障...但是被其他东西代替了,比如说peach。也许现有的流程和应用程序需要了解cmt-prod-db1。您可以交换系统,构建它们而无需命名冲突,并使应用程序(和开发人员)满意。


4

在我工作的地方,我们在多个城市管理着多个站点,多个公司。对我们而言,助记符名称无效。相反,我们使用描述服务器的简写形式。这在我们的情况下效果很好,因为我们有一些客户端,这些客户端可能在不同域上有多个办公室(或在多个域上有一个办公室,或在同一域上有多个办公室,或以上所有!)

对于我们来说,该信息包含公司/域,城市,职能,编号。因此,对于公司的域控制器而言,赛普拉斯在芝加哥说,它将是:

CYPRCHDOM001(我们在交谈中将其称为赛普拉斯主要DOM)

CYPRCHSQL001将是它的SQL服务器,CYPRCHMGM001将是它的管理(即防病毒,备份等),而CYPRCHAPP001将是它的混合应用程序服务器。易于记忆,易于分类,易于教学。


1
因此,您还如何记住在CYPRCHAPP001而非CYPRCHAPP003上运行的应用程序?我承认这也与词组名称有关,但是,如果您要使用某种功能名称,则可能也要具体。
CVn

2
@MichaelKjörling服务器上的详细信息并不属于名称,它们属于某种文档。如果有人需要了解CYPRCHAPP001上正在运行的内容,请阅读文档。除了移动应用程序外,当公司将其工资软件转移到托管解决方案时,CYPRCHAPP001_PointofSale_Payroll_HRSoftware-etc也将被误用。
Wulfhart

2
@Wulfhart我同意你的观点,但是这有什么错有对CNAME记录pointofsalepayroll等等?这样,除了系统管理员之外,没有人需要真正关心工资软件的运行位置。对于其他所有人,它都可以正常工作。想要将东西移到另一个数据中心吗?没问题 是否要将销售点系统数据库移至其专用服务器?只需更新pointofsale-databaseCNAME以指向新位置即可。等等。
CVn

1
假设您需要更换一台机器:构建CYPRCHSQL002并对其进行测试后,您是否要撤消CYPRCHSQL001的名称(永远不要更换),或者在删除旧的001之后将002重命名为001,或进行其他操作?其他?
nickgrim

@MichaelKjörling对我来说似乎是个好主意。“特定名称不属于名称”是指不在计算机的主机名中。
Wulfhart

2

主机名的唯一要求是它们在网络上应该唯一。

含义不仅仅与服务器功能有关。如果您必须处理物理设备,则位置非常有用。知道设备是虚拟的还是物理的也很有用。在弄清楚要使用哪种工具登录时,能够分辨网络设备,Linux服务器或Windows盒之间的区别非常方便。

我们处理该问题的方法是尝试将此信息放入设备名称中,如下所示:

L或T-实时或测试P或V-物理或虚拟S或N-服务器或网络(我们没有任何Linux服务器)序列号以确保唯一性ISO 3166-1三字母国家/地区代码,指示设备的位置位于。

然后,我们在DNS中使用CNAMES将各种服务名称映射到主机名。

对此我五味杂陈。当然,它省去了查找特定设备所在位置的时间。另一方面,与我们以前使用宝石的系统相比,记住给定服务器的主机名时要记住的工作要困难得多。宝石根本没有任何含义,但它们很容易记住,因为每个人都可以创建自己的联系。

我猜唯一的建议就是解决一个模式,因为当我们从一个系统过渡到另一个系统时,会出现最大的混乱。


我确实不同意这一点:在命名讨论的上下文中,“知道设备是虚拟的还是物理的也可能有用” 。当然,它是有用的信息,但这并不是您需要通过读取服务器名称来了解的第一件事。此外,P2V或V2P要么破坏您的方案,要么需要重命名服务器,这可能会破坏其他内容。
mfinni 2013年

1
以我的经验,P2V或V2P破坏了很多事情,应尽可能避免使用-我们这样做了,因此命名约定不是问题。命名约定必须满足设计它的人的要求-在我工作的组织中,命名约定是由管理所有服务器和网络设备的团队设计的,他们希望能够说出上述内容。这可能不适合您,但是所有这些都可以辩论。唯一的技术要求是唯一性。
dunxd
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.