Monday, December 11th, 2017

Балансирование нагрузки для клиентов Web-Proxy с помощью ISA Server 2004 Standard Edition (Часть 2)

Published on Февраль 13, 2009 by   ·   Комментариев нет

В первой части этой статьи было показано, какие есть возможности по балансированию нагрузки (load-balance) двух серверов ISA Server Standard edition (стандартная версия) Web-proxies в результате лишь небольших тайных изменений в автоматическом конфигурационном файле, который он создает. Для многих из нас этот трюк позволил сэкономить на дополнительных затратах, которые возникают при покупке корпоративной версии (Enterprise edition). В этой второй части 2 этой статьи мы продолжим дальше узнавать о расширении возможностей по балансированию нагрузки.

Если вы хотите ознакомиться с остальными частями этой статьи, пожалуйста, прочитайте:

Введение

В первой части мы взяли выходной файл “wpad.dat”одного из двух серверов стандартной версии ISA Server Standard Edition и немного изменили несколько строк в этом файле. Все начиналось так:

cNodes=1;
function MakeProxies(){
this[0]=new Node(«10.245.10.254»,0,1.000000);
}
Was changed to become:
cNodes=2;
function MakeProxies(){
this[0]=new Node(«10.245.10.253»,2032180928,1.000000);
this[1]=new Node(«10.245.10.254»,2843172549,1.000000);
}

Сделав результирующий файл доступным через Web сайт для браузеров, таких как Internet Explorer, мы с помощью этих изменений получили два сервера, работающих с Server Standard Edition, нагрузка на которых сбалансирована, и которые стали более устойчивыми к различным сбоям служб Web proxy services.

Однако, это простое действие не нужно делать с нашим новым файлом для ISA Server: наш файл подвергнется более тонкой ручной работе, для того чтобы он работал абсолютно верно.

В первой части также было показано, как вручную настраивать Internet Explorer для подключения нового конфигурационного файла: это было не очень практичным решением для большинства из нас, поэтому давайте узнаем об изменениях в поддержке Internet Explorer Maintenance политик групп, которые сделают эту работу для нас.

Политики группы Internet Explorer Maintenance

Перед тем, как мы погрузимся в политики группы, необходимо упомянуть встроенный механизм ISA Server для управления IE на брандмауэре клиента. Причина, по которой я не рассказал об этом механизме в первой части этой статьи, заключается в том, что, во-первых, многие сервера ISA Server устанавливаются лишь как Web (печально), а клиент брандмауэра не устанавливается, во-вторых, в любом случае у меня есть ссылка на политику групп, в в-третьих, мы все видели метод использования клиента брандмауэра в других различных статьях! Итак, вернемся к политике группы.

Дополнение Internet Explorer Maintenance add-on к политике группы — это моя нелюбимая возможность. Она не работает, как остальные настройки в политике группы, а некоторые из настроек оказываются продублированы в разделе “Administrative Templates (административные шаблоны)”. Internet Explorer Maintenance add-on делает большинство из того, что делает IEAK, но делает это для политики группы, в действительности это клиентская часть IEAK.

Однако, она делает свою работу, поэтому давайте рассмотри требования.

Настройка автоматической конфигурации браузера

Сперва выберите политику группы, которую вы хотите редактировать. Вы же не хотите использовать эти настройки в качестве политики домена по умолчанию (Default Domain Policy), поэтому необходимо выделить конкретную политику.

Откройте эту политику и перейдите к разделу Internet Explorer Maintenance, который располагается в узле User Configuration, Windows Settings. Щелкните правой кнопкой мыши, для того чтобы появилось контекстное меню.

Файл конфигурации настроек безопасности Internet explorer

Рисунок 1

Нам нужен режим политики Policy Mode, который в действительности не означает режим ссылки Preference Mode, поэтому не нажимайте на нее, и убедитесь, что для нее не установлена галочка. После того, как вы внесли изменения в IE Maintenance, вы должны обратить внимание, что вы не можете очистить эти изменения из политики группы; для этого вы должны выбрать настройку Reset Browser Settings (сбросить настройки браузера) (сейчас она серая, потому что никаких настроек еще не было сделано). Раскройте режим IE Maintenance с помощью двойного щелчка мыши.

Wpad dat балансировка

Рисунок 2

В разделе Connection (соединения) вы найдете Automatic Browser Configuration (автоматическая конфигурация браузера); щелкните на ней правой кнопкой мыши и выберите Properties (свойства) из появившегося меню.

С помощью этой веб прокси

Рисунок 3

