我是一个中度的公有云服务器用户,平时使用的服务器,少则两到三台,多则十几台。这些机器分布在不同的城市,属于不同的供应商,并且可能属于不同分发版本。我该如何标记它们,并且将它们和域名关联起来?
1. Hostname
Hostname 可能是我们标记网络上设备的最好选择了。但是 Hostname 的规范化也是一个需要考虑的问题。有些人喜欢以用途来命名(db1,nginx1等等)。但由于我在使用云主机时要突出的内容并不是用途,所以从最一开始便没有这样做,而是标记了地区或者供应商,有时还有系统版本等。可是,这些信息依旧不能统一。
最后,考虑到使用服务器标示的直观性和唯一性等,我确定了一个服务器的 Hostname 标准,分别由“云服务商缩写”、“IATA城市代码”、“系统和版本”、“随机字符”和“域名”五个部分构成。
整个名称中,像城市代码和随机字符在生成 Hostname 时可以完全确定下来的,但其它的并不一定。因此我又为它们制定了额外的规则,让他们最终能够达成统一。下面就来介绍一下每个部分的具体规则。
1.1 云主机供应商缩写
好像没有哪个权威机构编制了云主机供应商的代号,因此这个地方是由我自己来制定。挑选国内和国际上比较常用的几家供应商,已经可以满足需要了。
供应商名称 | 缩写 |
---|---|
Amazon Web Services | aws |
Microsoft Azure | maz |
Linode | lnd |
DigitalOcean | don |
Vultr | vlt |
Bandwagon | bwg |
阿里云 | ali |
Ucloud | ucd |
腾讯云 | qcd |
1.2 国际航空运输协会城市代码
“国际航空运输协会(IATA)”是一个国际性的民航组织,该组织维护着民航界通用的机场代码和城市代码,我们平时坐飞机打印在登机牌和行李箱上的机场缩写便是该代码。似乎一个城市必须有机场,才能拥有自己的城市代码,但这样也足够满足我们的需要了:公有云的提供商在数据中心选址的时候必须要考虑到交通等基础设施的,所以根据目前的经验,只要是有公有云数据中心的城市,一定有机场,因此暂时可以不必担心 IATA 代码不适用的可能。
要查询某个城市的 IATA 代码,可以访问如下地址:http://www.iata.org/publications/Pages/code-search.aspx
1.3 系统和版本
系统和版本也是我比较关心的问题,因为我们的 Hostname 标记依然是偏向基础设施的。我们还是比较希望能通过 Hostname 反映出系统版本这一关键内容。但各个系统的名称有长有短,版本也各不相同,因此“系统和版本”这一项也经过了定制和规范。
系统名称 | 缩写 | 示例 |
---|---|---|
Red Hat Enterprise Linux | rhel | rhel7 |
CentOS | ctos | ctos7 |
Fedora | fdr | fdr7 |
Oracle Linux | orl | orl7 |
Ubuntu | ubt | ubt1604 |
FreeBSD | fbd | fbd10 |
CoreOS | crs | crs1068 |
Windows | win | win2012 |
当然,系统版本多得数不清,谁也无法把所有的版本都标记出来,而且云服务商一般只提供上述几种系统。所以这样也足够满足需求了。
1.4 随机字符
把随机字符放在 Hostname 中是为了解决标记冲突的问题。比如我在同一家供应商、同一城市购买了多个同样系统的主机,我可以在后面标记数字;但如果只有一个时候,这个数字又显得突兀。因此我选择了随机字符,这样既解决了唯一性问题,在只有一个机器的时候又不会很突兀。长度定为5个,足够使用,又不至于太长。
1.5 域名
域名就不用多说了,如果购买了域名可以设置在这里,这样便形成了一个完整的 Hostname。有人觉得不需要在 Hostname 中填写域名。仁者见仁。
2. 域名指向
如果你平时使用 IP 地址访问和登录,不添加域名,这样一套 Hostname 已经足够让你赏心悦目了;如果你购买了域名,可以将域名用 A 记录指向到这里来,平时使用的时候则免去了记忆 IP 地址的麻烦。但使用的时候你会发现新的问题:这个地址太长了。每次连接 SSH 或通过浏览器访问时,我都需要敲这么长的域名。
为了解决这个问题,我又申请了一个短地址:colinlee.fish。所有和服务有关的二级域名都通过 CNAME 指向刚刚的 A 记录,还可以通过 DNS 做一个简单的负载均衡。很是实用。
以上便是我标记自己使用的云主机的方法,感谢阅读。您是否有更好的方法和实践?欢迎在下面留言。