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

Известны такие основные виды кластеров:

· Кластеры высокой доступности HA (High-availability), которые также называют отказоустойчивыми кластерами;

· Кластеры с балансировкой нагрузки LBC (Load balancing clusters);

· Кластеры для высокопроизводительных вычислений HPC (High performance computing).

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

Основные возможности кластера серверов:

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

Кластер 1С

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

Традиционно платформа 1С работала в режиме «клиент-сервер» и данные хранились в базе данных под управлением SQL-сервера Microsoft. Бизнес-логика при этом работала на машине-клиенте.

В версии 1С:Предприятие 8.0 впервые была использована архитектура «клиент – сервер приложений – СУБД».

Сервер 1С в платформе 8.0 построен по модели компонентного объекта СОМ+ (Component Object Model), разработанной Microsoft для того, чтобы взаимодействующие компоненты объекта могли совместно использоваться во многих программах.

Платформу 1С:Предприятие 8.0 было легко настраивать, однако, её масштабируемость, доступность и балансировка нагрузки оставляли желать лучшего.

Поэтому в версии 1С:Предприятие 8.1 была использована концепция вычислительного кластера. Сервер 1С в этой версии является платформенно-независимым, и может работать как на Windows, так и на Linux.

Процессы сервера в версии 8.1 разбиты на три вида:

  • рабочий процесс, обслуживающий клиентов и исполняющий прикладной код;
  • процесс агента сервера, запускающий все другие виды процессов, а также ведущий список кластеров на сервере;
  • управляющий процесс «менеджер кластера».

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

Кластер 1С:Предприятие 8.1 (источник: 1С)

Рис. 1. Кластер 1С:Предприятие 8.1 (источник: 1С).

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

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

Процесс агента сервера (ragent) обеспечивает работу компьютера как составной части кластера. Процесс ragent также ведёт реестр кластеров, которые находятся на рабочем сервере.

1С:Предприятие 8.1

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

Масштабируемость. Масштабируемость кластера серверов в версии 8.3 реализуется следующими способами:

  • увеличение количества менеджеров в кластере и распределение сервисов между ними;
  • увеличение количества рабочих процессов на рабочем сервере;
  • увеличение количества рабочих серверов, из которых состоит кластер;
  • использование нескольких менеджеров одновременно.

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

Три основных способа повышения отказоустойчивости:

  • резервирование самого кластера;
  • резервирование рабочих процессов;
  • повышение устойчивости к обрыву канала связи.

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

Балансировка нагрузки. Балансировки нагрузки требуется, если в систему входит новый клиент, или существующий клиент совершает новый вызов рабочего процесса. Менеджер кластера определяет, на какой сервер и рабочий процесс наиболее оптимально направить вызов клиента. Запрос нового клиента направляется на наименее загруженный в данный момент сервер. Новый запрос от существующего клиента чаще всего направляется на сервер и рабочий процесс, который использовался ранее, а случае недоступности этого процесса по причине его сбоя – на другой процесс и/или другой сервер.

В версии 8.2 резервирование кластеров производилось по схеме Active/Passive для рабочего и резервного кластера. В случае недоступности рабочего кластера клиентские вызовы автоматически перенаправлялись на резервный кластер.

В новой версии 1С:Предприятие 8.3 схема Active/Passive для кластеров больше не используется, и имеется только один распределённый кластер, в которой запросы на отказавший узел распределяются между оставшимися рабочими узлами.

Схемы архитектур кластеров серверов 1С

Кластер 1С с катастрофоустойчивой синхронной репликацией SQL AlwaysOn

Кластеризация баз SQL AlwaysOn использует принцип автоматической онлайн-синхронизации таблиц между основным и резервным SQL-серверами. Катастрофоустойчивость обеспечивается благодаря использованию двух независимых серверов SQL. Репликация SQL Always On доступна только в версии Microsoft SQL Enterprise.

Схема катастрофоустойчивого кластера серверов 1С 8.3 SQL AlwaysOn (источник: 1С)

Рис. 2. Схема катастрофоустойчивого кластера серверов 1С 8.3 SQL AlwaysOn (источник: 1С).

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

Кластер 1С "active-active" с одним сервером баз данных

Если в первую очередь требуется повышенная производительность, то лучше использовать увеличение числа вычислительных кластеров 1С с единственным сервером баз данных для повышения скорости обмена данными.

Кластер 1С 'active-active' с одним сервером баз данных

Рис. 3. Кластер 1С "active-active" с одним сервером баз данных.

Сервер 1С и сервер SQL на одном аппаратном сервере с SharedMemory.

В случае ограничения ресурсов на предприятии, можно использовать схему расположения сервера 1С и SQL на одном аппаратном сервере без виртуализации с общей памятью SharedMemory.

Сервер 1С и сервер SQL на одном аппаратном сервере с SharedMemory

Рис. 4. Сервер 1С и сервер SQL на одном аппаратном сервере с SharedMemory.

Результаты тестирования схем архитектур кластеров серверов 1С

Результаты тестирования по т.н. «тесту Гилева» и методике специализированного центра тестирования «Тест центр» с использованием инструментария 1С: КИП приведены в таблице ниже.

«Тест Гилева» оценивает скорости работы в одном потоке, включая скорость отрисовки интерфейса пользователя на мониторе, обслуживание ресурсов виртуальной среды, повторный ввод документов, и т.п.

С помощью теста «Тест центр» можно моделировать работу 1С:Предприятие без участия реальных пользователей, что позволяет оценивать применимость, производительность и масштабируемость информационной системы в реальных условиях.

Таблица 1. Сравнение вариантов построения систем 1С (источник: pcznatok.ru).

Критерии оценки архитектур 1С

Кластер 1С + SQL AlwaysOn

Кластер 1С + SQL AlwaysOn с шифрованием

Кластер 1С с одним сервером SQL

Кластер 1С + SQL SharedMemory

Легкость инсталляции и обслуживания

Удовл.

Удовл.

Хорошо

Отлично

Отказоустойчивость

Отлично

Отлично

Удовл.

Не применимо

Безопасность

Удовл.

Отлично

Удовл.

Удовл.

Бюджетность

Удовл.

Удовл.

Хорошо

Отлично

Таким образом, исходя из потребностей и приоритетов предприятия, по данной таблице можно подобрать подходящую архитектуру кластера серверов. Если требуется наиболее высокое быстродействие и лёгкость обслуживания при малом бюджете и невысоких требованиях к безопасности, то логично выбрать кластер на одном аппаратном сервере с SharedMemory. Если бюджет некритичен, а на первом плане требований стоит безопасность и производительность, то наиболее подходящим решением будет кластер 1С + SQL AlwaysOn с шифрованием.