Поставьте галочку в поле Enable Automatic Configuration (подключить автоматическую конфигурацию) и введите ваш Auto-proxy URL. Обратите внимание, что запрашиваются файлы с расширением JS, JVS или PAC, но в нашем примере будет использоваться файл с расширением DAT.

Нажмите на кнопку OK и все готово – по крайней мере именно так работает это дополнение IE Maintenance. Если вы запустите Internet Explorer и перейдете к настройкам LAN (Tools, Internet Options, закладка Connections), вы должны увидеть, что политика группы добавила новые настройки (если вы дождались, пока политики применятся или если запустили GPUPDATE.EXE), но вы по-прежнему не можете отменить эти настройки! Это не то, что вы хотите для своих пользователей.

Все еще гораздо хуже: вы отменили настройки теперь ждите, пока политики группы применятся вновь (или запустите GPUPDATE) и напрасно вы будете ждать, пока настройки вернуться обратно. IE Maintenance не применит эти настройки вновь до тех пор, пока что-то в политике не поменяется. Такое поведение очень странное; компания Microsoft, вероятно, имела в виду что-то другое, когда описывала “Policy Mode (режим политики)”.

Усиление политики

Чтобы все работал верно, давайте дальше рассмотрим настройки “User Configuration (конфигурация пользователя)” в политике группы в узел Windows Components (компоненты) Administrative Templates (административных шаблонов).

Isa standard 2004количество клиентов

Рисунок 4

В папке Internet Explorer вы можете увидеть две настройки: Disable changing proxy settings (отключить изменения настроек прокси) Disable changing Automatic Configuration settings (отключить изменение автоматической конфигурации). Включите обе эти настройки (по крайней мере последнюю).

Вы можете также переместиться ниже к Internet Control Panel (панель управления интернет) и включить настройку Disable the Connections page (отключить страницу соединений), чтобы эта закладка исчезла вовсе. Такая настройка также доступна в “Computer Configuration (конфигурация компьютера)”.

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

Реальное усиление политики!

Для того чтобы все работала как надо, необходимо изменить настройки “Computer Configuration (конфигурация компьютера)” в политике группы. Перейдите от Administrative Templates, System и Group Policy к элементу Internet Explorer Maintenance policy processing.

Не работает автоматическая конфигурация прокси сервера

Рисунок 5

Дважды щелкните на нем правой кнопкой мыши.

Web proxy

Рисунок 6

Как минимум вы должны выбрать Process even if the Group Policy objects have not changed (продолжать, даже если объекты политики группы не были изменены), и, вероятно, также Do not apply during periodic background processing (не применять в процессе периодической фоновой работы).

Есть ряд причин, по которым эти настройки не включены по умолчанию. Если вы используете IE Maintenance для каких-то специфических нужд и хотите, чтобы изменения появились лишь один раз, а не после каждого входа, или еще хуже, каждые 90 минут. Помня все это, будьте внимательны при использовании IE Maintenance, а не слепо следуйте каждой команде.

Настройка автоматического определения настроек

Вы обратили внимание на настройку Automatically detect settings (автоматически определять настройки) радом с настройкой Use automatic configuration script (использовать сценарий автоматической конфигурации). Вы можете воспользоваться такой альтернативой, если хотите, но есть подводные камни, из-за которых я избегаю их.

Если вы четко следовали инструкциям в первой части статьи, то вы уже создали сайт Web site с названием “wpad.company1.tld”, который использовался в примере. Очень важно, что сайт называется “WPAD”, что он отвечает по порту 80 и что файл называется “wpad.dat” (так рекомендовалось в первой части). Если все это у вас есть, выберите Automatically detect settings (автоматически определять настройки) и все будет работать; ваш браузер будет искать http://wpad/wpad.dat и должен его найти!

Другой способ поддержки настройки Automatically detect settings заключается в том, что у вас должна присутствовать запись в DHCP. Эта запись “Option 252” имеет формат http://wpad.company1.tld:80/wpad.dat. Преимущество такого способа заключается в том, что вы можете вызвать файл (и путь к нему) как хотите, и использовать любой TCP-порт для Web-сайта, который вам нравиться. Но есть также и недостатки:

Браузер делает DHCP запрос за этим значением, и до появления операционных систем Windows XP SP2 и 2003 SP1, это могли сделать только администраторы: некоторые из ваших клиентов могут не работать таким способом!

Для более глубокого обсуждения настройки Automatically detect settings (автоматически определять настройки) вы можете посмотреть статью Стефаана Поселе (Stefaan Pouseele) здесь (с ссылками на обновления).

А пока я рекомендую использовать настройку Use automatic configuration script (использовать сценарий автоматической конфигурации).

Исключения

