Уровень DNS с обнаружением службы в качестве преобразователя, а не SRV

Мне нужно знать, есть ли какое-либо решение для решения моей проблемы. У меня есть DNS-сервер BIND и консул в качестве исследователя услуг. Это то, что мне нужно в виде простой схемы:

enter image description here

Как я могу настроить этот пример настройки и позволить BIND просто преобразовать запись A в IP-адрес исправного сервера балансировки нагрузки?

Если клиент запрашивает DNS-сервер для Запись domain.example , она должна получить IP-адрес работоспособного ( 192.168.1.100 ) сервера

Пример конфигурации consul для DNS показывает, как настраивать записи SRV, а не записи A. Как я могу заставить его работать с записями A для исправного сервера.

Мне нужно сообщить bind ask record от консула, но как? Мой пример файла зоны:

$TTL    300 ;
$ORIGIN example.com.
@  1D  IN  SOA ns1.example.com. hostmaster.example.com. (
                2002022401 ; serial
                3H ; refresh
                15 ; retry
                1w ; expire
                3h ; nxdomain ttl
               )
www    IN  A      192.168.0.2  ; how can i tell bind using consul as IP resolver on this record

consul использует порт для разрешения и как я могу указать bind использовать вместо него consul.

2
задан 24 August 2018 в 14:25
2 ответа

Я считаю, что все слишком сильно сосредотачиваются на сервере BIND. Согласно документации Consul, BIND нужен только для пересылки DNS-запросов с порта 53 на порт 8600, который использует Consul. Consul является DNS-сервером в этой настройке.

Consul использует проверки , чтобы определить, какой из двух (или более) серверов является (являются) "исправными".

Затем он может ответить записями A и SRV , как можно увидеть в документации.

Так что вместо того, чтобы просить нас прочитать всю документацию Consul и придумать для вас рабочую конфигурацию, почему бы и нет? • Вы предоставляете нам свои файлы конфигурации и сообщаете нам, что не работает должным образом. Так мы сможем легче решить возникшую проблему.

Мне нужно передать запись bind ask от консула, но как?

Ответ на этот точный вопрос дан в документации ! ПОЖАЛУЙСТА, прочтите документацию!

4
ответ дан 3 December 2019 в 08:52

Что ж ... к сожалению, вам будет трудно делать это в продакшене.

50% проблемы заключается в обновлении "здоровых" записей указать на здоровый сервер. Есть способы делать динамические обновления с помощью bind, но, к сожалению, нет способа убедить bind выполнить какие-то проверки, чтобы увидеть, исправен ли сервер. Вам нужно будет найти способ инициировать динамическое обновление при достижении состояния работоспособности / неработоспособности.

50% проблемы также связано с кэшированием. На самом деле DNS предназначен для кэширования. В записях DNS есть определенное поле "TTL", которое, по сути, является определенным временем для кэширования записи. Когда вы обновляете «работоспособные» записи, клиенты будут вынуждены ждать, пока не будет достигнут TTL, и записи будут запрошены повторно. Некоторые приложения имеют встроенный метод, который попытается повторно запросить запись, если соединение разорвано или не может быть установлено, но нет гарантии, что это будет сделано.

Лучше использовать брандмауэр правила для отклонения подключений к неработоспособному серверу, и просто полагаясь на DNS-сервер, чтобы объявить оба сервера, и позволяя приложению попробовать один, затем другой (циклический перебор).

4
ответ дан 3 December 2019 в 08:52

Теги

Похожие вопросы