Понимание того, как работают кластерные кворумы
Основываясь на конференциях, которые я посетил, и электронных письмах, которые я получаю, мне всегда кажется, что, когда дело доходит до кластеризации, кворумы являются одной из наиболее часто неправильно понимаемых тем. Однако для эффективного администрирования кластера необходимо понимать, что такое кворум, и знать о различных типах кворумов. В этой статье я объясню, что такое кворум и что он делает. Так как это, как правило, сбивает с толку многих людей, я постараюсь, чтобы мои объяснения были как можно более простыми.
Основы кластеризации
Прежде чем я смогу рассказать о том, что такое кворум и что он делает, вам нужно немного узнать о том, как работает кластер. Серверные продукты Microsoft поддерживают два основных типа кластеризации; кластеры серверов и балансировка сетевой нагрузки (NLB). Философия дизайна, стоящая за этими двумя типами серверов, не может быть более разной, но одна вещь, которая объединяет оба дизайна, — это концепция виртуального сервера.
Термин «виртуальный сервер» имеет несколько различных значений, но при кластеризации он имеет особое значение. Это означает, что пользователи (и другие компьютеры) видят кластер как единую машину, даже если он состоит из нескольких серверов. Единственная машина, которую видят пользователи, — это виртуальный сервер. Физические серверы, составляющие виртуальный сервер, называются узлами кластера.
Балансировка сетевой нагрузки
Эти два разных типа кластеров имеют две совершенно разные цели. Балансировка сетевой нагрузки известна как совместное использование всего кластера. Он получил такое имя, потому что приложение может работать на всех узлах кластера одновременно. В этом типе кластера каждый сервер запускает собственную индивидуальную копию приложения. Однако возможно, что каждый сервер может подключаться к общей базе данных.
Кластеры балансировки сетевой нагрузки чаще всего используются для размещения высоконагруженных веб-сайтов. В архитектуре балансировки сетевой нагрузки каждый из узлов кластера поддерживает собственную копию веб-сайта. Если один из узлов выйдет из строя, другие узлы в кластере восполнят слабину. Если производительность начнет снижаться по мере увеличения спроса, просто добавьте в кластер дополнительные серверы, и эти серверы разделят рабочую нагрузку. Кластер балансировки сетевой нагрузки равномерно распределяет текущую рабочую нагрузку по всем активным узлам кластера. Пользователи обращаются к виртуальному серверу, определенному кластером, и запрос пользователя обслуживается наименее загруженным узлом.
Кластеры серверов
Другой тип кластера известен просто как серверный кластер. Кластер серверов известен как архитектура без общего доступа. Этот тип кластера подходит для приложений, которые нельзя распределить по нескольким серверам. Например, вы не можете запустить сервер базы данных на нескольких узлах, потому что каждый узел будет получать обновления независимо, и базы данных не будут синхронизированы.
В кластере серверов одновременно активен только один узел. Другой узел или узлы помещаются в своего рода режим ожидания. Они ждут, чтобы вступить во владение, если активный узел выйдет из строя.
Как вы помните, я говорил, что кластеры серверов используются для приложений, которые нельзя распределить по нескольким узлам. Причина, по которой узел может взять на себя выполнение приложения при сбое активного узла, заключается в том, что все узлы в кластере подключены к общему механизму хранения. Этот общий механизм хранения может быть массивом RAID, сетью хранения или чем-то еще. Фактический тип носителя не имеет значения, но концепция общего хранилища чрезвычайно важна для понимания того, что такое кворум. Фактически, кластеры серверов — это единственный тип кластеризации, в котором используются кворумы. Балансировка сетевой нагрузки не использует кворумы. Поэтому оставшаяся часть этого обсуждения будет посвящена кластерам серверов.
Что такое кворум?
Хорошо, теперь, когда я дал вам всю необходимую исходную информацию, давайте перейдем к большому вопросу. Что такое кворум? Проще говоря, кворум — это база данных конфигурации кластера. База данных находится в файле с именем MSCSquolog.log. Кворум иногда также называют журналом кворума.
Хотя кворум — это всего лишь база данных конфигурации, у него есть две очень важные задачи. Прежде всего, он сообщает кластеру, какой узел должен быть активным. Подумайте об этом на минуту. Для того чтобы кластер работал, все узлы должны функционировать таким образом, чтобы виртуальный сервер функционировал желаемым образом. Для этого каждый узел должен иметь кристально ясное понимание своей роли в кластере. Здесь в игру вступает кворум. Кворум сообщает кластеру, какой узел в данный момент активен, а какой узел или узлы находятся в режиме ожидания.
Крайне важно, чтобы узлы соответствовали статусу, определяемому кворумом. На самом деле это настолько важно, что Microsoft разработала службу кластеризации так, что если узел не может прочитать кворум, этот узел не будет подключен к сети как часть кластера.
Еще одна вещь, которую делает кворум, — это вмешательство в случае сбоя связи между узлами. Обычно каждый узел в кластере может взаимодействовать с любым другим узлом в кластере через выделенное сетевое соединение. Однако, если это сетевое подключение прервется, кластер будет разделен на две части, каждая из которых будет содержать один или несколько функциональных узлов, которые не смогут взаимодействовать с узлами, существующими по другую сторону от сбоя связи.
Когда происходит этот тип сбоя связи, кластер считается разделенным. Проблема в том, что оба раздела имеют одну и ту же цель; чтобы приложение работало. Однако приложение не может быть запущено на нескольких серверах одновременно, поэтому должен быть способ определить, какой раздел должен запускать приложение. Вот тут-то и возникает кворум. Разделу, который «владеет» кворумом, разрешено продолжать выполнение приложения. Другой раздел удаляется из кластера.
Типы кворумов
До сих пор в этой статье я описывал тип кворума, известный как стандартный кворум. Основная идея стандартного кворума заключается в том, что это база данных конфигурации для кластера, которая хранится на общем жестком диске и доступна для всех узлов кластера.
В Windows Server 2003 Microsoft представила новый тип кворума, называемый кворумом набора узлов большинства (MNS). Что действительно отличает кворум MNS от стандартного кворума, так это тот факт, что каждый узел имеет свою собственную локально хранимую копию базы данных кворума.
На первый взгляд может показаться, что у каждого узла есть собственная копия базы данных кворума, но это действительно так, потому что это открывает двери для кластеризации на большие расстояния. Стандартные кластеры обычно непрактичны на больших расстояниях из-за проблем, связанных с эффективным доступом к центральной базе данных кворума. Однако, когда каждый узел имеет собственную копию базы данных, географически распределенные кластеры становятся гораздо более практичными.
Хотя кворумы MNS предлагают некоторые интересные возможности, они также имеют некоторые серьезные ограничения, о которых вы должны знать. Ключом к пониманию MNS является знание того, что все работает на основе большинства. Одним из примеров этого является то, что при обновлении базы данных кворума необходимо обновить каждую копию базы данных. Обновление не считается выполненным до тех пор, пока не будет обновлено более половины баз данных ((количество узлов / 2) +1). Например, если в кластере пять узлов, то три узла будут считаться большинством. Если производилось обновление кворума, оно не считалось действительным до тех пор, пока не были обновлены три узла. В противном случае, если два или меньше узлов были обновлены, большинство узлов по-прежнему будут иметь старую информацию о кворуме, и, следовательно, старая конфигурация кворума все еще будет действовать.
Другой способ, которым кворум MNS зависит от большинства, заключается в запуске узлов. Большинство узлов ((количество узлов /2) +1) должны быть подключены к сети, прежде чем кластер запустит виртуальный сервер. Если подключено меньше, чем большинство узлов, то говорят, что кластер «не имеет кворума». В таком случае необходимые службы будут перезапускаться до тех пор, пока не будет представлено достаточное количество узлов.
Одна из самых важных вещей, которые нужно знать о MNS, заключается в том, что в кластере должно быть не менее трех узлов. Помните, что большинство узлов должны работать постоянно. Если в кластере всего два узла, то большинство рассчитывается как 2 ((2 узла / 2) +1)-2. Следовательно, если один узел выйдет из строя, весь кластер выйдет из строя, потому что у него не будет кворума.
Вывод
В этой статье я объяснил различия между кластером балансировки сетевой нагрузки и кластером серверов. Затем я перешел к описанию ролей, которые кворум играет в кластере серверов. Наконец, я продолжил обсуждение различий между стандартным кворумом и кворумом большинства узлов.