Как сделать кластер серверов 1с

Обновлено: 03.07.2024

Собственные наработки и набитые шишки в моей практике по программированию в 1С.

вторник, 8 декабря 2015 г.

Выдержки из ИТС по настройке кластера сервера 1С

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

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

Отказоустойчивый кластер

Уровень отказоустойчивости

Таким образом, если в кластер серверов входит только один рабочий сервер, то максимальный уровень отказоустойчивости будет 0,т. к. выход из строя единственного рабочего сервера приведет к аварийному завершению всех подключенных пользователей. Если в кластер входит 4 рабочих сервера, то уровень отказоустойчивости может изменяться от 0 до 3. При этом 0 означает, что фатальным считается выход из строя любого рабочего сервера, а значение 3 означает, что кластер сохранит работоспособность даже в том случае, если выдут из строя 3 из 4 рабочих серверов.

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

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

Если в кластере присутствует 3 рабочих сервера (из них один центральный) и установлен уровень отказоустойчивости равный 1, то могут наблюдаться различные ситуации. Рассмотрим их.

2.1.6. Масштабируемость кластера серверов

● Наращиванием вычислительных мощностей компьютера, на котором развернут единственный рабочий сервер кластера.

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

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

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

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

2.1.7. Балансировка нагрузки в кластере

2.1.7.1. Доступная производительность рабочего процесса

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

● Выполняется определение степени загрузки процессоров компьютера, на котором работает рабочий процесс и количество потоков, ожидающих исполнения. Это значение корректирует время выполнения эталонного вызова в сторону увеличения. Если пользователь, от имени которого работает сервер, не входит в группу Пользователи журналов производительности ( Performance Log Users ), то определение степени загрузки процессора не выполняется.

Значение свойства Доступная производительность вычисляется делением числа 10 000 на среднее (за 5 минут) время выполнения эталонного вызова текущим рабочим процессом. Эталонный вызов выполняется каждые 2 секунды в том случае, если в кластере присутствует несколько рабочих серверов. Если кластер серверов состоит из одного рабочего сервера – все рабочие процессы считаются равноправными.

Клиенты распределяются между рабочими процессами так, чтобы сделать доступную производительность всех рабочих процессов примерно одинаковой. Существенным считается отличие доступной производительности более чем на 25%.

При изменении соотношения между доступной производительностью рабочих процессов клиенты динамически в течение не более 10 минут перераспределяются между рабочими процессами.

При выключении рабочего процесса его клиенты динамически перераспределяются между оставшимися включенными рабочими процессами.

2.1.7.3. Требования назначения функциональности

2.1.7.3.1. Общая информация

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

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

● Для какого объекта требования создается требование. В качестве объекта требования могут выступать некоторые сервисы кластера (см. здесь), клиентские соединения (см.здесь) и произвольный объект требования. В качестве объекта требования могут выступать следующие сервисы кластера:

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

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

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

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

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

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

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

Кластер 1С

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

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

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

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

Процессы сервера в версии 8.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.

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

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

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

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

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

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

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

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

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

Оптимизация 1С

Агент сервера

Разберемся поподробнее со свойствами кластера

Оптимизация 1С

Интервал перезапуска

Допустимый объем памяти

Перезапуск рабочих процессов по достижению определенного порога занятой памяти рабочим процессом в килобайтах.

Интервал превышения допустимого объема памяти

Означает, если в течении заданного количества секунд произойдет превышение памяти, заданного в параметре “допустимый объем памяти”, тогда сервер 1С примет решение перезапустить рабочий процесс.

Допустимое отклонение количества ошибок сервера

Вычисляется следующим образом. У нас есть серверные вызовы, которые возможно увидеть в технологическом журнале по событию “CALL” а также есть различные исключительные ситуации, которые в технологическом журнале можно увидеть по событию “EXCP”. Платформа вычисляет соотношение данных событий. Предполагается, что данных событий должно быть приблизительно одинаково. Если же в каком-либо рабочем процессе данное соотношение превышает соотношение данных событий в других рабочих процессах на некую значительную величину, то такой рабочий процесс признается проблемным. Как раз данная величина задается в этом параметре. Рекомендуемое значение – 50.

Принудительно завершать проблемные процессы

Если мы включим данный параметр, то по параметру “допустимое отклонение количества ошибок сервера”, проблемные процессы будут завершены. Если параметр выключен, то платформа выводит событие технологического журнала “ATTN”, которое обозначает проблемный процесс.

Выключенные процессы останавливать через

Уровень отказоустойчивости

Данная настройка живет сама по себе не зависимо от количества центральных серверов. Уровень отказоустойчивости может принимать любые значения. К примеру, уровень отказоустойчивости = 1, тогда каждый сеанс пользователя удваивается. Если уровень отказоустойчивости = 2, то каждый сеанс умножается на 3. Также возрастает нагрузка на сервер. При изменении уровня отказоустойчивости, если у нас центральный сервер, он реплицирует на каждый центральный сервер: “реестр кластера”, “сервис блокировок кластера”. Также идет репликация на остальные серверы таких сервисов, как “сервис сеансовых данных”, “сервис оперативной отметки времени”, “сервис блокировок объектов”, “сервис лицензирования”, “сервис нумерации”. Среди них самым тяжелым является “сервис сеансовых данных”.

