Можно программно разрешить конкретный IP-адрес для загрузки сбалансированного доменного имени?
Наша среда настроена с несколькими Apache httpd, которые служат в качестве обратных прокси для различных внутренних серверных Java-серверов (в основном, серверов Tomcat).
Мы хотели бы написать скрипт для каждого IP-адреса и проверить действительный http-ответ.
Httpd настроены на использование виртуальных хостов, поэтому для проверки полного ответа http / html нам необходимо отправить запрос http на доменное имя. Другими словами, отправка http-запроса напрямую на определенный IP-адрес может привести к некорректному HTML-ответу http от apache.
Итак, подведем итог, мы имеем несколько прослушиваний httpd на нескольких IP-адресах. Например:
my.domain.com нагрузка распределена по:
192.168.11.1 192.168.11.2
Мы можем программно обновить файл hosts для каждого IP-адреса, а затем сделать запрос к имени домена и проверить каждый отдельный IP-адрес таким образом.
Но есть ли способ сделать http-запрос к домену и разрешить его по определенному IP-адресу без использования файла hosts? Может быть, есть Java-библиотека, которая может делать подобные вещи программно?
1 ответ
Обновление: в этой статье объясняется, как настроить DNS, которыми вы можете управлять программно: http://rkuzmik.blogspot.com/2006/08/local-managed-dns-java_11.html. Я реализовал sun.net.spi.nameservice.NameService
, а также sun.net.spi.nameservice.NameServiceDescriptor
и был в состоянии указать пользовательские записи DNS таким образом.
Стоит отметить, что InetAddress
кеширует доменное имя / IP-адреса агрессивно. Другими словами, например, когда вы создаете InetAddress
объект для my.domain.com
решив к 127.0.0.1
, трудно или невозможно изменить его во время работы программы из-за InetAddress
кэш.
Я думаю, что вы могли бы также использовать это (который, кажется, является оберткой вокруг солнечного материала, который я использовал):
http://www.xbill.org/dnsjava/dnsjava-current/doc/org/xbill/DNS/spi/DNSJavaNameService.html