我正在设置 CentOS 节点的 VMWare 集群。在机器后面添加域名是最佳做法吗?忽略它会带来哪些潜在问题?域会使配置复杂化还是简化配置?
例如,如果我的节点位于192.168.1.93
,我应该/etc/hosts
从
127.0.0.1 localhost.localdomain localhost
到
127.0.0.1 localhost.cluster localhost
192.168.1.93 computernode1.cluster computenode1
或者
127.0.0.1 localhost
192.168.1.93 computenode1
或者
#127.0.0.1 localhost
192.168.1.93 computenode1
或者
192.168.1.93 localhost
192.168.1.93 computenode1
答案1
输入域名/etc/hosts
是可选的,您可以运行系统而不会产生任何不良影响。
忽略它的唯一缺点是系统的完全限定主机名将无法正确显示。例如,hostname -f
。
完全限定主机名检测的工作方式:
- 它首先获取主机名或“短名称”。这是
uname -n
or的输出hostname
。 /etc/hosts
然后,它通过咨询(或者您在 中找到的任何内容/etc/resolv.conf
,如果在 中找不到,则返回到后面的源)来获取该主机名的 IP 地址/etc/hosts
。- 一旦获得 IP,它就会通过再次咨询来进行反向查找
/etc/hosts
。 - 一旦在 中有记录
/etc/hosts
,第一个条目将用作完全限定的主机名。
简而言之,如果您希望完全限定的主机名起作用,您应该执行以下任一操作:
127.0.0.1 fully.qualified.hostname hostname localhost.localdomain localhost
或者
127.0.0.1 localhost.localdomain localhost
1.2.3.4 fully.qualified.hostname hostname
答案2
只要您的主机同意您的域名,指定或不指定/etc/hosts
都不会改变任何内容。另一种做法是将其指定为domain
中的参数/etc/resolv.conf
。如果有一天您的网络管理员更改了它,则不指定它可以简化您的生活。据我所知,指定它不会改变任何东西。
你绝对应该离开127.0.0.1 localhost
或127.0.0.1 localhost localhost.localdomain
进入/etc/hosts
。某些应用程序可能会开始出现非常奇怪的行为,即localhost
绑定到环回地址以外的任何内容,因为这是一个非常非常意外的设置。
答案3
您必须在 IP 地址之后的第一个位置指定完全限定的域名。
正如我们读到的man 5 hosts
:
对于每个主机,应在一行中包含以下信息:
IP_地址 canonical_hostname [别名...]
如果不遵守规则,某些软件可能会崩溃。例如,Puppet 配置管理系统可能会在每次运行时开始来回更改您的主机名,只是因为您没有指定域部分,或者因为您在 FQDN 之前放置了没有域的别名。
答案4
我不确定这是否真的是“可选”(正如帕特里克上面指出的)。我终于找到了 nfs 权限恢复为无人的问题:无人。看起来为了使权限能够正确地使用 nfs 挂载(使用 idmapd),服务器的域名必须与客户端的域名完全匹配。从我发现的一些文档中,hostname -f
减去客户端和服务器之间的实际主机名必须相同,或者您必须在 中为客户端指定一个域名/etc/idmapd.conf
,这意味着每个客户端。
是否有关于在何处指定域名的官方规则?该domainname
命令似乎没有从 /etc/hosts 中提取它。所以放入 /etc/hosts 很困扰我,因为这意味着它存储在文件系统上的多个位置。