我注意到,Red Hat/CentOS 和 Debian/Ubuntu 系统之间设置系统主机名的“首选”方法有着根本的不同。
CentOS 文档和RHEL 部署指南说主机名应该是 FQDN:
HOSTNAME=<value>
,其中<value>
应该是完全限定域名 (FQDN),例如hostname.example.com
,但可以是任何必要的主机名。
这RHEL 安装指南稍微有点含糊:
安装程序会提示您输入此计算机的主机名,可以是 完全合格域名(FQDN)格式主机名.域名 或者以以下格式的短主机名主机名。
Debian 参考说主机名不应使用 FQDN:
3.5.5. 主机名
内核维护系统主机名. 运行级别 S 中的 init 脚本,符号链接到“/etc/init.d/主机名.sh“在启动时设置系统主机名(使用主机名命令)存储在“/etc/主机名“。该文件应该包含仅有的系统主机名,而不是完全限定的域名。
我还没有看到 IBM 关于使用哪种产品的具体建议,但是一些软件似乎有偏好。
我的问题:
- 在异构环境中,是使用供应商建议更好,还是选择一个并在所有主机上保持一致?
- 您遇到过哪些软件对主机名设置为 FQDN 还是短名称很敏感?
答案1
我会选择在整个环境中采用一致的方法。这两种解决方案都运行良好,并且与大多数应用程序兼容。不过,在可管理性方面存在差异。
我使用短名称作为 HOSTNAME 设置,并将 FQDN 设置/etc/hosts
为服务器 IP 的第一列,后跟短名称。
我遇到的软件包很少强制或显示两者之间的偏好。我发现对于某些应用程序,特别是日志记录,短名称更简洁。也许我运气不好,看到了像这样的内部域server.northside.chicago.rizzomanufacturing.com
。谁想在日志或shell 提示符?
有时,我会参与公司收购或重组,此时内部域和/或子域会发生变化。在这些情况下,我喜欢使用短主机名,因为日志记录、启动、打印、系统监控等不需要完全重新配置即可适应新域名。
名为“rizzo”且内部域为“ifp.com”的服务器的典型 RHEL/CentOS 服务器设置如下所示:
/etc/sysconfig/network:
HOSTNAME=rizzo
...
-
/etc/hosts:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.100.13 rizzo.ifp.com rizzo
-
[root@rizzo ~]# hostname
rizzo
-
/var/log/messages snippet:
Dec 15 10:10:13 rizzo proftpd[19675]: 172.16.100.13 (::ffff:206.15.236.182[::ffff:206.15.236.182]) - Preparing to
chroot to directory '/app/upload/GREEK'
Dec 15 10:10:51 rizzo proftpd[20660]: 172.16.100.13 (::ffff:12.28.170.2[::ffff:12.28.170.2]) - FTP session opened.
Dec 15 10:10:51 rizzo proftpd[20660]: 172.16.100.13 (::ffff:12.28.170.2[::ffff:12.28.170.2]) - Preparing to chroot
to directory '/app/upload/ftp/SRRID'
答案2
几乎所有软件都对正确设置主机名很敏感。我在 Digg 工作时,曾因做了一个看似无害的更改而导致整个网站瘫痪了 2 个小时,而/etc/hosts
这个更改影响了系统的主机名概念。小心行事。话虽如此,您可能对此感到有些困惑。我认为该HOSTNAME=
设置与基于 Debian 的发行版使用的设置并不直接等同/etc/hostname
。
在异构环境中对我有用的是:
- 使用配置管理软件中的条件,按照供应商推荐的方式设置主机名。
- 使用
hostname
命令设置内核使用的主机名等。 在
/etc/hosts
:127.0.0.1 localhost 10.0.0.1 hostname.example.com hostname
这个配置还没有让我失望过。
答案3
您肯定会在网上找到参考资料,这些参考资料会告诉您一定要以某种方式执行此操作。但在我看来,使用短名称作为主机名,并在 /etc/hosts 中使用完全限定名称肯定更为普遍。这似乎是更明智的方法,因为这样就可以调整需要完全限定名称的服务以进行调用hostname --fqdn
。
我最近只遇到过一款严格要求返回 fqdn 的软件hostname
,那就是 ganeti。他们记录了这一点这里。然而,我看不出他们有什么理由不能适应hostname --fqdn
。
答案4
简短回答:我通常使用 FQDN 作为主机名(RH6/7 文档中推荐)。但是,更合理的方法是使用单标签名称作为主机名,通过 设置 FQDN /etc/hosts
。因此,选择一种方法并尽可能坚持使用。
长答案:使用 FQDN 作为主机名的主要优点是机器名本质上嵌入了域信息。这在接收多个客户/域的电子邮件警报和/或日志时非常有用,因为它可以避免重复的主机名(即:主机名或多或少保证在多个站点/客户/域之间是唯一的)。例如,SNMP默认显示主机名,通过使用 FQDN,它只是传达了更有用的信息。对于(和其他监视工具) 或 bash 也是sysName
如此。虽然您可以配置此类工具以使用 FQDN,即使在具有单标签主机名的机器上也是如此,或者在分层模型中配置它们以清楚地显示包含机器的域,但这是额外的工作。zabbix-agent
$HOSTNAME
有些应用程序甚至要求使用 FQDN 作为主机名,但它们是例外。然而,当出现例外时,单标签主机名的同质使用就会丢失。这可能是 RedHat 建议在 RH6/7 上使用 FQDN 作为主机名的主要原因。较新的文档更加模糊。在“执行标准 RHEL 8 安装”可以读到:
主机名可以是完全限定域名 (FQDN),格式为 hostname.domainname,也可以是没有域名的短主机名。许多网络都有动态主机配置协议 (DHCP) 服务,可自动为连接的系统提供域名。要允许 DHCP 服务将域名分配给此计算机,请仅指定短主机名
尽管“执行高级 RHEL 8 安装”状态:
如果您的网络不提供 DHCP 服务,请始终使用 FQDN 作为系统的主机名
在最初的问题提出后的几年里,用户应用程序已经学会了处理 FQDN 主机名,而不会出现前面答案中描述的问题。例如,bashPS1
提示符默认使用\h
(第一个“.”之前的主机名),rsyslog
并且不是默认情况下在日志文件中保留 FQDN。换句话说,对于许多常用工具来说,FQDN 主机名的可用性缺陷已不复存在。出于这些原因,我通常将系统主机名设置为 FQDN,并根据/etc/hosts
需要保留短名称。
原因是不是使用 FQDN 主机名,坦率地说,这是正确的做法. 分别如Debian 文档和主机名手册页:
该文件应该只包含系统主机名,而不是完全限定的域名
和
建议此名称仅包含单个标签,即不包含任何点
所以,当我这样做的时候感觉不太容易使用 FQDN 主机名,是在我的环境中更容易使用它。
请注意,这并不是反对单标签主机名。如果它们对您有用,请继续使用它。否则,请尝试使用 FQDN 主机名。