保持 Linux 服务器主机名一致的最佳方法是什么?

保持 Linux 服务器主机名一致的最佳方法是什么?

我们有一台装有 Linux CentOS 发行版的服务器。自从我们上次重新启动以来,它在一个月内以某种方式丢失了其主机名。上周我们运行了一个 ETL(提取、转换、加载)作业,该过程的一部分在将数据移动到数据库之前停止了 JBoss,然后自动重新启动 JBoss。重启失败。

我使用这种方法解决了(通过黑客):

https://stackoverflow.com/questions/6484275/what-c​​auses-the-error-java-net-unknownhostexception/34094741#34094741

上个月我们没有对服务器进行任何更改(对任何文件),所以我知道 /etc/hosts 不会更改。我在 /etc/hosts 文件中添加了额外的一行(在上面的答案中),以便 JBoss 可以启动。

两个问题:

根据这个问题,“hostname -f”命令如何从 DNS 检索主机名?它对我们的 DNS 检查什么?我应该使用一个术语来与我们的服务器团队沟通吗?

`hostname` 在哪里存储我设置的主机名?

大多数服务器管理员如何处理这个问题,或者避免发生在我身上的事情?他们是否总是在 /etc/hosts 文件中设置某些内容以避免更改 DNS?

基本上我试图找出我们的网络(或 DNS)上发生了什么变化导致我们的主机名丢失。看,当我登录时,命令提示符显示服务器上的主机名。奇怪的是,我在那里看到它,但当我调用“hostname -f”时却没有。请参阅下面的“lvs-xyz”。

[root@lvs-xyz ~]# hostname -f
hostname: Unknown host

如果您不能回答我的所有问题,我主要是在寻找“规范”,以避免丢失 Linux 管理的主机名。如果我将它放入 /etc/hosts 中,那么它看起来像是一个 hack,因为如果 kernal 值发生变化,命令提示符可能会发生变化,如果发生这种情况,它将与 /etc/hosts 不同。

编辑:

[root@lvs-xyz sysconfig]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
NETWORK=144.92.154.0
IPADDR=144.92.154.48
NETMASK=255.255.255.192

答案1

您可以用一行指定它(无论如何都会在重新启动时加载)/etc/sysconfig/networkHOSTNAME=请参阅文档这里

通常您应该将其指定为完全限定名称。

如果主机还没有名称,并且您正在使用 DHCP,它通常会以这种方式选择其名称。

答案2

有几个地方存储主机名:

  • 在内核中(/proc/sys/kernel/hostname)
  • 在系统中
  • 在/etc/主机名中
  • 在 /etc/hosts 中
  • 可能是其他(Dbus?)

到目前为止,我发现改变它们的最快方法是:

sudo hostnamectl set-hostname $new_hostname
sudo vi /etc/hosts   (updating the hostname for the host's ip)
hostname -f          (check your work)

该命令/usr/bin/hostname $new_hostname仅更改内核的主机名 (AFAICT)。

之后,重新启动缓存旧主机名的任何长时间运行的程序,或者接受它们将继续使用它。

编辑:有一些身份验证模块使用主机名向中央身份验证服务器注册。如果主机名发生更改,则必须重新注册或重新安装。我想到的是 SSSD,以及与 Kerberos 相关的任何内容。

相关内容