В предыдущих своих статьях, в том числе «Постро­ение кластера SQL Server 2008», опубликованной в Windows IT Pro/RE № 1 за 2010 год, я рассказывал о том, как установить SQL Server 2008 и SQL Server 2005 на кластер. В данной статье я хочу показать, как обновить существующий кластер SQL Server 2005 до SQL Server 2008. Как мы уже знаем, с момента выпуска SQL Server 2005 программа установки изменилась незначительно. То же относится и к процессу обновления. Приступая к его описанию, я рассмотрю для начала некоторые из основных понятий кластерного объединения, а затем расскажу об обновлении SQL Server 2005 на активном/пассивном узле кластера до SQL Server 2008.

Возможно, целью модернизации кластера SQL Server 2005 будет использование в будущем способности SQL Server 2008 выполнять последовательные обновления. Для SQL Server 2005 и более ранних версий процесс обновления кластера предполагает, что модифицируемый экземпляр выключен во время развертывания пакета обновлений. Имея дело с SQL Server 2008, вы обновляете каждый узел по отдельности, поэтому время простоя связано исключительно с перемещением рассматриваемого экземпляра сервера с одного узла кластера на другой и опирается на базовое свойство обработки отказов кластеров Windows.

Как работает кластеризация

Отказоустойчивый кластер есть фундаментальное понятие. Специальная служба выполняется на каждом узле кластера с целью контроля, функционирует ли служба SQL Server хотя бы на одном из узлов кластера (на физическом сервере). Если служба SQL Server не стартовала ни на одном из узлов, она запускается на произвольном узле кластера. То, что происходит в ходе этого процесса, «под капотом», чуть сложнее. При установке SQL Server в кластерной конфигурации его службы будут установлены на всех узлах кластера. SQL Server должен быть установлен с помощью специального средства установки для кластера: нельзя применить традиционную процедуру установки единичного сервера для установки на кластер. Если вы откроете приложение Services в меню Administrative Tools на любом узле кластера, то найдете там все службы SQL Server, перечисленные в руководстве по запуску. Когда вы перемещаете работающую службу с одного узла на другой, эта служба останавливается на исходном узле и стартует на другом узле кластера.

Если система, на которой выполняется служба SQL Server, при отказе аппаратных средств переходит в автономный режим, offline, то служба кластера на пассивном узле обнаружит это, возьмет в собственность службу SQL Server и другие ресурсы в ресурсной группе (такие, как IP-адреса, сетевые имена, дисководы) и возвратит данную службу в оперативный режим. На SQL Server 2000 этот процесс может занять от нескольких секунд до нескольких минут, в зависимости от того, сколько данных находится в журнале транзакций для отмены транзакций и их повторения. Редакции SQL Server Enterprise 2008 и Enterprise 2005 начнут работу гораздо раньше, поскольку они повторяют все завершенные транзакции, переводят базу данных в оперативный режим, а затем отменяют все незавершенные транзакции. Другие редакции SQL Server 2005 и SQL Server 2008 переводят базу данных в оперативный режим лишь после того, как незавершенные транзакции будут отменены, а затем повторены завершенные.

У кластерного варианта SQL Server 2008 немало преимуществ по продолжительности времени безотказной работы по сравнению с предыдущими версиями и отдельно стоящими серверами. Например, это способность поддерживать систему SQL Server в рабочем состоянии даже после сбоя оборудования. SQL Server 2008 также дает возможность делать последовательные обновления, модифицирующие версию на каждом узле кластера SQL Server независимо от других узлов, не делая систему SQL Server недоступной, независимо от того, как долго отрабатывается процесс установки: в течение нескольких минут или часа.

Требования к оборудованию и программному обеспечению

Кластеризация для SQL Server требует двух серверов и разделяемого хранилища. Хотя эти серверы не обязательно должны быть идентичными, настроить систему будет легче, если это так. По крайней мере, серверы должны иметь одинаковое количество процессоров и равные объемы оперативной памяти. С технической точки зрения требование, чтобы число процессоров и объемы памяти совпадали, не является безусловным, но их совпадение даст возможность проще оценить величину нагрузки, которую резервный сервер может принять. Применение «одинаковых» серверов также дает некоторое послабление: при условии, что у резервного сервера нет никаких иных задач, вам не нужно думать о том, на каком из серверов поддерживается в рабочем состоянии база данных, потому что функционирующие серверы идентичны.