Режим распределения нагрузки

По производительности. Когда клиентское соединение подключается, оно будет подключено к тому серверу, где присутствует рабочий процесс с более доступной производительностью. Доступная производительность задается в свойствах рабочего процесса:

Оптимизация 1С

Доступная производительность на уровне 1С вычисляется следующим образом: ко всем рабочим процессам делается эталонный серверный вызов 1 раз в 10 минут и замеряется время данного вызова. Полученное число делится на 10000 (десять тысяч) и механизмами сервера приложения вычисляется эталонное время. В том случае, если производительность какого-либо рабочего процесса стала на 25 % меньше, чем у остальных, с данного рабочего процесса соединения начинают уходить на остальные рабочие процессы до тех пор, пока все соединения не уйдут.

Приоритет по памяти. Подключения пользователей будут производиться к такому рабочему серверу, у которого больше доступной памяти.

Менеджер кластера

Для взаимодействия с рабочими процессами Менеджер использует служебный порт.

Рабочий процесс

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

Оптимизация 1с

Максимальный объем памяти рабочих процессов

Данный параметр сам по себе ничего не ограничивает. Он работает в связке с параметром “безопасный расход памяти за один вызов”. Представим, что все наши рабочие процессы суммарно достигли приблизительно расхода по памяти от заданного значения данного параметра. И теперь некий пользователь хочет сделать некий серверный вызов, который хочет потребить большое число памяти. Как только серверный вызов превысит объем заданной памяти в данном параметре на объем памяти параметра “безопасный расход памяти за один вызов”, именно данный пользователь получит ошибку вида: “превышен безопасный расход памяти за один клиент-серверный вызов”. Это нужно для того, чтобы один какой-либо пользователь не смог “завалить” рабочий сервер. Значение параметра 0 равно 80 % памяти, установленной на сервере 1С.

Безопасный расход памяти за один вызов

Значение 0 (по умолчанию) составляет 5 % от значения параметра “максимальный объем памяти рабочих процессов”. Может быть значение -1. Это означает, что любой клиент-серверный вызов, превысивший заданное значение параметра “максимальный объем памяти рабочих процессов”.

Объем памяти рабочих процессов, до которого сервер считается производительным

Означает, если установлено значение и рабочие процессы заняли объем памяти, указанный в данном параметре, сервер будет продолжать работать, но не будет принимать новые подключения до тех пор, пока память не освободится.

Количество ИБ на процесс

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

Количество соединений на процесс

Так же как параметр выше, только зависит от количества соединений на процесс. Значение 0 будет означать, что на каждом рабочем сервере будет только один рабочий процесс.

Менеджер под каждый сервис

У каждого центрального рабочего сервера есть главный менеджер кластера с определенными сервисами:

Оптимизация 1С


Они выполняются одной службой “rmngr”. Представим, что данная служба начинает потреблять много памяти или тратить процессорные ресурсы. Обычно есть несколько типичных подозреваемых. Но вдруг вы встали в “тупик” и не можете понять, что именно нагружает службу, вы можете установить галочку “менеджер под каждый сервис”, служба разобьется на 21 процесс (таково количество сервисов в главном менеджере кластера). И соответственно по PID процесса можно будет вычислить, какой сервис нагружает систему.

Центральный сервер

Это сервер, у которого хранится реестр кластера в файле 1СV8Clst.lst. В файле хранится список баз, список администраторов кластера, список требования назначения функциональности, список профилей безопасности, в общем все настройки кластера. Данный файл присутствует только там, где установлена галочка “центральный сервер”. Центральных серверов может быть несколько. Так же на центральных серверах присутствуют такие сервисы, как “сервис блокировки кластера”, “сервис конфигурации кластера”. Пока хотя бы один центральный сервер работоспособен, кластер функционирует. Как только самый последний центральный сервер вышел из строя, кластер становится неработоспособным не зависимо от настроек отказоустойчивости.

Требование назначения функциональности

Кластер серверов 1С Предприятия 8.3 предоставляет некоторый набор функциональных возможностей (называемые объекты требований), распределением которых между рабочими серверами внутри кластера можно управлять. Например, можно указать, что все фоновые задания в кластере будут выполняться на выбранном рабочем сервере. Для того, чтобы поместить соединение или сервис кластера на какой-либо рабочий сервер, необходимо для выбранного рабочего сервера создать требование назначения функциональности. Это требование определяет возможность или невозможность конкретного сервера выполнять ту или иную работу. Рассмотрим более подробно, что собой представляет требование назначения функциональности.

Перенос пользовательских соединений

Допустим мы хотим, чтобы пользовательские соединения работали на рабочем сервере № 1, но если этот сервер выходит из строя, мы хотим, чтобы они переходили на другой рабочий сервер № 2

