Назад | Перейти на главную страницу

C #, подключение к определенному серверу, который находится за балансировщиком

Просто нигде не могу найти подсказку об этом.

История (Схема системы) В компании, в которой я работаю, у нас есть 5 серверов IIS ... На каждом сервере есть много веб-сайтов (на каждом сервере одно и то же место) Все серверы находятся за балансировщиком, поэтому, если вы вводите имя хоста, вы не знаете, на каком сервере вы будете направлены на.

Все серверы и для каждого сервера все его виртуальные веб-сайты находятся в файле HOST. Если я выберу сервер и сайт в файле хоста, я буду перенаправлен на этот сервер и сайт, и все будет работать.

Теперь мой вопрос Я пытаюсь подключиться к каждому из серверов и для каждого из них проверить страницу на нем ...

Что происходит, так это то, что меня все время перенаправляют на один и тот же сервер, а не на разные серверы ...

Я вызываю этот код для каждого сервера, где Url - это имя страницы и "((WebPageTest) test) .ServerAddress" изменяется для каждого сервера ...

        string htmlText = string.Empty;
        try
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.MyDomain.com" + Url);
            request.Host = ((WebPageTest)test).ServerAddress;
            request.UserAgent = "Tests UserAgen";
            WebResponse response = request.GetResponse();
            Stream stream = response.GetResponseStream();
            StreamReader reader = new StreamReader(stream);
            htmlText = reader.ReadToEnd();
            htmlText = "OK";

        }
        catch (Exception exp) {
            htmlText = exp.Message;
        }
        return htmlText;

Кто-нибудь знает, может быть, как подключиться к правильному серверу и правильному веб-сайту на каждом сервере, чтобы я мог проверить страницу на каждом сайте?

РЕДАКТИРОВАТЬ: я не могу изменить настройки в балансировщике или брандмауэре или что-то в этом роде .... Мне нужно имитировать то, что происходит при использовании файла хоста. Когда сервер не добавлен в файл хоста, балансировщик решает, на какой сервер отправить запрос, но когда я использую файл хоста, я перенаправляюсь на конкретный сервер .... Это то, что мне нужно сделать в коде ... Есть ли что-то, что можно добавить в заголовок для этого, и я перепробовал все, что мог придумать?

Большое спасибо,

Эрез

Поскольку вы хотите протестировать определенные серверы, вам следует полностью обойти балансировщик нагрузки или установить назначенные каналы балансировки нагрузки. Например, если ваш DNS www.mySite.com указывает на ваш ip / порт (20.20.20.20 порт 80), и это перенаправляется на ваш балансировщик нагрузки, у вас должно быть другое перенаправление, скажем, для порта 800 для internal server 1, 801 для internal server 2, ..., который будет перенаправлен одним из следующих способов:

  1. Перенаправить на сервер напрямую
  2. Перенаправить на поддельный балансировщик нагрузки, который балансирует только с одним сервером.
  3. Перенаправить на тот же балансировщик нагрузки, но с использованием другой конфигурации, которая будет балансировать только с одним сервером.

В балансировщике нагрузки есть настройка для этого. Если у вас 3 сервера в пуле, то обычно он переходит на один сервер, если флаг не установлен. Если вы используете Radware, я могу сказать вам настройку флага.

У меня к вам несколько вопросов? 1. Используете ли вы Radware? 2. Есть ли межсетевой экран между балансировщиком нагрузки. межсетевой экран также может быть вашим шлюзом по умолчанию. 3. Поскольку вы изменяете файл хоста, это означает, что ваша система / шлюз по умолчанию не может разрешить IP. Что-то не так с вашей политикой брандмауэра? предоставление IP-адреса для разрешения URL-адреса не рекомендуется. 4. Как политики определяются в балансировщике нагрузки. 5. Когда отображается балансировщик нагрузки, клиенту не нужно беспокоиться о том, на какой сервер IIS он перенаправляется. 6. При определении политики убедитесь, что она определена через URL-адрес, а не через общедоступный IP-адрес. 7. Также проверьте шлюз по умолчанию для балансировщика нагрузки.

Мы также используем балансировщик нагрузки, мы настроили его таким образом, чтобы он работал, когда система, обращающаяся к веб-серверу, находится в той же сети или через брандмауэр / прокси.