Опубликован: 15.10.2008 | Доступ: свободный | Студентов: 3143 / 506 | Оценка: 4.48 / 4.23 | Длительность: 45:21:00
Лекция 15:

Кластеризация

Аннотация: В этой лекции рассматриваются современные кластерные решения Microsoft и описывается их использование для масштабирования и расширения сети Windows Server 2003

Начиная с Wolfpack Project компании Microsoft, кластеризация прошла большой путь, став важной частью любой реализации предприятия под управлением Windows. В этой лекции рассматриваются современные кластерные решения Microsoft и описывается их использование для масштабирования и расширения вашей сети Windows Server 2003.

Кластер проще всего определить как группу отдельных серверов, совместно работающих как одна система. Программы и клиенты "видят" кластер как один объект, и кластер управляется как единое целое. Кластеризация используется, чтобы обеспечить высокий уровень готовности для критически важных приложений, управляемости реализаций, работающих круглые сутки, и масштабируемости для крупных предприятий. В Microsoft Windows Server 2003 имеются две кластерные технологии.

  • Служба Network Load Balancing (NLB).В основном, предназначена для балансирования входящего трафика TCP/IP. NLB обычно используется для веб-серверов.
  • Кластеры серверов.Реализуются для обеспечения переходов по отказу (failover) среди кластеризованных компьютеров. Служба Cluster обычно используется для приложений, работающих с базами данных.

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

Примечание. Microsoft также предлагает третью кластерную технологию - кластеры Component Load Balancing (CLB). Эта технология входит в состав Microsoft Application Center 2000 и не включается ни в одну из версий Windows Server 2003. CLB-кластеры позволяют распространять приложения COM+ среди нескольких серверов, что гарантирует масштабируемость и высокую готовность приложений.

Кластеры Network Load Balancing

Network Load Balancing (NLB) - это программная разработка, используемая в кластеризации Microsoft Windows для масштабирования работы IP-программ путем распределения клиентских запросов среди нескольких серверов в кластере. NLB используется чаще всего для повышения производительности и уровня готовности веб-приложений, но может также использоваться для повышения производительности множества IP-приложений внутри вашего предприятия.

Примечание. Служба Network Load Balancing в ее текущей форме появилась как переработанная замена службы Windows Load Balancing Service (WLBS), используемой в Windows NT 4. Однако вы увидите, что до сих пор имеются компоненты исходной WLBS, например, запускаемая из командной строки программа управления, wlbs.exe, все еще используется для обратной совместимости.

NLB входит в следующие версии Windows Server 2003:

  • Standard Edition;
  • Enterprise Edition;
  • Datacenter Edition;
  • Web Edition.

Преимущества Network Load Balancing

С помощью Network Load Balancing можно создавать кластеры, содержащие до 32 хостов, среди которых могут распределяться запросы клиентов. Служба NLB расширена в Windows Server 2003, позволяя вам создавать несколько виртуальных NLB-кластеров на одном сервере путем задания NLB для нескольких сетевых адаптеров и путем задания нескольких IP-адресов кластера со сбалансированной нагрузкой для одного сетевого адаптера. Два главных достоинства NLB для приложений - это готовность и масштабируемость.

Готовность

Одно из главных преимуществ службы NLB - это высокая готовность, которая обеспечивается этой службой для приложений предприятия. Кластерное ПО может автоматически изменять распределение клиентских запросов в случае отказа сервера. Для этого кластер и отдельные серверы следят за состоянием друг друга. Между серверами, а также между каждым сервером и кластером происходит обмен групповыми или широковещательными сообщениями.

Если состояние сервера (или нескольких серверов) внутри кластера изменяется, то активные серверы запускают процесс, который называется "слиянием" (convergence),чтобы определить, какие серверы остались активными и как перераспределить нагрузку между ними. По умолчанию NLB определяет потерю члена кластера в течение пяти секунд и выполняет процесс слияния в течение следующих пяти секунд. Пока происходит слияние, каждый узел кластера продолжает обрабатывать пакеты приложений согласно правилам, существовавшим до начала процесса слияния.

Если слияние инициируется в результате потери одного из серверов, то запросы приложения, которые должны были обрабатываться отказавшим сервером, возвращаются невыполненными, пока не будет выполнено переназначение запросов (по окончании слияния). Это состояние ошибки должно учитываться в переходном состоянии пользователем или приложением, но не самой службой NLB.

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

