В последние годы системы Microsoft SQL Server 2000 превратились из систем для настольных компьютеров сначала в системы для рабочих групп, а теперь и в системы для внутренних офисов. Эти системы теперь стали крупнее и их важность для бизнеса повысилась, поэтому повысились и требования к их стабильности, к возможностям дистанционного администрирования и их отказоустойчивости. Чтобы добиться удовлетворения этих требований, фирма Microsoft затратила очень много времени и усилий на поиск ошибок в программах и на улучшение поддержки пользователей. Microsoft усовершенствовала инструментальные средства для администрирования и улучшила возможности дистанционного администрирования, были созданы такие технологии, как "Службы Кластеризации", MSCS (Microsoft Cluster Services). Кластером называется группа компьютеров, которые обеспечивают друг для друга взаимное резервное копирование на случай отказов. В этой лекции вы узнаете, как работает служба MSCS и как их конфигурировать, а также научитесь планировать действия в случае возможных отказов и узнаете, как выполнять восстановление после отказов. Служба MSCS сама по себе не может обеспечить отказоустойчивость вашей системы; чтобы ваша система могла быть восстановлена после отказов, эта технология должна применяться в сочетании с тщательным планированием.
Примечание. MSCS входит в состав Microsoft Windows 2000 Advanced Server, Windows 2000 Datacenter Server и Microsoft Windows NT 4 Enterprise Edition.
Разновидности отказов
Главной обязанностью администратора базы данных является поддержание базы данных в рабочем состоянии в течение требуемых периодов времени, которые обычно указываются в соглашении об уровне обслуживания (service level agreement). В этом соглашении об уровне обслуживания обычно указывается объем периодов работоспособности системы, а также показатели производительности и длительность времени восстановления в случаях отказов в работе. Применение MSCS может увеличить длительность периодов работоспособности системы и сократить длительность времени восстановления. Несмотря на то, что аппаратура сервера, Windows 2000, Windows NT и SQL Server обычно стабильны и надежны, отказы все равно иногда случаются. На самом деле, в сложной компьютерной системе могут случаться разнообразные типы отказов, в том числе следующие:
Отказы дисковых накопителей. Технология дисковых накопителей значительно усовершенствовалась, но дисковые накопители по-прежнему остаются механическими устройствами и, следовательно, подвержены износу. Дисковые накопители являются одной из наиболее типичных причин отказов.
Отказы оборудования. Отказы оборудования могут происходить из-за износа и повреждения его компонент, чаще всего из-за перегрева. Со временем может отказать аппаратура компьютеров даже наивысшего качества.
Отказы компонент программного обеспечения. Некоторые пороки программного обеспечения оборудования могут проявиться только при редком сочетании обстоятельств. Ваша система может работать многие месяцы или годы, пока некоторое сочетание условий не заставит проблему проявиться. Кроме того, при добавлении приложений в стабильно работающее окружение может произойти изменение библиотеки или файла, имеющих критическую важность, что и вызовет проблемы.
Внешние отказы. Система может отказать из-за внешних причин, например, из-за отключения электропитания. Выживет ли система в таких обстоятельствах, зависит от того, применяете ли вы источники бесперебойного питания (ИБП) и резервные источники электропитания.
Ошибки людей. Кластеризация обычно не может защитить систему от отказов, вызванных ошибками людей, например, таких, как ошибочное удаление таблицы разделов файловой системы Windows NT.
Отказы будут случаться неизбежно. Вопрос в том, как следует наилучшим образом подготовиться к некоторым из них; этому и посвящена данная лекция.
Обзор MSCS
MSCS является встроенной службой Windows 2000 Advanced Server, Windows 2000 Datacenter Server и Windows NT Enterprise Edition. MSCS применяется для формирования кластера серверов, который, как уже говорилось, является группой независимых серверов, работающих совместно как единая система. Кластер служит для обеспечения готовности (availability, этот термин может переводиться и как "доступность") клиентов к обслуживанию приложений в ситуации возникновения отказа или при запланированных отключениях. Если один из серверов кластера по какой-либо причине является недоступным, то ресурсы и приложения перемещаются на другой узел кластера.
Когда речь идет о кластеризованных системах, мы обычно применяем термин с высокой готовностью (high availability), а не отказоустойчивый (fault tolerant). Термин отказоустойчивый традиционно применяется по отношению к специализированным системам, обладающим исключительно высоким уровнем резервирования, устойчивостью к внешним воздействиям и способностью к восстановлению. Такие системы обычно применяют весьма специализированное программное обеспечение, обеспечивающее почти мгновенное восстановление при любых отдельных отказах оборудования или программного обеспечения. Отказоустойчивые системы стоят гораздо дороже, чем системы без отказоустойчивости. Кластеризованные системы, обеспечивающие высокую готовность, не столь дорогостоящи, как отказоустойчивые системы. Кластеризованные системы обычно конструируются из оборудования для стандартных серверов и программного обеспечения для работы кластера (это программное обеспечение имеет небольшой объем и входит в состав операционной системы). При увеличении потребности в обеспечении готовности можно достаточно просто включать дополнительные компьютеры в состав кластера. Хотя кластеризованные системы и не гарантируют непрерывной работы, но они обеспечивают весьма значительное повышение готовности для большинства критически важных приложений.
Системы, исполняющие MSCS, обеспечивают высокую готовность и имеют много других достоинств. Некоторые из достоинств применения MSCS перечислены ниже.
Высокая готовность. Системные ресурсы, такие как дисковые накопители и IP-адреса, автоматически передаются от отказавшего сервера к выжившему. Это явление называется переход по отказу (failover). При возникновении ситуации, когда приложение на кластере отказывает, MSCS автоматически запускает его на выжившем сервере или распределяет работу отказавшего сервера по другим оставшимся узлам кластера. Переход по отказу происходит быстро, поэтому для пользователей он представится как лишь мгновенная заминка в обслуживании.
Возврат к исходному узлу кластера после восстановления. После того как отказавший сервер будет починен и введен в строй, MSCS автоматически перераспределяет нагрузку на кластере. Это явление называется возврат к исходному узлу кластера (failback).
(рис 12.1) Windows 2000 Cluster Administrator
Масштабируемость. По мере роста требований к системе, MSCS может быть переконфигурирована для поддержки этого роста. Если суммарная нагрузка станет превышать возможности кластера, можно будет добавить в кластер дополнительные узлы.
Основные понятия
MSCS сокращает длительность простоев, осуществляя переходы по отказу между отдельными компьютерами, применяя при этом взаимосвязь между серверами и дисковую систему с общим доступом (рис. 12.2). В качестве взаимосвязи между серверами может применяться любое высокоскоростное соединение, например, сеть Ethernet или другое сетевое оборудование. Эта взаимосвязь функционирует как канал коммуникации между серверами, благодаря которому возможна двусторонняя передача информации о состоянии кластера и о конфигурации. Благодаря разделяемой дисковой системе возможен равноправный доступ всех серверов кластера к базе данных и к другим файлам с данными. Такая разделяемая дисковая система может быть реализована при помощи SCSI, SCSI поверх Fibre Channel, а также при помощи какого-либо нестандартного оборудования. Разделяемые диски могут быть как одиночными дисками, так и RAID-системой. (Про RAID-системы см.лекцию 5.)
(рис 12.2) Кластер Windows 2000Внимание. Если разделяемая дисковая система не обладает отказоустойчивостью, то в случае отказа дисковой подсистемы MSCS не сможет переключиться на другой сервер, потому что новый сервер все равно должен пользоваться этой же самой отказавшей дисковой подсистемой. Обязательно защищайте свои дисковые накопители при помощи технологии RAID, потому что они являются механическими устройствами и вероятность отказов для них наиболее высока.
Как только система будет сконфигурирована как сервер кластера, она будет преобразована из обычного сервера в так называемый виртуальный сервер. Виртуальный сервер похож на обычный сервер, но для него применяется абстрагирование и отказ от настоящей физической сущности компьютера. Так как аппаратная часть компьютера, образующая виртуальный сервер, может со временем меняться, то пользователь не будет знать, на каком именно сервере выполняется его приложение в данный момент времени. Поэтому пользовательские приложения выполняются не на конкретном комплекте оборудования, а на виртуальном сервере.
Виртуальный сервер существует как элемент сети и ему сопоставлен IP-адрес, применяемый в протоколе TCP/IP. Этот IP-адрес может передаваться от одного компьютера к другому, благодаря чему пользователи продолжают "видеть" виртуальный сервер независимо от того, на каком именно оборудовании он работает. На самом деле, этот IP-адрес переходит от одного компьютера к другому, что обеспечивает одинаковое представление виртуального сервера для наружного наблюдателя. Приложение, направленное по некоторому адресу, все равно получит доступ, соответствующий этому адресу, даже если конкретный сервер, соответствующий этому адресу, и откажет (однако этот адрес теперь будет соответствовать другому серверу). Виртуальный сервер прячет от пользователя операции перехода по отказу, поэтому пользователь может продолжать свою работу, не зная о событиях, происходящих "за кулисами".
Компоненты кластера
Для создания кластера нужны некоторые компоненты: программное обеспечение для управления кластером, взаимосвязь между серверами и разделяемая дисковая система. Чтобы образовать кластер, эти компоненты должны быть сконфигурированы согласованно с приложениями, которые будут предназначены для работы на нем. В данном разделе вы познакомитесь с этими компонентами и узнаете, как они совместно работают, образуя кластер. Затем, в разделе "Конфигурирование SQL Server для работы на кластере" (далее в данной лекции) вы научитесь конфигурировать кластеры SQL Server.
Программное обеспечение MSCS для управления кластером
Программное обеспечение для управления кластером – это совокупность инструментальных средств, применяемых для технического обслуживания, конфигурирования и работы кластера. Оно содержит следующие подкомпоненты, работающие совместно и выполняющие, при необходимости, переход по отказу.
Менеджер узлов (Node Manager). Поддерживает членство в кластере и передает "пульс" (heartbeats) членам кластера (узлам). (Этот пульс представляет собой просто периодически отсылаемые сообщения, означающие "Я жив".) Если пульс от некоторого узла прекращается, то другой узел делает вывод, что этот узел перестал функционировать, и предпринимает шаги по приему на себя его функций. Менеджер узлов является одним из наиболее критичных элементов кластера, потому что он следит за состоянием кластера и решает, какие действия должны быть предприняты.
Менеджер базы данных конфигурации (Configuration Database Manager). Поддерживает базу данных конфигурации кластера, в которой хранятся сведения обо всех компонентах кластера, как об абстрактных логических элементах (например, виртуальных серверах), так и физических элементах (например, разделяемых дисках). Эта база данных подобна системному реестру Windows NT/Windows 2000.
Менеджер ресурсов / Менеджер переходов по отказу (Resource Manager / Failover Manager). Запускает и останавливает службу MSCS. Информацию (например, о потере узла, о добавлении узла и т.д.) Менеджер ресурсов / Менеджер переходов по отказу получает от Монитора ресурсов и Менеджера узлов.
Обработчик событий (Event Processor). Инициализирует кластер и осуществляет маршрутизацию информации о событиях (routes event information) среди компонент кластера. Обработчик событий также инициирует расширение кластера, давая указание Менеджеру узлов о добавлении узла.
Менеджер коммуникаций (Communications Manager). Управляет коммуникацией между узлами кластера. Все узлы кластера, для обеспечения своей правильной работы, должны постоянно осуществлять коммуникацию друг с другом. Если этой коммуникации между узлами не будет, то информация о состоянии кластера будет потеряна и кластер не сможет функционировать.
Менеджер глобального обновления (Global Update Manager). Передает информацию о состоянии кластера (например, информацию о добавлении узлов в кластер, об удалении узлов и т.д.) всем узлам кластера.
Монитор ресурсов (Resource Monitor). Отслеживает состояние различных ресурсов кластера и сообщает статистические данные. Эта информация может применяться для принятия решений о необходимости выполнения на кластере переходов по отказу.
Служба времени (Time Service). Гарантирует, что все узлы кластера сообщают одинаковое системное время. Если бы Службы времени не было, то события могли бы представляться в неверной последовательности, что приводило бы к неверным решениям. Например, если бы один узел "думал" бы, что сейчас 2 часа дня и содержал бы старую копию файла, а другой узел "думал" бы, что сейчас 10 часов утра и содержал бы более новую версию этого файла, то кластер мог бы неправильно решить, что файл на первом узле является более свежим.
Взаимосвязь между серверами
Взаимосвязь между серверами – это просто соединение между узлами кластера. Так как для узлов кластера необходима постоянная коммуникация между ними (через Службу времени, Менеджер узлов и т.д.), то поддержка этой связи очень важна. Взаимосвязь между серверами должна быть надежным каналом коммуникации.
Во многих случаях в качестве взаимосвязи между серверами может применяться сеть Ethernet, на которой исполняется протокол TCP/IP или NetBIOS. Этого вполне достаточно, но вы можете захотеть применять нестандартную, высокоскоростную взаимосвязь между серверами, которая будет гораздо быстрее, чем Ethernet. Эти взаимосвязи можно приобрести у многих поставщиков оборудования, некоторые из них предоставляют как решения для разделяемых дисков, так и решения для коммуникации. Полный список одобренных устройств для взаимосвязи между серверами вы найдете в списке совместимого оборудования на веб-сайте фирмы Microsoft по адресу http://www.microsoft.com/hcl/
Разделяемая дисковая система
Другая ключевая компонента, необходимая для создания кластера, – разделяемая дисковая система. Если к одной и той же дисковой системе могут иметь доступ многие компьютеры, то в случае отказа узла его работу может взять на себя другой узел. Разделяемая дисковая система должна предоставлять равноправный доступ многим компьютерам к одним и тем же дискам, т.е., каждый из компьютеров должен быть способен иметь доступ ко всем дискам. В нынешней версии MSCS в каждый момент времени только один компьютер может иметь доступ к дискам, но в будущих версиях станет возможен одновременный доступ к данным для многих компьютеров.
В настоящее время доступно несколько видов разделяемых дисковых систем, разрабатываются и новые технологии для дисков. Дисковые подсистемы SCSI всегда поддерживали работу со многими инициаторами, когда можно иметь много контроллеров SCSI на одной и той же шине SCSI. Это делает SCSI идеальным выбором для применения в кластерах. Фактически, системы SCSI были первыми дисковыми подсистемами, которые могли применяться для кластеризации.
Для поддержки кластеризации были разработаны также более современные дисковые технологии, такие как Fibre Channel и некоторые нестандартные фирменные решения. Системы Fibre Channel позволяют подключать диски, находящиеся на значительном удалении от компьютеров. Большинство систем Fibre Channel поддерживает применение многих контроллеров в одном кольце Fibre Channel. Для поддержки кластеризации были спроектированы или модифицированы некоторые RAID-контроллеры. Без модификаций или без внесения изменений в конфигурацию, большинство дисковых контроллеров не будет поддерживать кластеризацию.
Вопрос о кэшах контроллеров, благодаря которым возможно кэширование записей в память, также надо решать при кластеризации, в случаях, когда кэш расположен на самом контроллере (рис. 12.3). В этом случае каждый узел имеет свой собственный кэш, и мы говорим, что он находится перед разделением дисков ("in front of" the disk sharing), потому что два кэша пользуются одними и теми же дисковыми накопителями. Если каждый контроллер имеет кэш и кэш размещается на отказавшем компьютере, то данные из кэша могут быть потеряны. Из-за этого, когда вы в конфигурации кластера применяете внутренние кэши контроллера, они должны быть настроены как применяемые только для чтения (set as read-only). (При некоторых обстоятельствах такая настройка может уменьшить производительность некоторых систем.)
(рис 12.3) Кэши контроллера перед разделением дисковВ других решениях этой проблемы с разделяемыми дисками предусматривается расслоение (чередование) RAID и кэширование внутри самой дисковой подсистемы. В этой конфигурации кэш разделяется (используется совместно) узлами и в данном случае мы говорим, что кэш находится позади разделения дисков (рис. 12.4). Теперь механизмы расслоения и кэш выглядят одинаково для всех контроллеров системы, и безопасными являются как чтение из кэша, так и запись в кэш.
(рис 12.4) Кэш контроллера позади разделения дисковПоследние дисковые подсистемы SCSI и Fibre Channel допускают размещение RAID- контроллеров в корпусах дисковых систем, а не в корпусах компьютеров. Такие системы обеспечивают хорошую производительность и отказоустойчивость. Фактически, многие RAID-системы этого типа предлагают контроллеры и кэши, полностью защищенные при помощи избыточности. Многие из последних RAID-систем применяют архитектуру этого типа. Давайте более подробно рассмотрим некоторые дисковые подсистемы.
Подсистемы ввода-вывода.Как уже говорилось, кластеризацию поддерживают различные виды подсистем ввода-вывода. Ниже перечислены три основных вида подсистем ввода-вывода.
SCSI JBOD. Это SCSI-система с многими инициаторами (контроллерами) на шине SCSI, адресующей простой массив дисков (just a bunch of disks, JBOD). При такой настройке диски адресуются индивидуально и должны быть либо сконфигурированы для расслоения при помощи расслоения Windows 2000, либо адресоваться индивидуально. Мы не рекомендуем применять такую подсистему.
Внутренняя RAID-система. В каждом сервере применяется свой RAID-контроллер. Недостатком этой системы является то, что алгоритм работы RAID-системы реализован на плате, находящейся на сервере, поэтому кэши контроллеров должны быть отключены.
Внешняя RAID-система. RAID-контроллер разделяется (используется совместно) компьютерами кластера. Кэш и алгоритм работы RAID-системы размещаются в корпусе дисковой системы, а для коммуникации с внешним контроллером применяется простой адаптер главной шины (HBA, host bus adapter).
В следующих двух разделах рассказано только о двух решениях с применением технологии RAID. Мы не рекомендуем применять решение SCSI JBOD, за исключением лишь случаев, когда кластер небольшой и главное значение имеет его стоимость.
Внутренняя RAID-система. Внутренние RAID-контроллеры спроектированы таким образом, что аппаратура, управляющая работой RAID, и кэш находятся на самом компьютере. Когда используется внутренняя RAID-система, разделяемая дисковая система разделяется до расслоения RAID, как показано на рис. 12.5.
(рис 12.5) Внутренний RAID-контроллерТак как кэш размещен на контроллере, который не находится в совместном использовании, все данные, которые были в кэше в момент отказа системы, станут недоступными. Это большая проблема в случае, когда работа идет с реляционными СУБД. Когда SQL Server записывает данные на диск, эти данные заносятся в журнал транзакций как записанные. Когда SQL Server пытается восстановиться после отказа системы, эти блоки данных не будут восстановлены, потому что SQL Server считает, что они уже были записаны на диск. В случае отказа при этом типе конфигурации база данных будет повреждена.
Поэтому поставщики RAID-контроллеров с кэшированием при работе их в составе кластеров сертифицируют их работу только при отключенном кэше (или, по крайней мере, при запрете записи в кэш). Если кэш был отключен, то SQL Server не получит сигнала о том, что операция записи была завершена, до тех пор, пока данные не будут действительно записаны на диск.
Примечание.SQL Server выполняет все записи на диск без буферизации и без кэширования. Независимо от размера доступного кэша файловой системы, SQL Server не станет его использовать. SQL Server полностью отказывается от кэша файловой системы, так же поступают и почти все продукты – реляционные СУБД.
В некоторых ситуациях, если пользоваться кэшем контроллера можно добиться повышения производительности. Это особенно имеет смысл при использовании конфигураций RAID 10 и RAID 5, потому что для этих уровней RAID очень велика дополнительная нагрузка, появляющаяся при записи. Чтобы пользоваться кэшем записи контроллера в кластерной конфигурации, нужно пользоваться внешней RAID-системой, в которой кэш находится в совместном пользовании и данные при переходе по отказу не теряются.
Внешняя RAID-система. Во внешних RAID-системах аппаратура RAID находится за пределами компьютеров (см. рис. 12.6). Каждый сервер содержит адаптер главной шины (HBA, host bus adapter), задачей которого является передача в RAID-систему максимально большего количества запросов ввода-вывода с наивысшей возможной скоростью. А место фактического размещения данных определяется RAID-системой.
(рис 12.6) Внешняя подсистема RAIDВнешние RAID-системы иногда называют "RAID в шкафу" или "RAID в ящике", потому что расслоение RAID производится внутри корпуса с дисками. Такие внешние подсистемы RAID обладают многими достоинствами. Они являются не только идеальным решением для MSCS, но и вообще, универсальным лучшим решением. Ниже перечислены достоинства систем "RAID в шкафу":
Удобство при подключении. При использовании внутренних RAID-систем вам потребуются многочисленные кабели – по кабелю для каждого шкафа с дисками, выходящему из каждого RAID-контроллера. А если пользоваться внешним RAID, то вам понадобится проложить только один кабель от адаптера главной шины до RAID-контроллера и кабели от контроллера, формирующие соединение "гирляндой" (daisy chain) к каждому шкафу с дисками (см. рис. 12.7). При помощи внешних RAID-систем можно без труда соединять сотни дисководов.
Обеспечивается избыточность RAID. Многие внешние решения RAID разрешают одному контроллеру памяти осуществлять коммуникацию и с основным, и с вторичным RAID-контроллером, что обеспечивает полное резервирование и переход по отказу к другому узлу.
Обеспечивается кэширование в кластерах. Применяя внешние решения RAID, кэширование можно выполнить гораздо более просто. При использовании внешних RAID, вы можете разрешать применение как кэширования, так и средств для отказоустойчивости, не беспокоясь о согласованности работы кэшей из разных контроллеров (потому что имеется только один кэш и один контроллер). Фактически, при применении внешнего RAID, использование кэша записи является безопасным. При кэшировании данных от реляционных СУБД некоторый риск все же сохраняется, но при применении внешнего RAID он уменьшается. Обязательно проверьте, что поставщик ваших внешних RAID-систем поддерживает зеркальное дублирование кэшей. Зеркальное дублирование кэшей обеспечивает отказоустойчивость кэш-памяти в случае отказа ее микросхем.
Поддержка большого количества дисковых накопителей. Для работы больших или высокопроизводительных систем иногда требуется конфигурировать дополнительные дисковые накопители. То, что дисковых накопителей может потребоваться много, вы знаете из лекции 6, где вы учились планировать мощность системы, и еще узнаете в лекции 36, посвященной типичным проблемам с производительностью. Применяя внешние устройства RAID, вы сможете присоединять сотни дисков к одному адаптеру главной шины, а внутренние RAID-системы, как и системы SCSI, ограничивают вас несколькими дюжинами дисков на один контроллер.
(рис 12.7) Подключения кабелей внутренних RAID-систем в сравнении с подключением кабелей внешних RAID-системПри выборе из дисковых подсистем, поддерживающих кластеризацию, доступных в настоящее время, при работе с большими кластерами лучше всего применять шкафы – внешние RAID. Конечно, свою роль могут играть вопросы их стоимости, и некоторые кластеры могут быть не настолько большими, чтобы реализовывать их как внешние RAID. Но в долгосрочной перспективе применение внешних RAID-систем обеспечит для вашего кластера наилучшую производительность, надежность и управляемость.
Категории приложений, работающих
с кластерами
Приложения, которые работают на системах с MSCS можно разделить на следующие четыре категории. Эти категории приложений и их взаимодействие с MSCS показаны на рис. 12.8.
(рис 12.8) MSCS и категории приложенийПриложения, не рассчитанные на кластеризацию. Приложения этой категории никак не взаимодействуют с MSCS. Хотя при обычных условиях они могут работать нормально, но при отказах узлов они могут заработать неверно, что воспрепятствует их переходу на другой узел кластера.
Приложения, рассчитанные на кластеризацию. Эти приложения рассчитаны на работу совместно с MSCS. Они могут воспользоваться достоинствами MSCS, повышающими производительность и масштабируемость. Они правильно реагируют на события, происходящие на кластере, и при отказе компонент и переходе на другой узел кластера, как правило, им не требуется уделять большого внимания (а иногда и вообще никаких забот не потребуется). SQL Server может служить примером таких приложений, рассчитанных на кластеризацию.
Приложения для управления кластером. Приложения этой категории служат для наблюдения за кластером и для управления окружением MSCS.
Нестандартные типы ресурсов. Эти приложения являются нестандартными ресурсами управления кластером для приложений, служб и устройств.
Режимы MSCS
Поддержку кластеров для SQL Server и MSCS можно запускать в различных режимах. В активно-пассивном режиме один сервер находится в состоянии ожидания, готовый принять на себя работу в случае отказа первичного сервера. В активно-активном режиме каждый сервер работает со своей базой данных SQL Server. В случае отказа любого из серверов другой сервер берет работу на себя, и дело кончается тем, что один сервер работает с двумя базами данных. В этом разделе мы рассмотрим преимущества и недостатки применения каждого из этих двух режимов.
Активно-пассивные кластеры
В активно-пассивных кластерах для работы приложений SQL Server применяется первичный узел (primary node), а сервер – вторичный узел (secondary node) является запасным, резервным сервером (рис. 12.9).
(рис 12.9) Активно-пассивный кластерВ этой конфигурации один из серверов практически не используется. Этот сервер может месяцами стоять без дела. Фактически, во многих случаях резервный сервер вообще никогда не будет использоваться. И поскольку он не используется, его могут расценивать как дорогостоящее оборудование, простаивающее без дела. Так как этот сервер не может выполнять другие задачи, то для удовлетворения нужд пользователей придется покупать другое оборудование, что делает активно-пассивный режим потенциально неэкономичным.
Но, несмотря на эту неэкономичность, активно-пассивный режим имеет свои достоинства. В этой конфигурации при отказе первичного узла все ресурсы вторичного узла полностью готовы к тому, чтобы взять на себя его работу. Такая надежность важна, когда вы выполняете критически важные приложения, для которых требуются заданные показатели производительности или времени отклика. Если вы находитесь именно в такой ситуации, то тогда, возможно, активно-пассивный режим будет правильным решением.
Настоятельно рекомендуется, чтобы аппаратура вторичного узла была точно такая же, как и первичного узла (т.е., чтобы у первичного и вторичного узлов были бы одинаковые объемы оперативной памяти, одинаковые количество и типы центральных процессоров и т.д.). Если узлы имеют одинаковую аппаратуру, то вы можете быть уверены в том, что вторичная система будет работать почти с такой же скоростью, как и первичная. А иначе вы в случае перехода по отказу можете столкнуться с потерей производительности.
Активно-активные кластеры
В активно-активных кластерах выполнять приложения могут оба сервера, причем каждый сервер служит вторичным сервером для другого узла (см. рис. 12.10).
(рис 12.10) Активно-активный кластерКаждый из этих двух серверов работает сразу и как первичный узел для некоторых приложений, и как вторичный узел для приложений другого сервера. Эта конфигурация наиболее эффективна в экономическом плане, потому что никакое оборудование не простаивает, ожидая отказа другой системы. Обе системы активно обслуживают пользователей. Кроме того, один пассивный узел может служить вторичным узлом для нескольких первичных узлов.
Недостатком активно-активной конфигурации является лишь то, что в случае отказа производительность выжившего узла существенно снизится, потому что нагрузка на него вырастет. Выжившему узлу теперь придется исполнять не только приложения, которые работали на нем первоначально, но и приложения с первичного узла. Во многих случаях это снижение производительности окажется неприемлемым, и тогда придется применять активно-пассивную конфигурацию.
Примеры кластеризованных систем
В этом разделе мы рассмотрим четыре примера кластеризованных систем, применяющих MSCS. Эти примеры помогут вам решить, какой тип кластеров лучше всего соответствует вашим потребностям и окружению.
Пример 1 – система с высокой готовностью со статическим балансированием нагрузки
Такие системы обеспечивают высокую готовность для кластеров, на которых исполняется много приложений. Это, однако, достигается за счет некоторого падения производительности в случаях, когда на линии остается один узел. Такие системы обеспечивают максимум полезного использования аппаратных ресурсов, потому что доступен каждый из узлов. Конфигурация такого кластера показана на рис. 12.11 (это – активно-активная конфигурация кластера).
(рис 12.11) Кластер с высокой готовностью, со статическим балансированием нагрузкиКаждый из узлов этого кластера представляет для сети свой собственный набор ресурсов (в форме виртуального сервера) и сконфигурирован с некоторым избытком мощности, чтобы быть способным исполнять приложения другого узла в случае перехода по отказу. Готовность обслуживания клиентов отказавшего узла будет зависеть от имеющихся ресурсов и мощности сервера.
Пример 2 – система с "горячим резервированием" с максимальной готовностью
Такие системы обеспечивают максимальную готовность и производительность для всех системных ресурсов. Недостатком этой конфигурации является то, что денежные затраты в оборудование почти никогда не работают. Один из узлов работает как первичный узел и исполняет все клиентские запросы. А другой узел простаивает. Этот простаивающий узел служит для "горячего резервирования" и становится доступен только в случае перехода по отказу. Если первичный узел отказывает, то узел для горячего резервирования немедленно принимает на себя все операции и продолжает обслуживание клиентских запросов. Эта конфигурация показана на рис. 12.12.
Данная конфигурация лучше всего подходит для наиболее критически важных приложений. Если ваша фирма зависит от продаж через Интернет, то вашему серверу для веб-торговли, возможно, следовало бы работать в этой конфигурации. От наличия и работоспособности системы зависит бизнес фирмы, и это оправдывает расходы на простаивающее оборудование.
(рис 12.12) Система с "горячим резервированием" с максимальной готовностью
Пример 3 – кластеризация части сервера
Конфигурация с кластеризацией части сервера является примером того, насколько гибкой может быть MSCS. В этой системе переход по отказу разрешен лишь для некоторых приложений. Как показано на рис. 12.13, вы можете задать, чтобы некоторые приложения оставались доступными при отказе узла, а некоторые – нет.
(рис 12.13) Кластеризация части сервераЭта конфигурация идеальна для случаев, когда вы желаете максимально повысить полезное использование оборудования, но в то же время хотите ограничить расходование мощностей, служащих для подстраховки критически важных приложений. Кроме того, такая конфигурация поддерживает работу приложений, не рассчитанных на кластеризацию, и вместе с тем обеспечивает переход по отказу для приложений, рассчитанных на кластеризацию.
Пример 4 – только виртуальные серверы,
без переходов по отказам
Наш последний пример на самом деле не является кластером, но в нем используется служба MSCS и ее поддержка виртуальных серверов. Эта конфигурация помогает организовывать ресурсы и представлять их в сети (рис. 12.4). Применение виртуальных серверов позволяет задавать для ресурсов осмысленные, описательные имена, а не пользоваться обычным списком имен серверов. Кроме того, MSCS станет автоматически перезапускать приложения и ресурсы после отказов сервера. Эта возможность полезна для приложений, не имеющих внутренних механизмов для их перезапуска. Реализация этой конфигурации также станет для вас отличной тренировкой перед реализацией настоящей кластеризации. Создав виртуальные серверы для одного узла, вы без труда сможете добавить еще один узел, не меняя настроек серверов.
(рис 12.14) Только виртуальные серверы, без переходов по отказам
Конфигурирование SQL Server
для работы на кластере
После того как вы инсталлировали и сконфигурировали MSCS, следующим шагом должно стать конфигурирование SQL Server для работы на кластере. Как уже говорилось, SQL Server является приложением, рассчитанным на кластеризацию, специально спроектированным для применения кластеризации. В данном разделе сначала рассмотрим вопросы планирования кластера, а затем расскажем о ваших действиях, необходимых для конфигурирования SQL Server на кластере.
Примечание. Чтобы пользоваться всеми достоинствами MSCS, приложения должны быть рассчитанными на кластеризацию. Как уже говорилось, такие приложения понимают архитектуру кластера и способны к переходу на другой узел в случае отказа. Не все приложения рассчитаны на кластеризацию и могут работать с кластеризацией сразу в том виде, как они были выпущены.
Планирование конфигурации
Первый шаг в планировании кластера SQL Server задает тип используемого оборудования и режим, в котором будет работать кластер. Кластер может быть составлен из компьютеров в различных аппаратных конфигурациях и может работать как в активно-пассивном, так и в активно-активном режиме. От этого режима зависят количество и тип необходимого вам оборудования.
Активно-пассивные конфигурации кластера должны быть составлены из одинаковых, идентичных компьютеров, каждый из которых способен обрабатывать всю рабочую нагрузку. Так как при обычной работе в активно-пассивном режиме вторичный компьютер не используется, а после отказа не используется первичный компьютер, то производительность виртуального сервера после отказа не изменится. Пользователи не заметят никакого изменения в производительности, потому что после отказа первичного компьютера произойдет переход к точно такому же вторичному компьютеру.
Активно-активные конфигурации кластера должны состоять из двух компьютеров, каждый из которых поддерживает какую-то свою собственную рабочую нагрузку. В данной ситуации после отказа обе эти нагрузки станут обрабатываться одним из компьютеров, что снизит производительность для всех пользователей. При тщательном планировании, производительность, обеспечиваемая выжившим компьютером, останется в допустимых пределах, но гарантировать это нельзя. При планировании активно-активной конфигурации кластера вы должны быть готовы к некоторому падению производительности и возможности избавиться от некоторых служб или предупредить пользователей о том, что в случаях отказов производительность будет снижаться.
Следующим вашим действием, которое надо будет выполнить при конфигурировании SQL Server для работы на кластере, станет проверка и, возможно, изменение некоторых настроек SQL Server. Мы расскажем про эти настройки в трех следующих разделах.
Задание времени восстановления
При настройке SQL Server вы могли задать какое-либо ненулевое значение для параметра конфигурации recovery interval (интервал восстановления) (нулевое значение задано по умолчанию). Изменение этой настройки увеличит время между контрольными точками и повысит производительность, однако снизит и время восстановления (после перехода по отказам система должна восстанавливаться). В кластеризованной системе применяемое по умолчанию нулевое значение, означающее автоматическое конфигурирование, не должно быть изменено. (Главной причиной применения MSCS является наличие компьютера, на который может быть перенесена работа другого компьютера, и это перевешивает вопросы, относящиеся к производительности.) При такой настройке контрольные точки будут происходить примерно раз в минуту, и максимальное время восстановления составит тоже около одной минуты.
Дополнительная информация. Для дополнительной информации об этом обратитесь к предметному указателю Books Online и посмотрите там "recovery interval option".
Примечание. При выполнении контрольных точек все данные, измененные в кэше SQL Server, записываются на диск. Все измененные данные, которые не были записаны на диск в момент отказа системы, SQL Server сотрет при запуске во время повтора подтвержденных транзакций и отката неподтвержденных транзакций.
Конфигурирование SQL Server
для активно-пассивных кластеров
Для создания активно-пассивной конфигурации кластера вам, возможно, понадобится изменить одну из настроек SQL Server. Если вторичный сервер идентичен первичному серверу, то ничего менять не надо. Если вторичный сервер имеет меньше ресурсов, чем первичный сервер, то нужно задать значение 0 для параметра конфигурации SQL Server min server memory. Благодаря такой настройке SQL Server распределит память исходя из системных ресурсов, имеющихся в наличии.
Дополнительная информация. Для дополнительной информации об этом обратитесь к предметному указателю Books Online и посмотрите там "min server memory option".
Конфигурирование SQL Server для активно-активных кластеров
Для создания активно-пассивной конфигурации кластера вы обязательно должны задать значение 0 для параметра конфигурации SQL Server min server memory. Благодаря такой настройке SQL Server распределит память исходя и системных ресурсов, имеющихся в наличии. Если этот параметр конфигурации задан как Manual, то SQL Server может распределить слишком много памяти после перехода по отказу. Так как в операционной системе Windows 2000 применяется виртуальная память, то может случиться так, что памяти будет распределено больше имеющегося объема физической памяти. На самом деле, такая проблема возникает довольно часто и становится причиной подкачки страниц памяти. Например, если у каждого из компьютеров распределено 75% от его системной памяти и произойдет переход по отказу, то для суммарного обслуживания SQL Server потребуется 150% от доступной памяти, из-за чего работа системы практически остановится.
Инсталляция SQL Server для работы на кластере
Процесс инсталляции SQL Server для работы на кластере аналогичен процессу инсталляции SQL Server, описанному в лекции 7. Прежде чем запустить процесс инсталляции для работы на кластере, вы должны решить, где именно будет инсталлироваться SQL Server. Вы должны будете установить файлы SQL Server на разделяемом дисковом накопителе, находящемся под управлением первичного сервера. Вы должны будете задать и путь инсталляции SQL Server, и путь инсталляции главной базы данных (master database) так, чтобы они указывали на этот разделяемый дисковый накопитель. Вы также должны задать сетевой протокол, под которым будет работать кластер. Ниже кратко перечислены действия по инсталляции SQL Server для работы на кластере.
Вставьте свой компакт-диск SQL Server в привод для компакт-дисков вашего сервера. Если ваша операционная система настроена на автоматический запуск компакт-дисков, то появится главное диалоговое окно начальной установки Microsoft SQL Server 2000 (рис 12.15(рис 12.15) Диалоговое окно начальной установки SQL Server
Если у вас не установлены необходимые дополнительные пакеты операционной системы (service packs) или требуемая версия Microsoft Internet Explorer, или если вы просто хотите посмотреть перечень программных компонент, необходимых для инсталляции, то нажмите на SQL Server 2000 Prerequisites, и тогда откроется диалоговое окно SQL Server 2000 Prerequisites (Предварительные условия для SQL Server 2000).Нажмите на обозначение нужной операционной системы, и тогда появится список программных компонент, необходимых для нее. Затем нажмите на обозначение программной компоненты, которую вы хотите инсталлировать. Если все необходимое программное обеспечение у вас уже установлено, то переходите к шагу 3.
Примечание. Инсталляция MSCS должна быть выполнена до запуска инсталляции SQL Server.
Нажмите на SQL Server 2000 Components. Появится стартовое окно мастера SQL Server 2000 Installation Wizard. Если у вас работают какие-либо другие программы Windows, то их нужно закрыть. Для продолжения процесса инсталляции нажмите на Next.
В экране Computer Name нажмите на Virtual Server и введите с клавиатуры имя виртуального сервера (рис 12.16(рис 12.16) Экран Computer Name
Появится экран User Information (Информация о пользователе). Проверьте правильность своего имени и названия вашей фирмы. Для продолжения нажмите на Next.
Появится экран Software License Agreement (Лицензионное соглашение об использовании программного обеспечения). Нажмите на Yes, чтобы согласиться с условиями лицензионного соглашения и продолжить процесс инсталляции.
В экране Setup введите с клавиатуры 25-символьный ключ компакт-диска, напечатанный на желтой наклейке в инструкции, прилагаемой к компакт-диску или на футляре компакт-диска. Для продолжения нажмите на Next.
Затем появится экран Failover Clustering (Кластеризация с переходом по отказу) (рис. 12.17). Введите IP-адрес для виртуального сервера, а затем нажмите на Add. MSCS предоставит адрес подсети. Для продолжения нажмите на Next.
В экране Cluster Management (Управление кластером) посмотрите на определение кластера, которое предлагает SQL Server. По умолчанию в качестве предпочтительного узла задается локальный компьютер. Все остальные допустимые узлы будут показаны в окне Additional Node (Дополнительный узел). Проверьте настройки и на Next для продолжения процесса инсталляции.
Когда появится экран Remote Information (Информация для дистанционного доступа), введите с клавиатуры пользовательский идентификатор администратора и пароль, которые будут действительны для всех выбранных узлов этого кластера.
(рис 12.17) Экран Failover Clustering
В экране Instance Name (Имя экземпляра) согласитесь со стандартным именем или задайте именованный экземпляр SQL Server. Если вы хотите задать именованный экземпляр, то снимите флажок Default (По умолчанию) и введите с клавиатуры желаемое имя экземпляра. Для продолжения нажмите на Next.Примечание. Экземпляры не могут получать такие имена, как DEFAULT, MSSQLSERVER и любые имена, совпадающие с зарезервированными ключевыми словами SQL Server.
В экране Setup Type задайте нужный вам тип инсталляции. По умолчанию программа установки SQL Server инсталлирует SQL Server в первый доступный диск – разделяемый ресурс. Если вы хотите инсталлировать SQL Server в другое место, то нажмите на Browse под заголовком Data Files и задайте путь к другому диску – разделяемому ресурсу. Для продолжения нажмите на Next.
Затем появится экран Authentication Mode (Режим аутентификации) (рис. 12.18). Настройки, заданные в этом окне, задают уровень безопасности вашей инсталляции SQL Server. Вы можете выбрать использование Windows Authentication Mode (Режим аутентификации Windows) либо Mixed Mode (Смешанный режим). При выборе Windows Authentication Mode все права пользователей в отношении базы данных наследуются из настроек Windows User Security. При выборе Mixed Mode вы можете задавать и администрировать настройки безопасности пользователей для базы данных независимо от настроек для Windows. Если вы выберете Mixed Mode, то вы должны задать пароль для учетной записи sa (системного администратора SQL Server). Вы можете оставить этот пароль пустым, но это серьезно ухудшит защищенность вашей инсталляции SQL Server.
В экране Start Copying Files (Запустить копирование файлов) нажмите на Next.
Появится экран Licensing Mode (Лицензионный режим). Имеется два способа для лицензирования ваших клиентов SQL Server – на сервер (Per Server) или на посадочные места (Per Seat). При использовании лицензии на сервер требуется назначать каждую Лицензию клиентского доступа (Client Access License) конкретному серверу и такая лицензия допускает только одно соединение с этим сервером. Максимальное число компьютеров-клиентов, которые могут соединяться с сервером в любой момент времени равно количеству лицензий Client Access License, выданный вами этому серверу.
(рис 12.18) Экран Authentication ModeПри использовании лицензии на количество посадочных мест требуется лицензия Client Access License для каждого компьютера-клиента, который будет осуществлять доступ к любому из ваших серверов, исполняющих SQL Server. После того как для компьютера будет получена лицензия, он сможет осуществлять доступ к любому компьютеру в сети, на котором исполняется SQL Server 2000 без какой-либо дополнительной оплаты.Если вы не можете решить, какой режим лицензирования выбрать, нажмите на Per Server. Лицензионное соглашение разрешает возможность однократной, необратимой замены лицензии "на сервер" на лицензию "на посадочные места".
Чтобы начать инсталляцию приложений и файлов данных SQL Server, нажмите на Continue. Программа установки SQL Server инсталлирует на ваш компьютер нужные файлы и сконфигурирует необходимые компоненты. Инсталляция может потребовать лишь нескольких минут либо может продлиться дольше (это зависит от быстродействия вашего компьютера).
Когда появится экран Setup Complete (Установка завершена), выберите опцию для перезапуска вашего компьютера и нажмите на Finish.
Как видите, конфигурирование SQL Server для работы на кластере не представляет трудностей. После того как вы сконфигурируете кластер, больше вам не придется ничего конфигурировать. Клиенты будут осуществлять доступ к SQL Server при помощи IP-адресов, переназначаемых в ходе выполнения перехода по отказу. Остальные вопросы, относящиеся к программированию, на которые вы должны обратить внимание, будут рассмотрены в разделе "За рамками MSCS".
Применение трехзвенных приложений
Большинство приложений устанавливают непосредственные соединения с базой данных. Такие приложения отсылают транзакции, на которые отвечает база данных. В случае отказа системы срок обработки транзакций истекает, и приложение тоже отказывает. Во многих случаях настройка, задающая такой способ работы, оказывается лучшим выбором, т.е. так и надо, чтобы при незавершении транзакции приложение бы отказывало. Но если вы создали кластер для переходов по отказам, то, в случае отказа, база данных довольно скоро снова станет доступной и сможет отвечать на транзакции. При тщательном проектировании трехзвенных приложений можно добиться, чтобы приложения смогли воспользоваться этими возможностями быстрого восстановления обслуживания.
У трехзвенных приложений средний уровень может распознать, что сервер прекратил отвечать, а затем подождать заданный промежуток времени и повторить отправку транзакции. Для пользователя это выразится в увеличении времени ожидания исполнения транзакции, но такая задержка все же будет лучше, чем отказ в исполнении транзакции. Для такой работы приложение должно уметь распознавать отказ соединения с сервером и понимать необходимость возобновления соединения. Приложение также должно информировать конечного пользователя об этом процессе, показывая пользователю окно с сообщением или как-нибудь иначе.
Трехзвенные приложения способны обеспечивать "гладкие" переходы по отказам. Такие приложения должны быть рассчитаны на работу с кластеризацией и должны распознавать ситуации, когда виртуальный сервер должен будет вскоре включиться и начать функционировать. Применение трехзвенной схемы в сочетании с MSCS позволяет добиться надежности в работе приложений и в хранении данных.
За рамками MSCS
Мы с вами изучили основы работы MSCS и работы SQL Server в этой архитектуре. Также мы узнали, как SQL Server может выжить на некоторых типах катастрофических отказов оборудования и программного обеспечения, как можно выполнить резервное копирование SQL Server и быстрое исполнение транзакций. Для достижения такой степени отказоустойчивости одной лишь службы MSCS будет недостаточно, понадобятся и другие меры. Две таких важных меры – это выполнение регулярных и эффективных резервных копирований и разработка плана восстановления после чрезвычайных ситуаций, про это будет подробно рассказано в лекциях 32 и 33. Резервное копирование не может быть заменено службами кластеризации и RAID-системами. Во многих случаях, если система разрушится, а резервной копии у вас не будет, никакие эти технологии не помогут. Ниже перечислены некоторые из таких ситуаций.
Отказы оборудования. В некоторых, достаточно редких случаях, отказы оборудования могут повредить данные. При отказе первичного сервера, повредившего базу данных, вторичный сервер станет работать с поврежденной базой данных.
Отказы программного обеспечения. Независимо от того, насколько программное обеспечение было хорошо спроектировано и оттестировано, в него могут закрасться ошибки. Если одна из таких редких программных ошибок повредит базу данных, то переход по отказу к такой базе данных будет невозможен, а RAID-технология просто обеспечит отказоустойчивое хранение поврежденных данных.
Человеческие ошибки. Довольно часто пользователи по ошибке стирают свои данные. От этого не спасет ни технология кластеризации, ни RAID.
В лекциях 32 и 33 дан более подробный материал о планировании подготовки к катастрофам и о том, как обеспечивать выживаемость ваших систем. Приведенные выше примеры просто иллюстрируют тот факт, что кластеризация и переходы по отказам предназначены для решения специфических задач и являются лишь двумя из многих средств борьбы за обеспечение бесперебойного доступа к данным и целостности данных.
Заключение
В этой лекции вы узнали о разных конфигурациях кластеризации, об оборудовании и программном обеспечении, необходимых для создания кластеров, а также о процессе конфигурирования SQL Server для работы на кластерах. Теперь вы понимаете, что хоть служба MSCS и поможет вам в некоторых ситуациях, но она не обеспечит полную, окончательную отказоустойчивость вашей системы. Вы должны также применять отказоустойчивую дисковую подсистему и реализовать схему резервного копирования. MSCS, в сочетании с хорошей стратегией преодоления катастроф, может обеспечить максимальную готовность и надежность системы. В следующей лекции мы рассмотрим T-SQL – усовершенствованную версию языка SQL, доступную в SQL Server 2000.
В последние годы системы Microsoft SQL Server 2000 превратились из систем для настольных компьютеров сначала в системы для рабочих групп, а теперь и в системы для внутренних офисов. Эти системы теперь стали крупнее и их важность для бизнеса повысилась, поэтому повысились и требования к их стабильности, к возможностям дистанционного администрирования и их отказоустойчивости. Чтобы добиться удовлетворения этих требований, фирма Microsoft затратила очень много времени и усилий на поиск ошибок в программах и на улучшение поддержки пользователей. Microsoft усовершенствовала инструментальные средства для администрирования и улучшила возможности дистанционного администрирования, были созданы такие технологии, как "Службы Кластеризации", MSCS (Microsoft Cluster Services). Кластером называется группа компьютеров, которые обеспечивают друг для друга взаимное резервное копирование на случай отказов. В этой лекции вы узнаете, как работает служба MSCS и как их конфигурировать, а также научитесь планировать действия в случае возможных отказов и узнаете, как выполнять восстановление после отказов. Служба MSCS сама по себе не может обеспечить отказоустойчивость вашей системы; чтобы ваша система могла быть восстановлена после отказов, эта технология должна применяться в сочетании с тщательным планированием.
Примечание. MSCS входит в состав Microsoft Windows 2000 Advanced Server, Windows 2000 Datacenter Server и Microsoft Windows NT 4 Enterprise Edition.
Разновидности отказов
Главной обязанностью администратора базы данных является поддержание базы данных в рабочем состоянии в течение требуемых периодов времени, которые обычно указываются в соглашении об уровне обслуживания (service level agreement). В этом соглашении об уровне обслуживания обычно указывается объем периодов работоспособности системы, а также показатели производительности и длительность времени восстановления в случаях отказов в работе. Применение MSCS может увеличить длительность периодов работоспособности системы и сократить длительность времени восстановления. Несмотря на то, что аппаратура сервера, Windows 2000, Windows NT и SQL Server обычно стабильны и надежны, отказы все равно иногда случаются. На самом деле, в сложной компьютерной системе могут случаться разнообразные типы отказов, в том числе следующие:
Отказы дисковых накопителей. Технология дисковых накопителей значительно усовершенствовалась, но дисковые накопители по-прежнему остаются механическими устройствами и, следовательно, подвержены износу. Дисковые накопители являются одной из наиболее типичных причин отказов.
Отказы оборудования. Отказы оборудования могут происходить из-за износа и повреждения его компонент, чаще всего из-за перегрева. Со временем может отказать аппаратура компьютеров даже наивысшего качества.
Отказы компонент программного обеспечения. Некоторые пороки программного обеспечения оборудования могут проявиться только при редком сочетании обстоятельств. Ваша система может работать многие месяцы или годы, пока некоторое сочетание условий не заставит проблему проявиться. Кроме того, при добавлении приложений в стабильно работающее окружение может произойти изменение библиотеки или файла, имеющих критическую важность, что и вызовет проблемы.
Внешние отказы. Система может отказать из-за внешних причин, например, из-за отключения электропитания. Выживет ли система в таких обстоятельствах, зависит от того, применяете ли вы источники бесперебойного питания (ИБП) и резервные источники электропитания.
Ошибки людей. Кластеризация обычно не может защитить систему от отказов, вызванных ошибками людей, например, таких, как ошибочное удаление таблицы разделов файловой системы Windows NT.
Отказы будут случаться неизбежно. Вопрос в том, как следует наилучшим образом подготовиться к некоторым из них; этому и посвящена данная лекция.
Обзор MSCS
MSCS является встроенной службой Windows 2000 Advanced Server, Windows 2000 Datacenter Server и Windows NT Enterprise Edition. MSCS применяется для формирования кластера серверов, который, как уже говорилось, является группой независимых серверов, работающих совместно как единая система. Кластер служит для обеспечения готовности (availability, этот термин может переводиться и как "доступность") клиентов к обслуживанию приложений в ситуации возникновения отказа или при запланированных отключениях. Если один из серверов кластера по какой-либо причине является недоступным, то ресурсы и приложения перемещаются на другой узел кластера.
Когда речь идет о кластеризованных системах, мы обычно применяем термин с высокой готовностью (high availability), а не отказоустойчивый (fault tolerant). Термин отказоустойчивый традиционно применяется по отношению к специализированным системам, обладающим исключительно высоким уровнем резервирования, устойчивостью к внешним воздействиям и способностью к восстановлению. Такие системы обычно применяют весьма специализированное программное обеспечение, обеспечивающее почти мгновенное восстановление при любых отдельных отказах оборудования или программного обеспечения. Отказоустойчивые системы стоят гораздо дороже, чем системы без отказоустойчивости. Кластеризованные системы, обеспечивающие высокую готовность, не столь дорогостоящи, как отказоустойчивые системы. Кластеризованные системы обычно конструируются из оборудования для стандартных серверов и программного обеспечения для работы кластера (это программное обеспечение имеет небольшой объем и входит в состав операционной системы). При увеличении потребности в обеспечении готовности можно достаточно просто включать дополнительные компьютеры в состав кластера. Хотя кластеризованные системы и не гарантируют непрерывной работы, но они обеспечивают весьма значительное повышение готовности для большинства критически важных приложений.
Системы, исполняющие MSCS, обеспечивают высокую готовность и имеют много других достоинств. Некоторые из достоинств применения MSCS перечислены ниже.
Высокая готовность. Системные ресурсы, такие как дисковые накопители и IP-адреса, автоматически передаются от отказавшего сервера к выжившему. Это явление называется переход по отказу (failover). При возникновении ситуации, когда приложение на кластере отказывает, MSCS автоматически запускает его на выжившем сервере или распределяет работу отказавшего сервера по другим оставшимся узлам кластера. Переход по отказу происходит быстро, поэтому для пользователей он представится как лишь мгновенная заминка в обслуживании.
Возврат к исходному узлу кластера после восстановления. После того как отказавший сервер будет починен и введен в строй, MSCS автоматически перераспределяет нагрузку на кластере. Это явление называется возврат к исходному узлу кластера (failback).
(рис 12.1) Windows 2000 Cluster Administrator
Масштабируемость. По мере роста требований к системе, MSCS может быть переконфигурирована для поддержки этого роста. Если суммарная нагрузка станет превышать возможности кластера, можно будет добавить в кластер дополнительные узлы.
Основные понятия
MSCS сокращает длительность простоев, осуществляя переходы по отказу между отдельными компьютерами, применяя при этом взаимосвязь между серверами и дисковую систему с общим доступом (рис. 12.2). В качестве взаимосвязи между серверами может применяться любое высокоскоростное соединение, например, сеть Ethernet или другое сетевое оборудование. Эта взаимосвязь функционирует как канал коммуникации между серверами, благодаря которому возможна двусторонняя передача информации о состоянии кластера и о конфигурации. Благодаря разделяемой дисковой системе возможен равноправный доступ всех серверов кластера к базе данных и к другим файлам с данными. Такая разделяемая дисковая система может быть реализована при помощи SCSI, SCSI поверх Fibre Channel, а также при помощи какого-либо нестандартного оборудования. Разделяемые диски могут быть как одиночными дисками, так и RAID-системой. (Про RAID-системы см.лекцию 5.)
(рис 12.2) Кластер Windows 2000Внимание. Если разделяемая дисковая система не обладает отказоустойчивостью, то в случае отказа дисковой подсистемы MSCS не сможет переключиться на другой сервер, потому что новый сервер все равно должен пользоваться этой же самой отказавшей дисковой подсистемой. Обязательно защищайте свои дисковые накопители при помощи технологии RAID, потому что они являются механическими устройствами и вероятность отказов для них наиболее высока.
Как только система будет сконфигурирована как сервер кластера, она будет преобразована из обычного сервера в так называемый виртуальный сервер. Виртуальный сервер похож на обычный сервер, но для него применяется абстрагирование и отказ от настоящей физической сущности компьютера. Так как аппаратная часть компьютера, образующая виртуальный сервер, может со временем меняться, то пользователь не будет знать, на каком именно сервере выполняется его приложение в данный момент времени. Поэтому пользовательские приложения выполняются не на конкретном комплекте оборудования, а на виртуальном сервере.
Виртуальный сервер существует как элемент сети и ему сопоставлен IP-адрес, применяемый в протоколе TCP/IP. Этот IP-адрес может передаваться от одного компьютера к другому, благодаря чему пользователи продолжают "видеть" виртуальный сервер независимо от того, на каком именно оборудовании он работает. На самом деле, этот IP-адрес переходит от одного компьютера к другому, что обеспечивает одинаковое представление виртуального сервера для наружного наблюдателя. Приложение, направленное по некоторому адресу, все равно получит доступ, соответствующий этому адресу, даже если конкретный сервер, соответствующий этому адресу, и откажет (однако этот адрес теперь будет соответствовать другому серверу). Виртуальный сервер прячет от пользователя операции перехода по отказу, поэтому пользователь может продолжать свою работу, не зная о событиях, происходящих "за кулисами".
Компоненты кластера
Для создания кластера нужны некоторые компоненты: программное обеспечение для управления кластером, взаимосвязь между серверами и разделяемая дисковая система. Чтобы образовать кластер, эти компоненты должны быть сконфигурированы согласованно с приложениями, которые будут предназначены для работы на нем. В данном разделе вы познакомитесь с этими компонентами и узнаете, как они совместно работают, образуя кластер. Затем, в разделе "Конфигурирование SQL Server для работы на кластере" (далее в данной лекции) вы научитесь конфигурировать кластеры SQL Server.
Программное обеспечение MSCS для управления кластером
Программное обеспечение для управления кластером – это совокупность инструментальных средств, применяемых для технического обслуживания, конфигурирования и работы кластера. Оно содержит следующие подкомпоненты, работающие совместно и выполняющие, при необходимости, переход по отказу.
Менеджер узлов (Node Manager). Поддерживает членство в кластере и передает "пульс" (heartbeats) членам кластера (узлам). (Этот пульс представляет собой просто периодически отсылаемые сообщения, означающие "Я жив".) Если пульс от некоторого узла прекращается, то другой узел делает вывод, что этот узел перестал функционировать, и предпринимает шаги по приему на себя его функций. Менеджер узлов является одним из наиболее критичных элементов кластера, потому что он следит за состоянием кластера и решает, какие действия должны быть предприняты.
Менеджер базы данных конфигурации (Configuration Database Manager). Поддерживает базу данных конфигурации кластера, в которой хранятся сведения обо всех компонентах кластера, как об абстрактных логических элементах (например, виртуальных серверах), так и физических элементах (например, разделяемых дисках). Эта база данных подобна системному реестру Windows NT/Windows 2000.
Менеджер ресурсов / Менеджер переходов по отказу (Resource Manager / Failover Manager). Запускает и останавливает службу MSCS. Информацию (например, о потере узла, о добавлении узла и т.д.) Менеджер ресурсов / Менеджер переходов по отказу получает от Монитора ресурсов и Менеджера узлов.
Обработчик событий (Event Processor). Инициализирует кластер и осуществляет маршрутизацию информации о событиях (routes event information) среди компонент кластера. Обработчик событий также инициирует расширение кластера, давая указание Менеджеру узлов о добавлении узла.
Менеджер коммуникаций (Communications Manager). Управляет коммуникацией между узлами кластера. Все узлы кластера, для обеспечения своей правильной работы, должны постоянно осуществлять коммуникацию друг с другом. Если этой коммуникации между узлами не будет, то информация о состоянии кластера будет потеряна и кластер не сможет функционировать.
Менеджер глобального обновления (Global Update Manager). Передает информацию о состоянии кластера (например, информацию о добавлении узлов в кластер, об удалении узлов и т.д.) всем узлам кластера.
Монитор ресурсов (Resource Monitor). Отслеживает состояние различных ресурсов кластера и сообщает статистические данные. Эта информация может применяться для принятия решений о необходимости выполнения на кластере переходов по отказу.
Служба времени (Time Service). Гарантирует, что все узлы кластера сообщают одинаковое системное время. Если бы Службы времени не было, то события могли бы представляться в неверной последовательности, что приводило бы к неверным решениям. Например, если бы один узел "думал" бы, что сейчас 2 часа дня и содержал бы старую копию файла, а другой узел "думал" бы, что сейчас 10 часов утра и содержал бы более новую версию этого файла, то кластер мог бы неправильно решить, что файл на первом узле является более свежим.
Взаимосвязь между серверами
Взаимосвязь между серверами – это просто соединение между узлами кластера. Так как для узлов кластера необходима постоянная коммуникация между ними (через Службу времени, Менеджер узлов и т.д.), то поддержка этой связи очень важна. Взаимосвязь между серверами должна быть надежным каналом коммуникации.
Во многих случаях в качестве взаимосвязи между серверами может применяться сеть Ethernet, на которой исполняется протокол TCP/IP или NetBIOS. Этого вполне достаточно, но вы можете захотеть применять нестандартную, высокоскоростную взаимосвязь между серверами, которая будет гораздо быстрее, чем Ethernet. Эти взаимосвязи можно приобрести у многих поставщиков оборудования, некоторые из них предоставляют как решения для разделяемых дисков, так и решения для коммуникации. Полный список одобренных устройств для взаимосвязи между серверами вы найдете в списке совместимого оборудования на веб-сайте фирмы Microsoft по адресу http://www.microsoft.com/hcl/
Разделяемая дисковая система
Другая ключевая компонента, необходимая для создания кластера, – разделяемая дисковая система. Если к одной и той же дисковой системе могут иметь доступ многие компьютеры, то в случае отказа узла его работу может взять на себя другой узел. Разделяемая дисковая система должна предоставлять равноправный доступ многим компьютерам к одним и тем же дискам, т.е., каждый из компьютеров должен быть способен иметь доступ ко всем дискам. В нынешней версии MSCS в каждый момент времени только один компьютер может иметь доступ к дискам, но в будущих версиях станет возможен одновременный доступ к данным для многих компьютеров.
В настоящее время доступно несколько видов разделяемых дисковых систем, разрабатываются и новые технологии для дисков. Дисковые подсистемы SCSI всегда поддерживали работу со многими инициаторами, когда можно иметь много контроллеров SCSI на одной и той же шине SCSI. Это делает SCSI идеальным выбором для применения в кластерах. Фактически, системы SCSI были первыми дисковыми подсистемами, которые могли применяться для кластеризации.
Для поддержки кластеризации были разработаны также более современные дисковые технологии, такие как Fibre Channel и некоторые нестандартные фирменные решения. Системы Fibre Channel позволяют подключать диски, находящиеся на значительном удалении от компьютеров. Большинство систем Fibre Channel поддерживает применение многих контроллеров в одном кольце Fibre Channel. Для поддержки кластеризации были спроектированы или модифицированы некоторые RAID-контроллеры. Без модификаций или без внесения изменений в конфигурацию, большинство дисковых контроллеров не будет поддерживать кластеризацию.
Вопрос о кэшах контроллеров, благодаря которым возможно кэширование записей в память, также надо решать при кластеризации, в случаях, когда кэш расположен на самом контроллере (рис. 12.3). В этом случае каждый узел имеет свой собственный кэш, и мы говорим, что он находится перед разделением дисков ("in front of" the disk sharing), потому что два кэша пользуются одними и теми же дисковыми накопителями. Если каждый контроллер имеет кэш и кэш размещается на отказавшем компьютере, то данные из кэша могут быть потеряны. Из-за этого, когда вы в конфигурации кластера применяете внутренние кэши контроллера, они должны быть настроены как применяемые только для чтения (set as read-only). (При некоторых обстоятельствах такая настройка может уменьшить производительность некоторых систем.)
(рис 12.3) Кэши контроллера перед разделением дисковВ других решениях этой проблемы с разделяемыми дисками предусматривается расслоение (чередование) RAID и кэширование внутри самой дисковой подсистемы. В этой конфигурации кэш разделяется (используется совместно) узлами и в данном случае мы говорим, что кэш находится позади разделения дисков (рис. 12.4). Теперь механизмы расслоения и кэш выглядят одинаково для всех контроллеров системы, и безопасными являются как чтение из кэша, так и запись в кэш.
(рис 12.4) Кэш контроллера позади разделения дисковПоследние дисковые подсистемы SCSI и Fibre Channel допускают размещение RAID- контроллеров в корпусах дисковых систем, а не в корпусах компьютеров. Такие системы обеспечивают хорошую производительность и отказоустойчивость. Фактически, многие RAID-системы этого типа предлагают контроллеры и кэши, полностью защищенные при помощи избыточности. Многие из последних RAID-систем применяют архитектуру этого типа. Давайте более подробно рассмотрим некоторые дисковые подсистемы.
Подсистемы ввода-вывода.Как уже говорилось, кластеризацию поддерживают различные виды подсистем ввода-вывода. Ниже перечислены три основных вида подсистем ввода-вывода.
SCSI JBOD. Это SCSI-система с многими инициаторами (контроллерами) на шине SCSI, адресующей простой массив дисков (just a bunch of disks, JBOD). При такой настройке диски адресуются индивидуально и должны быть либо сконфигурированы для расслоения при помощи расслоения Windows 2000, либо адресоваться индивидуально. Мы не рекомендуем применять такую подсистему.
Внутренняя RAID-система. В каждом сервере применяется свой RAID-контроллер. Недостатком этой системы является то, что алгоритм работы RAID-системы реализован на плате, находящейся на сервере, поэтому кэши контроллеров должны быть отключены.
Внешняя RAID-система. RAID-контроллер разделяется (используется совместно) компьютерами кластера. Кэш и алгоритм работы RAID-системы размещаются в корпусе дисковой системы, а для коммуникации с внешним контроллером применяется простой адаптер главной шины (HBA, host bus adapter).
В следующих двух разделах рассказано только о двух решениях с применением технологии RAID. Мы не рекомендуем применять решение SCSI JBOD, за исключением лишь случаев, когда кластер небольшой и главное значение имеет его стоимость.
Внутренняя RAID-система. Внутренние RAID-контроллеры спроектированы таким образом, что аппаратура, управляющая работой RAID, и кэш находятся на самом компьютере. Когда используется внутренняя RAID-система, разделяемая дисковая система разделяется до расслоения RAID, как показано на рис. 12.5.
(рис 12.5) Внутренний RAID-контроллерТак как кэш размещен на контроллере, который не находится в совместном использовании, все данные, которые были в кэше в момент отказа системы, станут недоступными. Это большая проблема в случае, когда работа идет с реляционными СУБД. Когда SQL Server записывает данные на диск, эти данные заносятся в журнал транзакций как записанные. Когда SQL Server пытается восстановиться после отказа системы, эти блоки данных не будут восстановлены, потому что SQL Server считает, что они уже были записаны на диск. В случае отказа при этом типе конфигурации база данных будет повреждена.
Поэтому поставщики RAID-контроллеров с кэшированием при работе их в составе кластеров сертифицируют их работу только при отключенном кэше (или, по крайней мере, при запрете записи в кэш). Если кэш был отключен, то SQL Server не получит сигнала о том, что операция записи была завершена, до тех пор, пока данные не будут действительно записаны на диск.
Примечание.SQL Server выполняет все записи на диск без буферизации и без кэширования. Независимо от размера доступного кэша файловой системы, SQL Server не станет его использовать. SQL Server полностью отказывается от кэша файловой системы, так же поступают и почти все продукты – реляционные СУБД.
В некоторых ситуациях, если пользоваться кэшем контроллера можно добиться повышения производительности. Это особенно имеет смысл при использовании конфигураций RAID 10 и RAID 5, потому что для этих уровней RAID очень велика дополнительная нагрузка, появляющаяся при записи. Чтобы пользоваться кэшем записи контроллера в кластерной конфигурации, нужно пользоваться внешней RAID-системой, в которой кэш находится в совместном пользовании и данные при переходе по отказу не теряются.
Внешняя RAID-система. Во внешних RAID-системах аппаратура RAID находится за пределами компьютеров (см. рис. 12.6). Каждый сервер содержит адаптер главной шины (HBA, host bus adapter), задачей которого является передача в RAID-систему максимально большего количества запросов ввода-вывода с наивысшей возможной скоростью. А место фактического размещения данных определяется RAID-системой.
(рис 12.6) Внешняя подсистема RAIDВнешние RAID-системы иногда называют "RAID в шкафу" или "RAID в ящике", потому что расслоение RAID производится внутри корпуса с дисками. Такие внешние подсистемы RAID обладают многими достоинствами. Они являются не только идеальным решением для MSCS, но и вообще, универсальным лучшим решением. Ниже перечислены достоинства систем "RAID в шкафу":
Удобство при подключении. При использовании внутренних RAID-систем вам потребуются многочисленные кабели – по кабелю для каждого шкафа с дисками, выходящему из каждого RAID-контроллера. А если пользоваться внешним RAID, то вам понадобится проложить только один кабель от адаптера главной шины до RAID-контроллера и кабели от контроллера, формирующие соединение "гирляндой" (daisy chain) к каждому шкафу с дисками (см. рис. 12.7). При помощи внешних RAID-систем можно без труда соединять сотни дисководов.
Обеспечивается избыточность RAID. Многие внешние решения RAID разрешают одному контроллеру памяти осуществлять коммуникацию и с основным, и с вторичным RAID-контроллером, что обеспечивает полное резервирование и переход по отказу к другому узлу.
Обеспечивается кэширование в кластерах. Применяя внешние решения RAID, кэширование можно выполнить гораздо более просто. При использовании внешних RAID, вы можете разрешать применение как кэширования, так и средств для отказоустойчивости, не беспокоясь о согласованности работы кэшей из разных контроллеров (потому что имеется только один кэш и один контроллер). Фактически, при применении внешнего RAID, использование кэша записи является безопасным. При кэшировании данных от реляционных СУБД некоторый риск все же сохраняется, но при применении внешнего RAID он уменьшается. Обязательно проверьте, что поставщик ваших внешних RAID-систем поддерживает зеркальное дублирование кэшей. Зеркальное дублирование кэшей обеспечивает отказоустойчивость кэш-памяти в случае отказа ее микросхем.
Поддержка большого количества дисковых накопителей. Для работы больших или высокопроизводительных систем иногда требуется конфигурировать дополнительные дисковые накопители. То, что дисковых накопителей может потребоваться много, вы знаете из лекции 6, где вы учились планировать мощность системы, и еще узнаете в лекции 36, посвященной типичным проблемам с производительностью. Применяя внешние устройства RAID, вы сможете присоединять сотни дисков к одному адаптеру главной шины, а внутренние RAID-системы, как и системы SCSI, ограничивают вас несколькими дюжинами дисков на один контроллер.
(рис 12.7) Подключения кабелей внутренних RAID-систем в сравнении с подключением кабелей внешних RAID-системПри выборе из дисковых подсистем, поддерживающих кластеризацию, доступных в настоящее время, при работе с большими кластерами лучше всего применять шкафы – внешние RAID. Конечно, свою роль могут играть вопросы их стоимости, и некоторые кластеры могут быть не настолько большими, чтобы реализовывать их как внешние RAID. Но в долгосрочной перспективе применение внешних RAID-систем обеспечит для вашего кластера наилучшую производительность, надежность и управляемость.
Категории приложений, работающих
с кластерами
Приложения, которые работают на системах с MSCS можно разделить на следующие четыре категории. Эти категории приложений и их взаимодействие с MSCS показаны на рис. 12.8.
(рис 12.8) MSCS и категории приложенийПриложения, не рассчитанные на кластеризацию. Приложения этой категории никак не взаимодействуют с MSCS. Хотя при обычных условиях они могут работать нормально, но при отказах узлов они могут заработать неверно, что воспрепятствует их переходу на другой узел кластера.
Приложения, рассчитанные на кластеризацию. Эти приложения рассчитаны на работу совместно с MSCS. Они могут воспользоваться достоинствами MSCS, повышающими производительность и масштабируемость. Они правильно реагируют на события, происходящие на кластере, и при отказе компонент и переходе на другой узел кластера, как правило, им не требуется уделять большого внимания (а иногда и вообще никаких забот не потребуется). SQL Server может служить примером таких приложений, рассчитанных на кластеризацию.
Приложения для управления кластером. Приложения этой категории служат для наблюдения за кластером и для управления окружением MSCS.
Нестандартные типы ресурсов. Эти приложения являются нестандартными ресурсами управления кластером для приложений, служб и устройств.
Режимы MSCS
Поддержку кластеров для SQL Server и MSCS можно запускать в различных режимах. В активно-пассивном режиме один сервер находится в состоянии ожидания, готовый принять на себя работу в случае отказа первичного сервера. В активно-активном режиме каждый сервер работает со своей базой данных SQL Server. В случае отказа любого из серверов другой сервер берет работу на себя, и дело кончается тем, что один сервер работает с двумя базами данных. В этом разделе мы рассмотрим преимущества и недостатки применения каждого из этих двух режимов.
Активно-пассивные кластеры
В активно-пассивных кластерах для работы приложений SQL Server применяется первичный узел (primary node), а сервер – вторичный узел (secondary node) является запасным, резервным сервером (рис. 12.9).
(рис 12.9) Активно-пассивный кластерВ этой конфигурации один из серверов практически не используется. Этот сервер может месяцами стоять без дела. Фактически, во многих случаях резервный сервер вообще никогда не будет использоваться. И поскольку он не используется, его могут расценивать как дорогостоящее оборудование, простаивающее без дела. Так как этот сервер не может выполнять другие задачи, то для удовлетворения нужд пользователей придется покупать другое оборудование, что делает активно-пассивный режим потенциально неэкономичным.
Но, несмотря на эту неэкономичность, активно-пассивный режим имеет свои достоинства. В этой конфигурации при отказе первичного узла все ресурсы вторичного узла полностью готовы к тому, чтобы взять на себя его работу. Такая надежность важна, когда вы выполняете критически важные приложения, для которых требуются заданные показатели производительности или времени отклика. Если вы находитесь именно в такой ситуации, то тогда, возможно, активно-пассивный режим будет правильным решением.
Настоятельно рекомендуется, чтобы аппаратура вторичного узла была точно такая же, как и первичного узла (т.е., чтобы у первичного и вторичного узлов были бы одинаковые объемы оперативной памяти, одинаковые количество и типы центральных процессоров и т.д.). Если узлы имеют одинаковую аппаратуру, то вы можете быть уверены в том, что вторичная система будет работать почти с такой же скоростью, как и первичная. А иначе вы в случае перехода по отказу можете столкнуться с потерей производительности.
Активно-активные кластеры
В активно-активных кластерах выполнять приложения могут оба сервера, причем каждый сервер служит вторичным сервером для другого узла (см. рис. 12.10).
(рис 12.10) Активно-активный кластерКаждый из этих двух серверов работает сразу и как первичный узел для некоторых приложений, и как вторичный узел для приложений другого сервера. Эта конфигурация наиболее эффективна в экономическом плане, потому что никакое оборудование не простаивает, ожидая отказа другой системы. Обе системы активно обслуживают пользователей. Кроме того, один пассивный узел может служить вторичным узлом для нескольких первичных узлов.
Недостатком активно-активной конфигурации является лишь то, что в случае отказа производительность выжившего узла существенно снизится, потому что нагрузка на него вырастет. Выжившему узлу теперь придется исполнять не только приложения, которые работали на нем первоначально, но и приложения с первичного узла. Во многих случаях это снижение производительности окажется неприемлемым, и тогда придется применять активно-пассивную конфигурацию.
Примеры кластеризованных систем
В этом разделе мы рассмотрим четыре примера кластеризованных систем, применяющих MSCS. Эти примеры помогут вам решить, какой тип кластеров лучше всего соответствует вашим потребностям и окружению.
Пример 1 – система с высокой готовностью со статическим балансированием нагрузки
Такие системы обеспечивают высокую готовность для кластеров, на которых исполняется много приложений. Это, однако, достигается за счет некоторого падения производительности в случаях, когда на линии остается один узел. Такие системы обеспечивают максимум полезного использования аппаратных ресурсов, потому что доступен каждый из узлов. Конфигурация такого кластера показана на рис. 12.11 (это – активно-активная конфигурация кластера).
(рис 12.11) Кластер с высокой готовностью, со статическим балансированием нагрузкиКаждый из узлов этого кластера представляет для сети свой собственный набор ресурсов (в форме виртуального сервера) и сконфигурирован с некоторым избытком мощности, чтобы быть способным исполнять приложения другого узла в случае перехода по отказу. Готовность обслуживания клиентов отказавшего узла будет зависеть от имеющихся ресурсов и мощности сервера.
Пример 2 – система с "горячим резервированием" с максимальной готовностью
Такие системы обеспечивают максимальную готовность и производительность для всех системных ресурсов. Недостатком этой конфигурации является то, что денежные затраты в оборудование почти никогда не работают. Один из узлов работает как первичный узел и исполняет все клиентские запросы. А другой узел простаивает. Этот простаивающий узел служит для "горячего резервирования" и становится доступен только в случае перехода по отказу. Если первичный узел отказывает, то узел для горячего резервирования немедленно принимает на себя все операции и продолжает обслуживание клиентских запросов. Эта конфигурация показана на рис. 12.12.
Данная конфигурация лучше всего подходит для наиболее критически важных приложений. Если ваша фирма зависит от продаж через Интернет, то вашему серверу для веб-торговли, возможно, следовало бы работать в этой конфигурации. От наличия и работоспособности системы зависит бизнес фирмы, и это оправдывает расходы на простаивающее оборудование.
(рис 12.12) Система с "горячим резервированием" с максимальной готовностью
Пример 3 – кластеризация части сервера
Конфигурация с кластеризацией части сервера является примером того, насколько гибкой может быть MSCS. В этой системе переход по отказу разрешен лишь для некоторых приложений. Как показано на рис. 12.13, вы можете задать, чтобы некоторые приложения оставались доступными при отказе узла, а некоторые – нет.
(рис 12.13) Кластеризация части сервераЭта конфигурация идеальна для случаев, когда вы желаете максимально повысить полезное использование оборудования, но в то же время хотите ограничить расходование мощностей, служащих для подстраховки критически важных приложений. Кроме того, такая конфигурация поддерживает работу приложений, не рассчитанных на кластеризацию, и вместе с тем обеспечивает переход по отказу для приложений, рассчитанных на кластеризацию.
Пример 4 – только виртуальные серверы,
без переходов по отказам
Наш последний пример на самом деле не является кластером, но в нем используется служба MSCS и ее поддержка виртуальных серверов. Эта конфигурация помогает организовывать ресурсы и представлять их в сети (рис. 12.4). Применение виртуальных серверов позволяет задавать для ресурсов осмысленные, описательные имена, а не пользоваться обычным списком имен серверов. Кроме того, MSCS станет автоматически перезапускать приложения и ресурсы после отказов сервера. Эта возможность полезна для приложений, не имеющих внутренних механизмов для их перезапуска. Реализация этой конфигурации также станет для вас отличной тренировкой перед реализацией настоящей кластеризации. Создав виртуальные серверы для одного узла, вы без труда сможете добавить еще один узел, не меняя настроек серверов.
(рис 12.14) Только виртуальные серверы, без переходов по отказам
Конфигурирование SQL Server
для работы на кластере
После того как вы инсталлировали и сконфигурировали MSCS, следующим шагом должно стать конфигурирование SQL Server для работы на кластере. Как уже говорилось, SQL Server является приложением, рассчитанным на кластеризацию, специально спроектированным для применения кластеризации. В данном разделе сначала рассмотрим вопросы планирования кластера, а затем расскажем о ваших действиях, необходимых для конфигурирования SQL Server на кластере.
Примечание. Чтобы пользоваться всеми достоинствами MSCS, приложения должны быть рассчитанными на кластеризацию. Как уже говорилось, такие приложения понимают архитектуру кластера и способны к переходу на другой узел в случае отказа. Не все приложения рассчитаны на кластеризацию и могут работать с кластеризацией сразу в том виде, как они были выпущены.
Планирование конфигурации
Первый шаг в планировании кластера SQL Server задает тип используемого оборудования и режим, в котором будет работать кластер. Кластер может быть составлен из компьютеров в различных аппаратных конфигурациях и может работать как в активно-пассивном, так и в активно-активном режиме. От этого режима зависят количество и тип необходимого вам оборудования.
Активно-пассивные конфигурации кластера должны быть составлены из одинаковых, идентичных компьютеров, каждый из которых способен обрабатывать всю рабочую нагрузку. Так как при обычной работе в активно-пассивном режиме вторичный компьютер не используется, а после отказа не используется первичный компьютер, то производительность виртуального сервера после отказа не изменится. Пользователи не заметят никакого изменения в производительности, потому что после отказа первичного компьютера произойдет переход к точно такому же вторичному компьютеру.
Активно-активные конфигурации кластера должны состоять из двух компьютеров, каждый из которых поддерживает какую-то свою собственную рабочую нагрузку. В данной ситуации после отказа обе эти нагрузки станут обрабатываться одним из компьютеров, что снизит производительность для всех пользователей. При тщательном планировании, производительность, обеспечиваемая выжившим компьютером, останется в допустимых пределах, но гарантировать это нельзя. При планировании активно-активной конфигурации кластера вы должны быть готовы к некоторому падению производительности и возможности избавиться от некоторых служб или предупредить пользователей о том, что в случаях отказов производительность будет снижаться.
Следующим вашим действием, которое надо будет выполнить при конфигурировании SQL Server для работы на кластере, станет проверка и, возможно, изменение некоторых настроек SQL Server. Мы расскажем про эти настройки в трех следующих разделах.
Задание времени восстановления
При настройке SQL Server вы могли задать какое-либо ненулевое значение для параметра конфигурации recovery interval (интервал восстановления) (нулевое значение задано по умолчанию). Изменение этой настройки увеличит время между контрольными точками и повысит производительность, однако снизит и время восстановления (после перехода по отказам система должна восстанавливаться). В кластеризованной системе применяемое по умолчанию нулевое значение, означающее автоматическое конфигурирование, не должно быть изменено. (Главной причиной применения MSCS является наличие компьютера, на который может быть перенесена работа другого компьютера, и это перевешивает вопросы, относящиеся к производительности.) При такой настройке контрольные точки будут происходить примерно раз в минуту, и максимальное время восстановления составит тоже около одной минуты.
Дополнительная информация. Для дополнительной информации об этом обратитесь к предметному указателю Books Online и посмотрите там "recovery interval option".
Примечание. При выполнении контрольных точек все данные, измененные в кэше SQL Server, записываются на диск. Все измененные данные, которые не были записаны на диск в момент отказа системы, SQL Server сотрет при запуске во время повтора подтвержденных транзакций и отката неподтвержденных транзакций.
Конфигурирование SQL Server
для активно-пассивных кластеров
Для создания активно-пассивной конфигурации кластера вам, возможно, понадобится изменить одну из настроек SQL Server. Если вторичный сервер идентичен первичному серверу, то ничего менять не надо. Если вторичный сервер имеет меньше ресурсов, чем первичный сервер, то нужно задать значение 0 для параметра конфигурации SQL Server min server memory. Благодаря такой настройке SQL Server распределит память исходя из системных ресурсов, имеющихся в наличии.
Дополнительная информация. Для дополнительной информации об этом обратитесь к предметному указателю Books Online и посмотрите там "min server memory option".
Конфигурирование SQL Server для активно-активных кластеров
Для создания активно-пассивной конфигурации кластера вы обязательно должны задать значение 0 для параметра конфигурации SQL Server min server memory. Благодаря такой настройке SQL Server распределит память исходя и системных ресурсов, имеющихся в наличии. Если этот параметр конфигурации задан как Manual, то SQL Server может распределить слишком много памяти после перехода по отказу. Так как в операционной системе Windows 2000 применяется виртуальная память, то может случиться так, что памяти будет распределено больше имеющегося объема физической памяти. На самом деле, такая проблема возникает довольно часто и становится причиной подкачки страниц памяти. Например, если у каждого из компьютеров распределено 75% от его системной памяти и произойдет переход по отказу, то для суммарного обслуживания SQL Server потребуется 150% от доступной памяти, из-за чего работа системы практически остановится.
Инсталляция SQL Server для работы на кластере
Процесс инсталляции SQL Server для работы на кластере аналогичен процессу инсталляции SQL Server, описанному в лекции 7. Прежде чем запустить процесс инсталляции для работы на кластере, вы должны решить, где именно будет инсталлироваться SQL Server. Вы должны будете установить файлы SQL Server на разделяемом дисковом накопителе, находящемся под управлением первичного сервера. Вы должны будете задать и путь инсталляции SQL Server, и путь инсталляции главной базы данных (master database) так, чтобы они указывали на этот разделяемый дисковый накопитель. Вы также должны задать сетевой протокол, под которым будет работать кластер. Ниже кратко перечислены действия по инсталляции SQL Server для работы на кластере.
Вставьте свой компакт-диск SQL Server в привод для компакт-дисков вашего сервера. Если ваша операционная система настроена на автоматический запуск компакт-дисков, то появится главное диалоговое окно начальной установки Microsoft SQL Server 2000 (рис 12.15(рис 12.15) Диалоговое окно начальной установки SQL Server
Если у вас не установлены необходимые дополнительные пакеты операционной системы (service packs) или требуемая версия Microsoft Internet Explorer, или если вы просто хотите посмотреть перечень программных компонент, необходимых для инсталляции, то нажмите на SQL Server 2000 Prerequisites, и тогда откроется диалоговое окно SQL Server 2000 Prerequisites (Предварительные условия для SQL Server 2000).Нажмите на обозначение нужной операционной системы, и тогда появится список программных компонент, необходимых для нее. Затем нажмите на обозначение программной компоненты, которую вы хотите инсталлировать. Если все необходимое программное обеспечение у вас уже установлено, то переходите к шагу 3.
Примечание. Инсталляция MSCS должна быть выполнена до запуска инсталляции SQL Server.
Нажмите на SQL Server 2000 Components. Появится стартовое окно мастера SQL Server 2000 Installation Wizard. Если у вас работают какие-либо другие программы Windows, то их нужно закрыть. Для продолжения процесса инсталляции нажмите на Next.
В экране Computer Name нажмите на Virtual Server и введите с клавиатуры имя виртуального сервера (рис 12.16(рис 12.16) Экран Computer Name
Появится экран User Information (Информация о пользователе). Проверьте правильность своего имени и названия вашей фирмы. Для продолжения нажмите на Next.
Появится экран Software License Agreement (Лицензионное соглашение об использовании программного обеспечения). Нажмите на Yes, чтобы согласиться с условиями лицензионного соглашения и продолжить процесс инсталляции.
В экране Setup введите с клавиатуры 25-символьный ключ компакт-диска, напечатанный на желтой наклейке в инструкции, прилагаемой к компакт-диску или на футляре компакт-диска. Для продолжения нажмите на Next.
Затем появится экран Failover Clustering (Кластеризация с переходом по отказу) (рис. 12.17). Введите IP-адрес для виртуального сервера, а затем нажмите на Add. MSCS предоставит адрес подсети. Для продолжения нажмите на Next.
В экране Cluster Management (Управление кластером) посмотрите на определение кластера, которое предлагает SQL Server. По умолчанию в качестве предпочтительного узла задается локальный компьютер. Все остальные допустимые узлы будут показаны в окне Additional Node (Дополнительный узел). Проверьте настройки и на Next для продолжения процесса инсталляции.
Когда появится экран Remote Information (Информация для дистанционного доступа), введите с клавиатуры пользовательский идентификатор администратора и пароль, которые будут действительны для всех выбранных узлов этого кластера.
(рис 12.17) Экран Failover Clustering
В экране Instance Name (Имя экземпляра) согласитесь со стандартным именем или задайте именованный экземпляр SQL Server. Если вы хотите задать именованный экземпляр, то снимите флажок Default (По умолчанию) и введите с клавиатуры желаемое имя экземпляра. Для продолжения нажмите на Next.Примечание. Экземпляры не могут получать такие имена, как DEFAULT, MSSQLSERVER и любые имена, совпадающие с зарезервированными ключевыми словами SQL Server.
В экране Setup Type задайте нужный вам тип инсталляции. По умолчанию программа установки SQL Server инсталлирует SQL Server в первый доступный диск – разделяемый ресурс. Если вы хотите инсталлировать SQL Server в другое место, то нажмите на Browse под заголовком Data Files и задайте путь к другому диску – разделяемому ресурсу. Для продолжения нажмите на Next.
Затем появится экран Authentication Mode (Режим аутентификации) (рис. 12.18). Настройки, заданные в этом окне, задают уровень безопасности вашей инсталляции SQL Server. Вы можете выбрать использование Windows Authentication Mode (Режим аутентификации Windows) либо Mixed Mode (Смешанный режим). При выборе Windows Authentication Mode все права пользователей в отношении базы данных наследуются из настроек Windows User Security. При выборе Mixed Mode вы можете задавать и администрировать настройки безопасности пользователей для базы данных независимо от настроек для Windows. Если вы выберете Mixed Mode, то вы должны задать пароль для учетной записи sa (системного администратора SQL Server). Вы можете оставить этот пароль пустым, но это серьезно ухудшит защищенность вашей инсталляции SQL Server.
В экране Start Copying Files (Запустить копирование файлов) нажмите на Next.
Появится экран Licensing Mode (Лицензионный режим). Имеется два способа для лицензирования ваших клиентов SQL Server – на сервер (Per Server) или на посадочные места (Per Seat). При использовании лицензии на сервер требуется назначать каждую Лицензию клиентского доступа (Client Access License) конкретному серверу и такая лицензия допускает только одно соединение с этим сервером. Максимальное число компьютеров-клиентов, которые могут соединяться с сервером в любой момент времени равно количеству лицензий Client Access License, выданный вами этому серверу.
(рис 12.18) Экран Authentication ModeПри использовании лицензии на количество посадочных мест требуется лицензия Client Access License для каждого компьютера-клиента, который будет осуществлять доступ к любому из ваших серверов, исполняющих SQL Server. После того как для компьютера будет получена лицензия, он сможет осуществлять доступ к любому компьютеру в сети, на котором исполняется SQL Server 2000 без какой-либо дополнительной оплаты.Если вы не можете решить, какой режим лицензирования выбрать, нажмите на Per Server. Лицензионное соглашение разрешает возможность однократной, необратимой замены лицензии "на сервер" на лицензию "на посадочные места".
Чтобы начать инсталляцию приложений и файлов данных SQL Server, нажмите на Continue. Программа установки SQL Server инсталлирует на ваш компьютер нужные файлы и сконфигурирует необходимые компоненты. Инсталляция может потребовать лишь нескольких минут либо может продлиться дольше (это зависит от быстродействия вашего компьютера).
Когда появится экран Setup Complete (Установка завершена), выберите опцию для перезапуска вашего компьютера и нажмите на Finish.
Как видите, конфигурирование SQL Server для работы на кластере не представляет трудностей. После того как вы сконфигурируете кластер, больше вам не придется ничего конфигурировать. Клиенты будут осуществлять доступ к SQL Server при помощи IP-адресов, переназначаемых в ходе выполнения перехода по отказу. Остальные вопросы, относящиеся к программированию, на которые вы должны обратить внимание, будут рассмотрены в разделе "За рамками MSCS".
Применение трехзвенных приложений
Большинство приложений устанавливают непосредственные соединения с базой данных. Такие приложения отсылают транзакции, на которые отвечает база данных. В случае отказа системы срок обработки транзакций истекает, и приложение тоже отказывает. Во многих случаях настройка, задающая такой способ работы, оказывается лучшим выбором, т.е. так и надо, чтобы при незавершении транзакции приложение бы отказывало. Но если вы создали кластер для переходов по отказам, то, в случае отказа, база данных довольно скоро снова станет доступной и сможет отвечать на транзакции. При тщательном проектировании трехзвенных приложений можно добиться, чтобы приложения смогли воспользоваться этими возможностями быстрого восстановления обслуживания.
У трехзвенных приложений средний уровень может распознать, что сервер прекратил отвечать, а затем подождать заданный промежуток времени и повторить отправку транзакции. Для пользователя это выразится в увеличении времени ожидания исполнения транзакции, но такая задержка все же будет лучше, чем отказ в исполнении транзакции. Для такой работы приложение должно уметь распознавать отказ соединения с сервером и понимать необходимость возобновления соединения. Приложение также должно информировать конечного пользователя об этом процессе, показывая пользователю окно с сообщением или как-нибудь иначе.
Трехзвенные приложения способны обеспечивать "гладкие" переходы по отказам. Такие приложения должны быть рассчитаны на работу с кластеризацией и должны распознавать ситуации, когда виртуальный сервер должен будет вскоре включиться и начать функционировать. Применение трехзвенной схемы в сочетании с MSCS позволяет добиться надежности в работе приложений и в хранении данных.
За рамками MSCS
Мы с вами изучили основы работы MSCS и работы SQL Server в этой архитектуре. Также мы узнали, как SQL Server может выжить на некоторых типах катастрофических отказов оборудования и программного обеспечения, как можно выполнить резервное копирование SQL Server и быстрое исполнение транзакций. Для достижения такой степени отказоустойчивости одной лишь службы MSCS будет недостаточно, понадобятся и другие меры. Две таких важных меры – это выполнение регулярных и эффективных резервных копирований и разработка плана восстановления после чрезвычайных ситуаций, про это будет подробно рассказано в лекциях 32 и 33. Резервное копирование не может быть заменено службами кластеризации и RAID-системами. Во многих случаях, если система разрушится, а резервной копии у вас не будет, никакие эти технологии не помогут. Ниже перечислены некоторые из таких ситуаций.
Отказы оборудования. В некоторых, достаточно редких случаях, отказы оборудования могут повредить данные. При отказе первичного сервера, повредившего базу данных, вторичный сервер станет работать с поврежденной базой данных.
Отказы программного обеспечения. Независимо от того, насколько программное обеспечение было хорошо спроектировано и оттестировано, в него могут закрасться ошибки. Если одна из таких редких программных ошибок повредит базу данных, то переход по отказу к такой базе данных будет невозможен, а RAID-технология просто обеспечит отказоустойчивое хранение поврежденных данных.
Человеческие ошибки. Довольно часто пользователи по ошибке стирают свои данные. От этого не спасет ни технология кластеризации, ни RAID.
В лекциях 32 и 33 дан более подробный материал о планировании подготовки к катастрофам и о том, как обеспечивать выживаемость ваших систем. Приведенные выше примеры просто иллюстрируют тот факт, что кластеризация и переходы по отказам предназначены для решения специфических задач и являются лишь двумя из многих средств борьбы за обеспечение бесперебойного доступа к данным и целостности данных.
Заключение
В этой лекции вы узнали о разных конфигурациях кластеризации, об оборудовании и программном обеспечении, необходимых для создания кластеров, а также о процессе конфигурирования SQL Server для работы на кластерах. Теперь вы понимаете, что хоть служба MSCS и поможет вам в некоторых ситуациях, но она не обеспечит полную, окончательную отказоустойчивость вашей системы. Вы должны также применять отказоустойчивую дисковую подсистему и реализовать схему резервного копирования. MSCS, в сочетании с хорошей стратегией преодоления катастроф, может обеспечить максимальную готовность и надежность системы. В следующей лекции мы рассмотрим T-SQL – усовершенствованную версию языка SQL, доступную в SQL Server 2000.