Сервер ISA Server проводит великолепную работу по доставке Web содержимого из внешних сетей (external networks), но еще одна вещь, которую многие из нас хотят, заключается в том, чтобы ваш браузер передавал запросы за страницами, которые размещаются на ваших внутренних серверах, на прокси. За этим содержимым браузер хочет напрямую обращаться к Web сайту.

Сервер ISA Server позволяет настроить эти “исключения”, а также затем поместить их в создаваемый им файл автоматической конфигурации (automatic configuration PAC). Это тот самый файл, с которым мы будем проводить тайные действия. Если вы загрузите файл “wpad.dat” для работы с этой статьей, вы можете увидеть некоторые из этих исключений. Пока еще наш файл PAC не содержит таких исключений:

//Copyright (c) 1997-2004 Microsoft Corporation
BackupRoute=»DIRECT»;
UseDirectForLocal=true;
function MakeIPs(){
}
DirectIPs=new MakeIPs();
cDirectIPs=0;
function MakeNames(){
}
DirectNames=new MakeNames();
cDirectNames=0;

Теперь наш файл PAC получен от сервера ISA Server, и его необходимо вручную отредактировать, но исключения можно задать отредактировав лишь эти несколько строк.

BackupRoute

В действительности это не исключение, а лишь то, что необходимо сделать, если что-то сломается. Если ваш брандмауэр (который также может быть вашим сервером ISA Server) по-прежнему разрешает прямой доступ в интернет за Web содержимым, или может быть быстро перенастроен для этого в случает острой необходимости, то “DIRECT” будет лучшим решением.

Вы можете альтернативно настроить другой Web прокси, который возьмет на себя эту работу в экстренной ситуации. Формат строки, которая позволит это сделать, выглядит следующим образом:

BackupRoute=”PROXY W3PROXY.COMPANY1.LOCAL:8080“;

Вы, конечно же, должны заменить представленное здесь название своим собственным (или IP адресом ), а также не забыть изменить номер порта. Т.к. эта статья рассказывает о двух серверах для обеспечения отказоустойчивости, то я надеюсь, что это резервный маршрут никогда не понадобится!

UseDirectForLocal

Я почти уверен, что вы хотите, чтобы для этого параметра стояло значение “true” и это может быть всего одно исключение, которое вам нужно. Оно означает, что любой путь URL, в котором полное квалификационной название (fully-qualified domain name) или название компьютера не имеет точек, шел напрямую а не через ISA Server. Поэтому http://www.isaserver.org/pages/newsletters.asp пойдет через сервер ISA server, а http://myserver/intranet/index.html пойдет напрямую.

DirectIPs

Если для вашей внутренней сети вы используете IP адреса, или у вас есть ссылки на страничках во внутренней сети, которые используют IP, то вы можете включить следующее изменение. Пример может быть следующим:

function MakeIPs(){
this[0]=»172.16.0.0″;
this[1]=»255.240.0.0″;
}
DirectIPs=new MakeIPs();
cDirectIPs=2;

Здесь очень важно обратить внимание, что записи в парах подсеть и маска (subnet, mask) и что значение “cDirectIPs” отражает обе эти записи. Вы можете добавлять другие пары, просто увеличивайте значение строк “this[n]” и значение “cDirectIPs”.

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

DirectNames

Это работает аналогично “DirectIPs”, но есть список всех тех названий компьютеров, к которым вы не хотите обращаться через сервер ISA Server.

function MakeNames(){
this[0]=»intranet.company1.com”;
this[1]=”*.local”;
this[2]=”*.develservers.tld”;
}
DirectNames=new MakeNames();
cDirectNames=3;

Обратите внимание, что вы можете использовать символы шаблона (*), чтобы включать целый домен, но используйте звездочку в начале имени; “www.company1.*” не сработает!

Исключения CARP

Т.к. файл PAC используется браузером для каждого URL запроса, это значит, что браузер будет использовать больше одного прокси для различных страниц на одном и том же Web сайте. Некоторые Web сайты не очень правильно работают, когда к ним приходят запросы о одного и того же клиента, но с двумя различными IP адресами.

Это не является проблемой, если ваши сервера ISA Servers располагаются позади устройства “NAT” (брандмауэр), но это может стать проблемой, если ваши прокси ISA Server Web-proxies также являются брандмауэрами по периметру и имеют публичные IP интерфейсы.

Чтобы избежать проблем с такими Web сайтами, браузер должен уметь посылать все запросы на определенный компьютер через один и тот же прокси. В корпоративной версии ISA Server Enterprise Edition это описывается, как исключения CARP, и мы может достигнут такого же эффекта от нашего файла PAC, путем незначительного изменения.

Во-первых, необходимо добавить несколько строк вверху файла рядом со строкой, которая выдает значение “cDirectNames” :

