上周有人使用 AMI 类型 为我们创建了一个 AWS EC2 实例Amazon Linux 2 AMI 2.0.20190313 x86_64 HVM gp2
。我们将其称为 Instance1。昨天我们发现我们的软件存在问题,可能是由该版本的 Linux 引起的,因此我们使用较旧的 AMI 类型创建了一个新 EC2 实例Amazon Linux AMI 2018.03.0.20190514 x86_64 HVM
。我们使用与 Instance1 完全相同的实例类型 (m5.large)、VPC、子网、标签和安全组。
启动第二个实例(Instance2)后,我们的软件生成了 IP 地址错误。然后我们注意到命令hostname -i
返回了hostname: Unknown host
。
该hostname
命令本身返回正确的主机名,并且该ifconfig
命令显示eth0
具有正确的 IP 地址。
在实例 1 上运行hostname -i
返回了正确的 IP 地址。
我们在 AWS 控制台的“描述”选项卡中比较了这两个实例,没有发现任何差异。我们向创建实例 1 的人询问了这个问题,他只能建议检查是否eth0
存在,并确保安全组是相同的(事实确实如此)。
有人知道为什么hostname -i
返回的Unknown host
是 IP 地址吗?
我们最终采取了一个解决方法:
Instance1 和 Instance2 上的文件/etc/hosts
均包含:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost6 localhost6.localdomain6
我们编辑了 Instance2 上的文件以包含以下内容:
<ip address> localhost <hostname>
::1 localhost6 localhost6.localdomain6
之后,hostname -i
返回 IP 地址。但我们宁愿不必在/etc/hosts
Instance2 上进行这种更改,因为我们不必在 Instance1 上进行这种更改。