На прошлой неделе кто-то создал для нас экземпляр AWS EC2 с использованием типа AMI. Amazon Linux 2 AMI 2.0.20190313 x86_64 HVM gp2
. Назовем это Instance1. Вчера мы обнаружили проблему с нашим программным обеспечением, которая могла быть вызвана этой версией Linux, поэтому мы создали новый экземпляр EC2, используя более старый тип AMI. Amazon Linux AMI 2018.03.0.20190514 x86_64 HVM
. Мы использовали тот же тип экземпляра (m5.large), VPC, подсеть, теги и группы безопасности, что и Instance1.
После того, как мы запустили второй экземпляр (Instance2), наше программное обеспечение сгенерировало ошибку IP-адреса. Затем мы заметили, что команда hostname -i
вернулся hostname: Unknown host
.
В hostname
команда сама по себе возвращает правильное имя хоста, а ifconfig
команда показывает eth0
имея правильный IP-адрес.
Бег hostname -i
на Instance1 вернул правильный IP-адрес.
Мы сравнили 2 экземпляра на вкладке «Описание» в консоли AWS и не обнаружили никаких различий. Мы спросили об этом парня, создавшего Instance1, и все, что он мог предложить, это проверить, что eth0
существовали и удостоверились, что группы безопасности были такими же (что они есть).
Кто-нибудь знает почему hostname -i
возвращается Unknown host
вместо IP-адреса?
В итоге мы нашли обходной путь:
В /etc/hosts
файл как на Instance1, так и на Instance2 содержал:
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.