cDirectNames=0;
function MakeCARPExceptions(){
}
CARPExceptions=new MakeCARPExceptions();
cCARPExceptions=0;

The next step replaces the FindProxyForURL function with these lines (changes are in red):

function FindProxyForURL(url, host){
var urlhash, urllower, ibest, bestscore, list, i, j, port=HttpPort, hostonly=false;
urllower = url.toLowerCase();
if((urllower.substring(0,5)==»rtsp:») ||
(urllower.substring(0,6)==»rtspt:») ||
(urllower.substring(0,6)==»rtspu:») ||
(urllower.substring(0,4)==»mms:») ||
(urllower.substring(0,5)==»mmst:») ||
(urllower.substring(0,5)==»mmsu:»))
return «DIRECT»;
if (UseDirectForLocal && isPlainHostName(host))
return «DIRECT»;
if (cDirectNames > 0)
for (i = 0; i < cDirectNames; i++)
if (shExpMatch(host, DirectNames[i]))
return «DIRECT»;
if (cDirectIPs > 0)
for (i = 0; i < cDirectIPs; i += 2)
if (isInNet(host, DirectIPs[i], DirectIPs[i+1]))
return «DIRECT»;
if (cCARPExceptions > 0)
for (i = 0; i < cCARPExceptions; i++)
if (shExpMatch(host, CARPExceptions[i])) {
hostonly = true;
break;
}
urlhash = HashString(url, hostonly);
for (i = 0; i < cNodes; i++)
Proxies[i].score = Proxies[i].load * Scramble(MakeInt(urlhash ^ Proxies[i].hash));
list = «»;
for (j = 0; j < cNodes; j++) {
for (bestscore = -1, i = 0; i < cNodes; i++) {
if (Proxies[i].score > bestscore) {
bestscore = Proxies[i].score;
ibest = i;
}
}
Proxies[ibest].score = -1;
list = list + «PROXY » + Proxies[ibest].name + «:» + port + «; «;
}
list = list + BackupRoute;
return list;
}

Такой же код необходимо добавить рядом с “MakeNames”, но листинг будет выглядеть так:

function MakeCARPExceptions(){
this[0]=»crabby.website.tld»;
this[1]=»gripping.tld»;
}
CARPExceptions=new MakeCARPExceptions();
cCARPExceptions=2;

Эти изменения очень похожи на те, что присутствуют в файл PAC, полученном из корпоративной версии ISA Server Enterprise Edition; он практически точно такой же, но из него убраны дополнительные строки, которые вставляет корпоративная версия (Enterprise Edition version)!

Изменения (экспериментально)

Есть еще одна настройка для включения CARP исключений: просто замените функцию HashString следующей строкой:

function HashString(url){
var h = 0;
var slashes = 0;
for (var i = 0; (i < url.length) && (slashes < 3); i++) {
var c = url.charAt(i);
if (c == ‘/’)
slashes++;
h += (((h & 0x1fff) << 19) | ((h >> 13) & 0x7ffff)) + CharToAscii(c);
h = MakeInt(h);
}
return h;
}

Измените также строчку, которая вызывает эту функцию FindProxyForURL на:

urlhash = HashString(urllower);

В этом случает все запросы за страницами, которые располагаются на одном компьютере, будут проходить через один прокси (т.е. все запросы будут являться CARP исключениями). Я не рекомендую использовать такой подход, т.к. у меня нет идей о том, как он повлияет на балансирование нагрузки (load-balancing), но вы можете поэкспериментировать, а также избавить ваш браузер от некоторой избыточной работы.

Что такое клиентский CARP?

Небольшое отступление: мне немного неуютно, когда я слышу термин клиентский CARP. Буква “P” в аббревиатуре CARP означает “protocol (протокол)”, поэтому почему вдруг файл с автоматической конфигурацией прокси (Proxy Automatic Configuration file) становиться протоколом? Но это принятая терминология и поэтому мне ничего не остается, как согласиться с ней!

Заключение

Сервер ISA Server 2004 Enterprise Edition (корпоративная версия) – это тот самый продукт, который следует выбрать, когда речь идет о балансировании нагрузки (load-balancing) Web прокси с помощью ISA Server. Но эти статьи показывают, что если вас устраивают некоторые небольшие несостыковки файла PAC от сервера ISA Server, то достаточно просто и воспользоваться эффективным балансом нагрузки и отказоустойчивостью, которую предоставляют ISA Server 2004 Standard Edition (стандартная версия).

www.isaserver.org






























































































Смотрите также:

Tags: , , , , ,

Readers Comments (Комментариев нет)




Да человек я, человек! =)

Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]