Масштабируемость

NLB обеспечивает два уровня масштабируемости.

  • Масштабируемость действий.Повышение числа пользователей и увеличение трафика происходит беспрепятственно за счет постоянного распределения запросов, позволяющего предоставлять равный доступ всем клиентам к приложению или службе.
  • Масштабируемость системы.В кластер можно включать дополнительные компоненты (серверы или процессоры).
Управляемость

Администрирование Network Load Balancing происходит эффективно, поскольку кластер управляется как единое целое из одной точки управления (которая может быть удаленной). Администраторы управляют кластером, используя команды оболочки и скрипты для запуска, прекращения работы и управления кластером. Кроме того, возможность перевода отдельных серверов в автономный режим без снижения производительности кластера упрощает обслуживание и модернизацию операционных систем.

Архитектура NLB

Network Load Balancing запускается как драйвер сетевого обмена Windows, и операции этого драйвера прозрачны для стека TCP/IP. Все компьютеры в кластере можно указывать с помощью IP-адреса данного кластера. Однако каждый компьютер поддерживает также свой собственный уникальный выделенный IP-адрес. Компания Microsoft реализовала NLB как драйвер сетевого обмена, который действует между драйвером сетевого адаптера (сетевой карты) и стеком IP. Все члены NLB-кластера должны находиться в одной подсети IP, чтобы запросы клиентов, направляемые по IP-адресу кластера, могли обрабатываться всеми членами кластера.

Алгоритм, определенный во время процесса слияния кластера, позволяет каждому узлу кластера решать, нужно или не нужно обрабатывать очередной клиентский запрос. Обрабатывающий узел отправляет пакет в стек протоколов IP, а все остальные узлы отбрасывают этот пакет. Для каждого хоста можно задать его процент нагрузки или распределять нагрузку равномерно среди всех хостов.

NLB перехватывает только пакеты TCP и UDP. Пакеты других протоколов IP передаются в стек протоколов и обрабатываются всеми узлами NLB-кластера.

Оборудование и протоколы

Служба NLB разработана таким образом, чтобы обеспечивать кластерную поддержку для серверных программ на основе TCP/IP. Для этого, конечно, требуется, чтобы TCP/IP был протоколом по умолчанию для системы. Версия NLB в Windows Server 2003 действует в локальных сетях на основе FDDI или Ethernet внутри кластера.

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

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

NLB управляет распределением по соединениям для TCP и по дейтаграммам для UDP, применяя фильтрацию входного трафика, прежде чем происходит обращение к программам протокола TCP/IP. В TCP/IP обрабатываются только протоколы TCP и UDP, и все управление применяется на уровне портов.

Примечание.Некоторые программы двухточечных соединений TCP/IP, в особенности ping, будут давать дублированные ответы при указании IP-адреса кластера. Чтобы избежать этого, используйте выделенный IP-адрес хоста, которому вы передаете ping.

NLB можно сконфигурировать для обработки трафика кластера более детально путем использования таких средств, как правила для портов или родственность (affinity). Более подробную информацию см. ниже в разделе "Установка и конфигурирование Network Load Balancing".

Виртуальные кластеры

Служба Network Load Balancing в Windows Server 2003 расширена за счет поддержки виртуальных кластеров со сбалансированной нагрузкой. Для создания виртуального кластера нужно активизировать NLB для нескольких сетевых адаптеров на одном сервере или назначить несколько IP-адресов одному сетевому адаптеру, для которого активизирована NLB. Поскольку различные IP-адреса могут соответствовать различным веб-сайтам или приложениям, разумное использование виртуальных кластеров и соответствующих правил для портов позволяет вам управлять тем, как различные веб-приложения распределяются между физическими серверами со сбалансированной нагрузкой.

Виртуальные серверы обладают следующими свойствами.

  • Каждый IP-адрес определяет отдельный виртуальный кластер, и физический сервер может содержать только один экземпляр виртуального кластера. (Физический сервер не может иметь один IP-адрес, назначенный более чем одному сетевому адаптеру.)
  • Каждый виртуальный сервер может быть представлен своей комбинацией физических серверов.
  • Правило для портов может действовать для всех виртуальных кластеров, определенных для одного сетевого адаптера, или может быть назначено для одного виртуального кластера.