Хранилище, применяемое для баз данных SQL Server, не может быть стандартным дисковым массивом RAID, который вы устанавливаете в сервер. Напротив, это должен быть отдельный массив, разработанный для использования в кластерах. Так, хотя Windows Server 2003 поддерживает использование массивов SCSI для кластеризации, Windows Server 2008 не поддерживает использование массивов SCSI для кластеризации серверов. При использовании Server 2008 в кластеризации следует массив Fibre Channel RAID, сеть Fibre Channel SAN или iSCSI SAN. Это может создать проблему при попытке кластеризации на Microsoft Hyper-V или на платформе VMWare, если у вас нет аппаратного решения iSCSI. Вы можете, однако, использовать программное обеспечение iSCSI Target for Microsoft Windows от StarWind, MySAN от Nimbus Data Systems или программное обеспечение Openfiler с открытым исходным кодом, чтобы представить локальные диски третьего сервера в качестве iSCSI-дисков к вашему кластеру. Следует проявлять осторожность в использовании программных реализаций серверов iSCSI, на их работу влияет конкретное оборудование, на котором установлены пакеты, а также топология сети.

Подобно SQL Server 2005, SQL Server 2008 в стандартной редакции или в редакции Enterprise поддерживает кластеризацию. Стандартная редакция SQL Server обеспечивает возможность работы двухузлового кластера, а редакция Enterprise поддерживает максимально возможное количество узлов, которое сможет обеспечить операционная система. Версия Windows 2003 Enterprise поддерживает вплоть до 8 узлов на кластер. Версия для центра данных SQL Server 2008 Datacenter поддерживает до 16 узлов включительно на платформах x86 или x64; при использовании процессоров Itanium SQL Server 2008 Datacenter поддерживает до 8 узлов в кластере.

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

Планирование обновления кластера

Когда вы строите новый кластер SQL Server, следует заблаговременно подготовить все жесткие диски. Однако, когда вы обновляете кластер SQL Server, жесткие диски уже подготовлены (при установке экземпляра SQL Server 2005). Для целей данной статьи я буду использовать кластер Windows, у которого имеется три приписанные к нему диска: диск E: будет содержать файлы с данными; диск L: будет хранить файлы системного журнала; на диске T: будет храниться база данных tempdb. Ваша конфигурация, скорее всего, отличается. Узлы кластера мы назовем SQL01A и SQL01B. Имя корня кластера будет SQL01, а экземпляр SQL Server будет работать под именем SQL01V01. На обоих узлах кластера запустим Windows 2003 в редакции Enterprise, поскольку кластер SQL Server 2005 вряд ли будут создавать на Server 2008. Если все же ваш кластер SQL Server 2005 работает под Server 2008, то процесс модернизации будет очень похожим, а любые различия я буду отмечать по мере описания процесса. Что касается IP-адресов, то узел SQL01A будет использовать общедоступный IP-адрес 10.3.0.31, а узел SQL01B — общедоступный IP-адрес 10.3.0.32. Для корня группы SQL01 будет применяться общедоступный IP-адрес 10.3.0.33, а SQL01V01 будет использовать общедоступный IP-адрес 10.3.0.34.

Прежде всего, до начала установки убедимся, что во все экземпляры SQL Server внесены все обновления и все требуемые текущие исправления Windows 2003 также развернуты. При обновлении кластера SQL Server 2005 используется метод пакетного обновления, подобный тому, которым устанавливается новый кластер SQL Server 2008. Сначала вы обновляете активный узел, а затем пассивный. Обновление кластера таким способом не даст выполнить обработку отказа с версии SQL Server 2008 на версию 2005 (это просто невозможно), а установщику на первом узле не требуется разрешения для запуска программы установки на втором узле. После того как вы обновили первый узел, не пытайтесь выполнить на нем обработку отказа (с переходом на второй узел кластера): до того момента, пока второй узел не будет модернизирован, он еще содержит версию SQL Server 2005 и не способен читать файлы данных SQL Server 2008.

Обновление кластера

При запуске программы установки SQL Server 2008 на кластере с уже установленным SQL Server 2005 вам будет предложено установить обычный набор обновлений Windows и. NET, которые программа SQL Server 2008 установила бы при каждой установке Windows 2003.

При обновлении кластера SQL Server 2005 до SQL Server 2008 программа установки старается удержать экземпляр сервера в рабочем состоянии как можно дольше и во время модернизации. Чтобы этого добиться, при обновлении следует запустить программу установки с пассивного узла. Если вы попытаетесь запустить этот процесс с активного узла, то программа установки предложит выполнить обработку отказа SQL Server до начала запуска модернизации, с переносом активного узла на другой узел.