Для этого нам необходимо на сервере № 1 создать требование назначения функциональности:

Оптимизация 1с

На сервере № 2 прописать такие же настройки, но изменить приоритет:

Оптимизация 1с

Важность приоритета реализована наоборот. То есть, приоритет 1 выше, чем приоритет 2.

Вывести рабочий сервер из кластера

Вывести рабочий сервер из кластера мы можем и просто, удалив его из списка, но в таком случае всех пользователей “выкинет” из системы. Чтобы более безболезненно осуществить вывод, можно сделать следующее:

Создать требование назначения функциональности со следующими настройками:

Оптимизация 1С.jpg

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

Сервис лицензирования

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

9.jpg

Фоновые задания

С выходом платформы 8.3.7, фоновые задания разделились на 2 группы:

1. Фоновые задания, вызываемые из кода конфигурации

2. Регламентные задания

Поэтому необходимо несколько настроек назначения функциональности:

1. Запретить все фоновые задания

10.jpg

1. Запретить все регламентные задания

Оптимизация 1С

1. Чтобы фоновые задания выполнялись быстро, необходимо добавить сеансовые данные для фоновых и регламентных заданий

Оптимизация 1С.jpg

1. Запретить остальные сервисы

13.jpg

После создания необходимых требований назначения функциональности, необходимо их применить:

Оптимизация 1С

Частичное – применение, которое не нарушит работу пользователей

Полное – применение, которое может нарушить работу пользователей.

На практике ни разу не встречалось, чтобы при полном применении нарушало работу пользователей или что-то подобное. Но все возможно, имейте ввиду. После применения, перезапуск службы сервера приложений 1С не обязателен.

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

Далее отредактируем экспортированные файлы через обычный блокнот.
Поменяем стандартные ( зелёные ) строчки на наши нестандартные ( красные ).
Я просто добавил порядковый номер, Вы можете добавить что угодно своё, но только, чтобы отличалось от существующих названий:

Сохраняем изменения и просто запускаем поочерёдно каждый файл. На запрос о внесении данных в реестр Windows отвечам усвердительно - Да.



В моём примере прописан путь: C:\Program Files\1cv82\8.2.13.219\bin\ragent.exe:





Запускаем окно Службы и наблюдаем там наши дополнительные Агенты Серверов 1С. Кликнем на одном из них, чтобы проверить свойства.



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



. лучше сначала проверить, под каким именем пользователя мы собираемся запускать сервис и, при необходимости, указываем верный пароль. ( Если Вы скачивали reg-файлы с этого сайта и внесли данные из них в реестр, то Вам обязательно потребуется вписать известные Вам имя и пароль от вашей системы. )



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

В консоли 1С по нажатию правой кнопки на пункте "Кластеры" выбирает Создать --> Клатер:



В окне создания нового кластера указываем нужный порт (в примере - 1741), на котором будет работать Агент Сервера 1С, ну и не забываем заполнить поле Описание:



В дереве Кластера сервера появится ветка с новым портом - 1741:



Необходимо создать рабочий сервер, т.к. по умолчанию он будет отсутсвовать. Для этого в дереве нового порта 1741 по нажатию правой кнопки мыши на пункте "Рабочие серверы" выбираем "Создать --> Рабочий сервер":



В окне создания нового рабочего сервера указываем имя или IP-адрес компьютера/сервера и порт сервера (в примере - 1740), ну и не забываем заполнить поле Описание сервера:



В разделе "Рабочие серверы" появится описанный нами сервер:



Чтобы сервер работал, необходимо добавить хотя бы один рабочий процесс. Для этого в дереве только что созданного рабочего сервера по нажатию правой кнопки мыши на пункте "Рабочие прочессы" выбираем "Создать --> Рабочий процесс":



Далее обычно ничего не меняется - просто нажимаете кнопку "OK":



В разделе "Рабочие прочессы" появится новый рабочий процесс:



Только теперь можно добавлять базы в сервер приложений 1С, как это обычно делается.

1C

Для создания кластера 1С необходимо как минимум два сервера приложений 1С. Имеем два сервера приложений с установленным на них 1С: srv1 и srv2.

Заходим на srv1 в консоль администрирования 1С. Переименовываем локальный кластер созданный по умолчанию:

1C

Там же в консоли добавляем центральный сервер srv2. Будем видеть оба сервера.

1C

1C

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

В консоли выбираем srv1, открываем переименованный нами кластер и добавляем рабочий сервер srv2.

1C

1C

В свойствах добавленного srv2 ставим галку Центральный сервер.

1C

1C

В консоли выбираем srv2 и там у нас должен появиться наш кластер:

1C

Если не появился — перезапускаем сервис 1С.

Дальше можно добавить в кластер сервер лицензирования:

В свойствах кластера можно установить уровень отказоустойчивости. Формула: количество центральных серверов = уровень отказоустойчивости + 1.

Читайте также: