Поддельное разрешение DNS в расчете на один удар - PullRequest
2 голосов
/ 07 октября 2010

Я пишу приложение, единственная цель которого - определить, запущено ли одно из наших основных приложений в рабочем состоянии. Это приложение является приложением WCF. Приложение установлено и работает на двух разных устройствах за балансировщиком нагрузки. Сайт в каждом окне настроен на прослушивание трафика для следующего DNS-имени: app.company.com. DNS разрешает app.company.com нашему балансировщику нагрузки, который затем передает запрос в один из двух блоков в циклическом порядке. С точки зрения определения, работает ли наше основное приложение, недопустимо просто отправлять запрос на балансировщик нагрузки, так как балансировщик нагрузки может округлить процесс перехода на активный сервер, даже если один из серверов не работает, и наше приложение должно быть в состоянии чтобы определить, не работает ли одна из коробок. Да, балансировщик нагрузки уже в ограниченной степени проверяет, работает ли сервер, но он не охватывает все сценарии.

Проблема, с которой я столкнулся, заключается в том, что я не могу отправлять трафик непосредственно в каждый ящик (по IP-адресу или имени хоста), так как заголовок хоста (app.company.com) должен быть в запросе, либо сервер назначения или WCF отвергни это. Если я использую app.company.com вместо имени хоста или IP-адреса, я попаду на балансировщик нагрузки, если я изменю файл hosts на машине, он будет работать только для одного блока.

Существует ли способ принудительного разрешения DNS в .Net или Windows для разрешения app.company.com на IP-адрес по моему выбору таким образом, чтобы его можно было точно настроить для каждого запроса и не влиять на DNS для всей системы? В противном случае я, вероятно, буду стараться создать запрос, чтобы я мог встроить правильный заголовок узла в запрос, который фактически не направляется к цели с тем же DNS-именем.

Спасибо

Ответы [ 2 ]

0 голосов
/ 10 октября 2010

Я нашел хорошее решение этой проблемы.В итоге я создал второй сервис в том же веб-приложении, а затем изменил файл hosts на каждом из компьютеров, чтобы он содержал строку, указывающую на локальный хост app.company.com.

127.0.0.1     app.company.com

Затем я настроил этот новый сервис так, чтобы он указывал на «app.company.com».

Это позволило мне напрямую подключиться к серверу по имени хоста или IP-адресу через второй сервис, а второй сервис связался со службой втест по имени хоста.

Это прекрасно работает для того, что мы хотели.

0 голосов
/ 07 октября 2010

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

Поэтому вам нужно переосмыслить, как справиться с этим.

Одна из стратегий состоит в том, чтобы приложения с балансировкой нагрузки сообщали о том, что они работоспособны, а не регистрировали отдельное приложение.

В качестве альтернативы, каждое приложение может периодически обновлять файл с меткой времени на сервере, чтобы приложение могло обращаться к ящикам отдельно по IP-адресу и проверять наличие файла с меткой времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...