key*_*one 81 configuration-management best-practices
假设一个环境有一个由不同服务器组成的 puppet 管理集群——各种硬件、软件、操作系统、虚拟/专用等。
您会选择有意义的主机名(mysqlmaster01..99、mysqlslave001..999、vpnprimary、vpnbackup 等)还是更喜欢无意义的主机名,例如书籍或电影中的角色?
我看到有意义的主机名的问题是名称通常代表单个服务,如果服务器有多个用途,它会变得非常混乱(特别是如果服务器角色经常变化)。
难道不是将服务名称映射到 IP 地址并维护 DNS 应该做的映射吗?
这两种方法的优点和缺点是什么,你必须用你选择的方法解决哪些实际问题?
Mad*_*ter 99
曾几何时,我有机会决定命名方案。所以我四处询问我的开发人员,毕竟谁是每天必须使用这些名称的人,他们是否更喜欢功能名称(即,名称以某种编码形式表示机器的目的)或助记名称(即,从一些预先存在的人类命名方案中提取的名称,其中不包含有关机器目的的隐含内容)。
在 38 个开发人员中,有 37 个首选助记名称;只有一个首选的功能名称。所以我把它们都以河流命名(有很多可能的名字,其中许多都很简短,容易记住,而且输入很快)。
人类大脑经过精心设计,可以为名称赋予意义。如果您提供令人难忘的名称,人们会很快记住这些名称的用途并使用它们。如果您使用从一些常见背景中提取的名称(例如河流、元素、星星、县、饮料,您就会明白)它可以帮助人们在遇到公司主机名时立即识别它;否则像“所有电子邮件都结束了betelgeuse”这样的语句可能会有点混乱)。
相反,我的开发人员觉得他们在以前的工作中很难准确记住是什么pr1ms001。
但我应该补充一点,我们在内部 DNS 中使用了 CNAME 来提供一个功能名称到助记符名称映射,所以如果你真的发现更容易记住 PR 站点第一个集群的主邮件服务器是pr1ms001,那么 DNS 将让你知道那是目前orwell。此外,这让我们每台机器都有许多功能名称,因此只要您始终使用与您正在处理的功能相关的功能名称,您就可以确定它pr1imap001始终指向 IMAP 服务器,即使我们移动了该功能从orwell到rhine。并且当hudson死亡时,我们可以在不影响操作功能的情况下更改替换的名称,这样我们就不会出现“你是说新的hudson还是旧的hudson?”的问题。困惑。
Tha*_*eli 93
这在很大程度上可以归结为你的服务器是否pets还是livestock。
宠物有单独的名字。它们彼此不同,我们关心这些差异。当一个人生病时,我们通常会尝试护理它恢复健康。传统上,服务器一直是宠物。
牲畜得到数字。它们大多相同,有什么不同,我们不在乎,通常会尽量减少。当一个人生病时,我们把它放下,再换一个。完全虚拟化的服务器,尤其是像AWS这样的IaaS服务器,是家畜。
在大多数复杂的环境中,你有一个混合。例如,您的网络后端几乎肯定是牲畜。如果你需要更多,你可以使用标准配置再增加一些;如果你不需要那么多,你就关掉一些。在某些配置中,您的数据库服务器是宠物。每个可能有很多特殊的设置;你甚至可能在裸机上运行它们而不是虚拟化。
当然,在任一环境中,您都可以命名 SERVICES 并直接寻址它们。在任何情况下,这都是最佳实践;您的开发人员不需要知道或关心服务的实际主机名是什么。主机名应该是一个纯粹的操作细节。那么,想想在主机名中对您的运维人员有用的编码信息 - 例如,表示服务器位于哪个数据中心通常很有帮助。
eww*_*ite 18
我的建议是功能名称和助记名称的组合......
如果您正在编写一个应用程序并且它需要 address ccts-logserver1,请始终使用该名称,但将其设为CNAME 或别名。真正的主机名可以是您想要的任何名称:水果或蔬菜、希腊神话或宋飞正传……但当您需要关联真正的功能名称时,它为您提供了一些灵活性,但要保留一些人们可以记住的东西。
想想这样的例子mango,数据库服务器失败了……但被其他东西取代,比如peach。也许现有的流程和应用程序需要看到cmt-prod-db1。您可以交换系统,在没有命名冲突的情况下构建它们并使应用程序(和开发人员)满意。
| 归档时间: |
|
| 查看次数: |
6388 次 |
| 最近记录: |