Конфигурирование приложений

Имеется несколько способов конфигурирования приложений в NLB-кластере. Кластер можно сконфигурировать таким образом, чтобы копия серверной программы выполнялась на каждом хосте; или приложение может выполняться на одном хосте, когда все запросы отправляются на этот хост вместо равномерного распределения нагрузки по всему кластеру. Принимаемое решение зависит от типа приложения. Например, приложения, которым требуется централизация, такие как Microsoft Exchange Server, принадлежат какому-либо одному хосту. Кроме того, запросы записи в базу данных могут отправляться на выделенный сервер базы данных в системе. Если нагрузка по базе данных сбалансирована в кластере, то каждый узел кластера может иметь свою собственную копию этих данных. Обновления в содержимом таблицы базы данных должны синхронизироваться путем регулярного слияния в режиме offline. Однако в большинстве случаев критически важные базы данных развертываются в среде кластера серверов, позволяющего выполнять переходы по отказам (failover), а не в среде NLB (см. ниже раздел "Кластеры серверов").

NLB в чистом виде наиболее подходит для нецентрализованного хранения данных или для приложений, которые не принимают данных от клиентов, выполняющих доступ к серверу (то есть для доступных только по чтению приложений на основе протокола TCP или UDP). Веб-сайты являются идеальными "кандидатами" для использования с NLB, поскольку это позволяет легко снабжать каждый хост текущей копией страниц (которые обычно являются статическими), обеспечивая простоту и скорость обработки больших объемов трафика. Для веб-клиентов, которым требуется доступ к базе данных, веб-серверы могут направлять запросы на сервер базы данных. Имеются также следующие кандидаты, для которых подходит NLB:

  • HTTP, HTTPS, FTP, TFTP и SMTP поверх TCP/IP
  • HTTP через SSL - порт 443
  • FTP - порт 21, порт 20, порты 1024.65 и порт 535
  • SMTP - порт 25
  • Terminal Services - порт 3389
  • Веб-серверы (такие как Microsoft Internet Information Services) - порт 80
  • Веб-серверы, использующие круговую DNS
  • Серверы виртуальных частных сетей (VPN)
  • Серверы потокового медиа.

Приложение можно развертывать в NLB-кластере, если несколько экземпляров этого приложения можно выполнять одновременно без ошибок или какого-либо ущерба.

Серверы приложений и соединения с изменяемым состоянием

Имеется два вида соединений между клиентами и хостами для серверов приложений, и они обычно описываются термином stateful-соединение (соединение с изменяемым состоянием).

  • Interclient-состояние (состояние с учетом всех клиентов). Обновления синхронизируются с транзакциями, выполняемыми для других клиентов. Примером является обновление базы данных запасов на сайте e-commerce после продажи товаров через соединение с клиентом.
  • Intraclient-состояние (состояние на уровне одного клиента). Состояние, поддерживаемое для конкретного клиента в течение одного сеанса, включающего, например, продажу продуктов (обычно с помощью процесса обработки "торговой тележки") на сайте e-commerce. На самом деле для большинства сайтов e-commerce процесс обработки "торговой тележки" может охватывать несколько отдельных соединений с одним клиентом.

Служба NLB действует лучше всего, если она используется, чтобы обеспечивать масштабируемость для интерфейсных служб, не изменяющих своего состояния (например, для стандартного веб-приложения HTTP), даже если эти службы выполняют доступ к разделяемому прикладному серверу баз данных.

NLB никогда не следует использовать с interclient-соединениями. Приложения, которые используют этот тип stateful-соединения, не разрешают несколько экземпляров соединений, с помощью которых выполняется доступ к разделяемой базе данных и происходит одновременная синхронизация обновлений.

NLB можно использовать для масштабируемости приложений с intraclient-состояниями, даже в рамках сеанса, охватывающего несколько соединений. При включении одной из опций родственности (affinity) для клиентов NLB направляет все TCP-соединения на один и тот же хост кластера, что позволяет поддерживать состояние сеанса в памяти этого хоста. (Для клиент/серверных приложений, которые встраивают состояние в cookie-файлы или отправляют его в прикладную базу данных, не требуется родственность для клиентов.)

Игорь Ермачков
Игорь Ермачков
Латвия, Рига
Александр Демиденко
Александр Демиденко
Россия, Брянск