Можно программно разрешить конкретный 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

Другие вопросы по тегам