После запуска программы установки будет выведена типичная форма центра установки SQL Server, с которой вы обычно сталкиваетесь в SQL Server 2008. В меню слева нажмите кнопку Installation: появится окно, показанное на экране 1.

 

Экран 1. Варианты установки кластера SQL Server 2008

 

Как правило, устанавливая SQL Server на новый кластер, нужно выбирать второй вариант, установку нового отказоустойчивого кластера SQL Server, New SQL Server failover cluster installation. Но, поскольку вы выполняете обновление, вам следует выбрать вариант номер четыре, обновление с SQL Server 2000 или с SQL Server 2005, Upgrade from SQL Server 2000 or SQL Server 2005. Запустится специальный мастер обновлений версии Upgrade to SQL Server 2008, который проведет вас через весь процесс модернизации. Прежде всего, мастер откроет Internet Explorer на странице обновлений Windows, чтобы вы могли убедиться: все текущие исправления установлены. После установки всех пропущенных исправлений вы сможете продолжить процесс обновления.

Вернемся к программе установки; далее мастер установки SQL Server начинает проверку правил поддержки установки setup support rules, чтобы убедиться, что установку можно продолжать. Эти проверки аналогичны тем, что программа установки выполняет при новом развертывании SQL Server 2008. В частности, требуется убедиться, что операционная система сервера поддерживается, что пользователь имеет права администратора и что компьютер не находится в ожидании перезагрузки. После того как эти проверки будут завершены, нажмите ОК, чтобы опять перейти к выполнению мастера.

На следующем экране вы должны ввести лицензионный ключ. Если у вас корпоративное лицензирование, то это поле уже будет заполнено. В противном случае вам придется ввести ключ, который предоставляет Microsoft на установочном носителе. Примите условия лицензирования на следующем экране и нажмите кнопку Next. После этого вам предложат установить файлы поддержки Setup Support Files. Щелкните кнопку Install для продолжения установки.

Теперь установщик запустит очередной набор проверок. Эти проверки должны гарантировать, что на кластере можно продолжать установку. После того как проверки будут завершены, нажмите кнопку Next. Следующая страница установки предлагает выбор: с какого экземпляра сервера вы начнете обновление. В данном случае выбирайте экземпляр по умолчанию (MSSQLSERVER). На экране 2 можно увидеть, что установщик определил все функции и возможности, которые были установлены на вашем экземпляре SQL Server 2005, а также его версию и редакцию, которую вы собираетесь обновлять (в нашем случае это редакция для разработчика Developer).

 

Экран 2. Выбор экземпляра SQL Server для обновления версии (Ugrade)

 

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

Как и в процессе обновления SQL Server с версии 2000 на 2005, так и при переходе с SQL Server 2005 на SQL Server 2008 вы должны обновить редакцию, которую используете, или перейти на старшую редакцию. Например, вы не можете обновить редакцию Enterprise сервера SQL Server 2005 до стандартной редакции SQL Server 2008. Вместо этого, если у вас установлен SQL Server 2005 Enterprise Edition, то вам следует переходить на SQL Server 2008 Enterprise Edition. После того как вы выбрали из раскрывающегося меню редакцию, до которой желаете обновить вашу систему, нажмите кнопку Next.

На следующем экране можно увидеть список устанавливаемых функций. Если в нем найдутся те, которые вы еще не выбрали, но хотели бы установить, то выберите их здесь и сейчас. Так, на экране 3 показано, что мы устанавливаем SQL Server, функцию полнотекстового поиска и функцию репликации SQL Server.

 

Экран 3. Выбор свойств для установки на экземпляре MSSQLSERVER

 

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

Далее вы увидите экран требований к объему дискового пространства. Этот экран позволяет вам убедиться, что на диске, на котором вы предполагаете установить программное обеспечение SQL Server, имеется достаточно свободного места для выполнения установки. Следующий экран (экран 4) позволяет вам выбрать доменные учетные записи, под которыми будут выполняться любые новые службы.

 

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

 

Служба SQL Server здесь не представлена, поскольку она не поддерживает изменения учетной записи, под которой выполняется. В данном случае служба SQL Server Browser была настроена для запуска под доменной учетной записью CORP\SQLServer. Так как служба полнотекстового поиска Full Text Search может выполняться и под доменной учетной записью и настроена как кластерная служба для SQL Server 2008, то она представлена в этом списке и, таким образом, вы можете настроить ее для выполнения под доменными учетными записями. Обычно можно выбирать ту же учетную запись для запуска этой службы, что и для запуска службы SQL Server, хотя это и не обязательно. После того как вы закончите с выбором необходимых имен пользователей и паролей для своего окружения (службы, перечисленные на вашем экране, могут отличаться в зависимости от того, что вы устанавливали), нажмите кнопку Next.

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

