Я использую Amazon AWS EC2 под управлением Amazon Linux, хотя это может не иметь значения для ответа.
Скажем, у меня есть три хоста, H1, H2, H3, с частными IP-адресами 10.0.0.1, 10.0.0.2 и 10.0.0.3. Это можно представить в файле / etc / hosts следующими строками:
127.0.0.1 localhost localhost.localdomain
10.0.0.1 H1
10.0.0.2 H2
10.0.0.3 H3
В коде php я выполняю такие действия, как запуск curl для доступа к материалам на определенном хосте, основываясь на неявном знании того, что предлагает этот хост. Я бы предпочел не беспокоиться о том, является ли конкретный хост, к которому я обращаюсь, хостом, на котором выполняется сам код, просто обращайтесь к H1, H2 или H3. я мог используйте другой файл / etc / hosts на каждом хосте, изменив строку с его частным IP-адресом, чтобы использовать адрес 127.0.0.1. Но действительно ли это важно? Если я использую одинаковые файлы / etc / hosts на всех машинах, жертвую ли я производительностью или функциональностью?
Действительно ли сетевой доступ к собственному частному IP-адресу машины вызывает реальный «внешний» трафик, или он все равно обнаруживается и использует коннектор обратной связи, например 127.0.0.1? Видит ли процесс, получающий запрос, исходный адрес как собственный частный IP-адрес машины, или он все равно видит 127.0.0.1?
Используя идентичный hosts
файл в порядке и не повлияет на производительность, трафик останется локальным, если вы подключитесь к H1
из H1
. Однако, если вы подключитесь к localhost/127.0.0.1
, исходный IP-адрес будет 127.0.0.1
также, но если вы подключитесь к H1
, исходный IP-адрес будет 10.0.0.1
(например, в журнале Apache).
Одно отличие: некоторые приложения, особенно MySQL / MariaDB, переключаются на использование сокетов домена Unix для трафика, если вы подключаетесь к localhost
, но используйте стек IP при использовании 127.0.0.1
или фактический IP-адрес или имя хоста машины. Говорят, что это дает небольшое преимущество в производительности, хотя я никогда не тестировал это.