У меня есть веб-сервер, который подключается к внутренней базе данных через VPN. В базе данных есть 2 IP-адреса (основной и дополнительный) с веб-сервера. Как я могу настроить свой файл / etc / hosts так, чтобы, если основной IP-адрес был недоступен, использовался дополнительный IP-адрес?
Будет ли это работать для моего файла хостов?
141.131.286.1 abc.efg.datastore.com #primary
141.131.286.237 abc.efg.datastore.com #secondary
linux
networking
hosts
Майк Т
источник
источник
Ответы:
Файл hosts не предоставляет такой механизм. Если вы укажете два IP-адреса для одного и того же имени, будет использоваться только первый. Таким образом, не существует такой вещи, как первичные и вторичные IP-адреса.
Кроме того, файл hosts не обрабатывает URL-адреса. Он просто обрабатывает имена, подобные тем, которые указаны в вопросе. URL содержит полный путь и протокол, например
http://host/path/to/resource
.источник
Вы не можете обеспечить устойчивость или циклическую балансировку нагрузки через
/etc/hosts
файл - он не предназначен для этой цели.Вместо этого ваши варианты ... (без определенного порядка)
источник
/ etc / hosts не поддерживает циклический перебор, но вы можете написать простой скрипт bash, который заменяет запись, помеченную комментарием #RoundRobin (или любым другим тегом, который вы хотите использовать, просто отразите его в строке grep в сценарии) ,
Приведенный выше скрипт получает вывод nslookup для sub.domain.com и сохраняет его в массиве. Затем он печатает самое верхнее значение в $ new и извлекает существующее значение для тега #RoundRobin, назначенного в / etc / hosts ... и, наконец, выполняет sed-замену
Запись файла / etc / hosts будет выглядеть так
Наконец, поместите этот скрипт в crontab для запуска каждый час или около того, и теперь у вас будет / etc / host round-robin.
Это особенно полезно, если у вас есть закодированная страница, которая извлекает некоторые данные из API, и поиск DNS для сервера API вызывает много времени зависания при выполнении скрипта страницы ... что приводит к высокому потреблению ЦП для того, что в противном случае кажется простой страницей. Чтобы избежать дорогостоящего поиска DNS (особенно если ваш сайт выполняет сотни из них в минуту при интенсивном трафике), вы должны использовать / etc / hosts для разрешения полного доменного имени удаленного сервера API. Это значительно сократит использование ЦП для извлечения данных API и создания страницы.
источник
Да, это будет работать.
Тем не менее, механизм поиска просто выполняет список, пока не найдет совпадение.
Таким образом, хотя ответ на поставленный вопрос - ДА, это будет вызов. Но ничего непреодолимого.
Попробуйте это: каждый из этих IP-адресов действительно должен иметь разные имена.
источник
Простой способ добиться этого - использовать общедоступную службу DNS, например AWS Route53. Вы можете ввести несколько IP-адресов для каждой записи с приоритетом
abc.efg.datastore.com
Пока сертификаты не задействованы, это работает и даже не противоречит каким-либо нормам или лучшим практикам.
NSLookup или другие запросы домена вернут оба адреса. Ваше приложение должно быть в состоянии справиться с этим. И да, домен должен быть публично зарегистрированным, а не только локальным именем хоста.
источник
A
записи не имеют поля приоритета. Некоторые авторитетные службы DNS имеют взвешивание записей, но это делается путем вероятностного включения или исключения записей.Простота установки, пожалуйста, следуйте инструкциям:
которая должна ответить на две записи с помощью RR-DNS, так что если один узел из списка не работает - ваше приложение будет подключено к другому.
источник