Вы также можете выбрать «восстановить каталог», что укажет SQL Server на необходимость выполнить восстановление полнотекстовых индексов после завершения установки. Этот процесс забирает (в зависимости от размеров данных, проиндексированных полнотекстовым индексом) много времени процессоров и ресурсов памяти. Однако полнотекстовые данные будут обрабатываться с разделителями слов SQL Server 2008. Хотя это и быстрее, чем импорт данных в процессе установки, однако, если ваши таблицы достаточно велики, то полнотекстовое индексирование может занять некоторое время и проявляться в неполных результатах поиска (при установленной функции полнотекстового поиска у базы данных).

Третий вариант состоит в том, чтобы очистить/переустановить каталоги, что для SQL Server означает отказ от файлов старой полнотекстовой базы данных и переустановку/восстановление этих каталогов заново. Метаданные полнотекстовых каталогов и индексов сохраняются; что до самих данных, то каталоги остаются пустыми до тех пор, пока вы вручную, по завершении модернизации, не запустите процесс их полной перестройки. Если вы выбрали этот вариант, то не получите никаких результатов, возвращаемых от полнотекстового поиска, пока не запустите процесс полного «заселения» каталогов данными. После того как вы определитесь с выбором относительно полнотекстовых индексов, нажмите кнопку Next.

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

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

Следующее окно выводит итоговую информацию о кластере (экран 5). На экране показаны оба узла кластера и то, что в данный момент они вместе представляют SQL Server 9.3.4035 (в зависимости от установленного пакета обновлений и набора исправлений этот номер сборки может варьироваться), а также какой узел активен (online). Как было сказано ранее, SQL Server будет переносить экземпляр сервера на другой узел, чтобы минимизировать время простоя.

 

Экран 5. Предупреждение о переводе активного узла SQL Server на другой узел кластера перед обновлением исходного узла

Просмотрев данный экран, нажмите кнопку Next, чтобы перейти к экрану Ready to Upgrade, на котором отражен список того, что будет устанавливаться. После того как вы просмотрели экран, нажмите кнопку Upgrade, чтобы начать процесс обновления. В зависимости от производительности вашего компьютера, размера полнотекстовой базы данных, от выбранных вариантов обновления (например, если полнотекстовый индекс установлен на вашем компьютере), а также от ряда других особенностей установки этот процесс может занять продолжительное время.

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

 

Экран 6. Отчет о модернизации кластера, показывающий, что обновление сервера на узле SQL10A завершено

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

Обновление второго узла

Когда вы запускаете программу установки на втором узле, то первое, что она сделает, — это выполнит установку исправлений. NET, что уже было сделано при обновлении на первом узле. После установки этих исправлений кластер SQL Server обработает отказ, перемещая базы данных на экземпляр SQL Server 2008, который сразу обновит версию этих баз данных до версии SQL Server 2008. После того как кластер совершил переход на обновленный узел, не остается возможности «отыграть» назад, таким образом, важно, чтобы вы выполняли эти действия тогда, когда будете полностью готовы.

После того как текущий узел совершит перезагрузку, можно возобновить программу установки SQL Server. Все выбираемые варианты для этого узла кластера должны совпадать с уже выбранными ранее аналогичными параметрами для первого узла кластера. По мере продвижения процесса вы будете возвращаться к отчету об обновлении кластера Cluster Upgrade Report, показывающему, что узел кластера SQL01A обновлен и что на узле SQL10B ожидается обновление, как показано на экране 7.

 

Экран 7. Отчет о модернизации кластера, показывающий, что узел SQL10B ожидает обновления

Когда процесс обновления завершится, вам будет предоставлен финальный отчет об обновлении кластера, приведенный на экране 8.

 

Экран 8. Отчет об обновлении, демонстрирующий, что версии сервера на обоих узлах кластера обновлены

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

Минимальное время простоя

Хотя процесс обновления кластера достаточно длительный, общее время простоя при обновлении кластера SQL Server 2005 до кластера SQL Server 2008 составляет лишь несколько секунд. Это позволит соблюдать условия соглашения об уровне обслуживания при проведении обновлений до SQL Server 2008, а также предоставить приложениям доступ к новым функциям и возможностям версии SQL Server 2008.

Денни Черри (dcherry@awarenesstech.com) — старший администратор баз данных и архитектор в компании Awareness Technologies, более 10 лет занимается управлением системами SQL Server. Имеет несколько сертификатов Microsoft и звание Microsoft MVP