如何让 Ubuntu 服务器 VM/etc/hostname/
在启动时自动设置为 VM 分配的 IP 地址的值?
我正在创建一个 Ubuntu 服务器 VM 映像来运行 Hadoop。当客户端与 Hadoop 交互时,它会返回集群中节点的地址(即使在这种情况下它们都是同一台机器上的进程)供客户端交互。这些地址由 Java 的主机名解析确定,我认为这根本不可靠。我被告知解决这个问题的最佳方法是设置/etc/hostname/
为唯一网络接口的分配 IP 地址。或者,也可以设置环境变量,然后将其传递给运行每个 Hadoop 进程的 JVM。
答案1
我补充道
hostname `hostname -I`
到'/etc/rc.local',并将主机名正确设置为当前分配的 IP 地址。
答案2
使用固定 IP 是最简单的解决方案。如果可以,只需/etc/hostname
在客户机上进行更改,使其看起来像这样(当然使用正确的 IP):
192.168.1.10
如果你不能或不想使用它,你可以设置一个计划任务读取系统的 IP 并进行/etc/hostname
相应更新。此命令将为您提供您的 IP:
ifconfig | grep Bcast | awk '{print $2}' | sed 's/addr://'
现在为 root 添加一个新的 crontab:
sudo crontab -e
这将调出您定义的编辑器。将此行添加到 crontab 文件:
@reboot ifconfig | grep Bcast | awk '{print $2}' | sed 's/addr://' > /etc/hostname
这将在每次机器启动时运行一次命令并将其输出(IP)保存到/etc/hostname
。一个可能的问题是 cron 守护程序在分配 IP 之前启动。在这种情况下,您可以将其设置为每五分钟左右运行一次:
*/5 * * * * ifconfig | grep Bcast | awk '{print $2}' | sed 's/addr://' > /etc/hostname