Новое в Windows Server 2008 R2: BranchCache
Как и обещал, начинаю серию технических обзоров новинок в R2 (параллельно серии по “упрощенному” администрированию IIS 7.0)
О некоторых новых возможностях, в том числе и о BranchCache, в Windows Server 2008 R2 (бывшем Windows 7 Server) я уже вкратце писал в своем обзоре Windows 7. Поэтому на вопрос «что это такое и зачем оно надо? » повтотяться здесь не буду – читайте предыдущие посты :) Просто скажу, что лично я считаю эту «фичу» наиболее востребованной в дальнейшем – универсальный распределенный кеш для оптимизации использования как сетевых каналов, так и физических серверов – что может быть полезнее для распределенных сетей?
А вот «как оно работает? » и «как это включить? » мы сейчас и рассмотрим.
Итак, функциональность распределенного кеширования обеспечивается изменениями, внесенными в клиентские и серверные части служб SMB и HTTP, в которые добавлена поддержка режима распределенного кеширования, и, собственно, сама служба распределенного кеширования PeerDist.
Процесс работы клиента с включенным BranchCache выглядит очень элегантно и прозрачно для конечных приложений:
1. Приложение на удаленном клиенте, допустим, Internet Explorer, отправляет запрос с неким URL.
2. Этот запрос на клиенте обрабатывается клиентской частью HTTP в Windows 7 – службой WebIO
3. WebIO обращается к соответствующему серверу HTTP и запрашивает нужный URL. Но не все так просто. В этом запросе присутствуют также метаданные запрашивающие сервер о поддержке им режима кеширования.
4. За кеширование на стороне сервера отвечает драйвер http.sys. Если сервер поддерживает кеширование, то запрошенные клиентом данные, возвращенные службой веб – IIS, перед тем, как быть отправленными клиенту, проверяются на предмет наличия хеша в серверной службе PeerDist.
a. Если хеш для запрошенных данных уже присутствует, это значит, что клиенты уже получили файл в локальный кеш и файл уже находится на одном из ПК – в таком случае клиенту передается только хеш данных с необходимыми ключами для обращения к уже хранимому файлу.
b. Если хеш для запрошенных данных отсутствует в службе PeerDist, то данные разбиваются на фрагменты и по каждому из фраментов создается свой хеш, из которых далее строится общий хеш данных. Пользователю же передается оригинал данных как они есть плюс созданный хеш в защищенном представлении (с привязкой к серверному ключу).
5. Получив от сервера ответ, на клиентской части WebIO
a. передает PeerDist данные и их «оригинальный» хеш, полученный от сервера, для сохранения в локальном кеше на диске (или на выделенном локальном сервере), а пользовательскому приложению – запрошенные данные
b. передает PeerDist полученный хеш данных, который, использую широковещательный механизм поиска таких же служб PeerDist в локальной сети, обращается к ним на предмет наличия соответствующего хеша.
c. Если у какого-то из клиентов в локальной сети в кеше службы PeerDist уже имеются данные с запрашиваемым хешем, то он отвечает на запрос и начинается передача данных.
d. Поскольку хеш защищен ключами сервера, PeerDist аутентифицируют друг друга и используя общий ключ, устанавливают защищенный канал передачи данных.
e. Передача хешей и данных по защищенному каналу выполняется посредством протокола HTTPS (кстати, службы отправли хешей от сервера клиенту также работают через HTTPS, даже если само соединение SMB).
f. Клиентское приложение получает требуемые данные.
Служба PeerDist поддерживает на клиентской стороне 2 режима работы – кооперативный, когда каждый из клиентов хранит на своем локальном диске кеш файлов и их хеши, и серверный, когда в локальной сети присутствует отдельный сервер кеширования (что полезно для крупных удаленных офисов, где интенсивность нагрузки на службу PeerDist может быть велика). В случае с отдельным сервером – все полученные данные, требующие кеширования, клиентская служба PeerDist отправляет на такой сервер, а при поиске хеша используется не широковещательный запрос, а прямое обращение к серверу.
Процесс настройки BranchCache очень прост – этот раздел будет интересен тем, кто уже скачал Windows 7/Windows Server 2008 R2 (или планирует сделать это в ближайшее время) и начал эксперементировать с ними. Хотя, честно говоря, я бы дождался выхода беты, где многие шероховатости настройки BranchCache планировалось убрать. Здесь я не буду подробно зарываться в перечень конкретных опций, но приведу ключевые шаги.
На клиенте Windows 7 необходимо только активировать службу кеширования и указать режим ее работы – кооперативный или серверный. Выполняется это в командной строке посредством команды Netsh:
Netsh peerdist set service mode=cooperative
или
Netsh peerdist set service mode=hostedserver
Включается как сама служба, а также конфигурируются соответствующие правила на клиентском файрволе для ее работы. При включении режима выделенного сервера также требуется сконфигурировать клиентские службы peerdist, указав им имя выделенного сервера кеширования.
На сервере Windows Server 2008 R2, который будет выступать в роли файлового, веб-сервера или выделенного сервера для кеширования, требуется установить в Server Manager службу Windows Branch Cache, находящуюся в разделе Features.
А также, если кешироваться будет SMB трафик, в свойствах тех сетевых папок с общим доступом, которые требуется кешировать – разрешить использование BranchCache (через консоль Share and Storage Manager) и автоматическое создание кеша файлов в локальных политиках.
И, конечно же, для массового управления параметрами BranchCache используются групповые политики, в которых присутствуют соответствующие параметры.
Но, в отличии от включения BranchCache командой Netsh, когда все параметры файрвола устанавливаются автоматически, при создании групповых политик для BranchCache необходимо вручную настроить все параметры работы для клиента и сервера в Windows Firewall with Advanced Security (входящие и исходящие правила для клиента и сервера, их несколько, на снимке экрана приведено только первое из списка, остальные идут ниже по типу).
Управление параметрами кеша, просмотр состояния кеша и т.п. выполняется также через команду Netsh:
Netsh
peerdist
Переход в контекст управления сервисами кеширования
Команды show status, show localcache и т.п. позволяют просматривать статус работы кеша, команды типа set cachesize size=10 percent=true, flush, reset и т.д. – управлять кешем. Полный список команд и настроек вы можете получить, выполнив, соответственно, команды help, show, set в контексте peerdist.
Как говориться – тестируйте и пользуйтесь на здоровье!
Comments
Anonymous
January 01, 2003
После успешной установки и недельной эксплуатации клиента Windows 7 пришла очередь и Windows Server 2008Anonymous
January 01, 2003
Хочу извиниться перед всеми своими читателями за то, что весь март месяц в блоге не появилось ни строчкиAnonymous
January 01, 2003
Первые дни после праздников получились очень интересными – сразу стала доступна ОФИЦИАЛЬНАЯ Beta-версияAnonymous
January 01, 2003
Продолжая тему новых возможностей Windows Server 2008 R2 по работе с файлами, освещенных в статье о классификацииAnonymous
January 01, 2003
Думаю, сейчас уже ни для кого не секрет , что Windows 7 Release Candidate будет официально доступен дляAnonymous
November 28, 2008
Читал с легким чувством дежавю :) Принцип работы похож на работу торрент-сетей. А вообще, в случае массового распространения подобной технологии это может компенсировать недостатки пропускной способности сети о которых последнее время начали много писать - что еще пару лет и существующих каналов перестанет хватать. А тут получается на часто посещаемые ресурсы фактически локальный трафик - где каналы как раз достаточные. Хотя я мог все не правильно понять...Anonymous
July 23, 2009
странно ...после установки службы в свойствах появился пункт Enable Branche Cache, но она не активна. Не подскажите почему?Anonymous
December 28, 2009
Новое в Windows Server 2008 R2: BranchCache