Что такое кластер 1с

Несколько рабочих процессов на одном сервере дают возможность эффективно использовать объем оперативной памяти и ресурсы процессора для выполнения запросов, а также подключить клиентский сеанс к другому рабочему процессу при «крахе» текущего.
За понимание, что запущено на конкретном сервере, отвечает программа «Агент сервера» (ragent). Остановка агента сервера сделает сервер недоступным для использования кластером. Свою информацию агент хранит в файле srvribrg.lst.

Информацией о рабочих базах, задействованных рабочих процессах владеет «Менеджер сервера» (rmngr). Эту информацию он хранит в файле 1CV8Reg.lst. Остановка менеджера сервера может привести к перезапуску клиентских приложений в случаи удачного рестарта менеджера или к полной остановке работы рабочих серверов всего кластера.

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

Для управления кластером предназначена оснастка «Серверы предприятия».
Подключаться к серверам можно по имени или IP адресу сервера.

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

Агент сервера «знает» о всех кластерах, которые запущены на сервере. Эта информация хранится в файле srvribrg.lst со списком кластеров и администраторов списка. Основной порт агента – 1540. На каждом Рабочем сервере может быть запущен только один агент, обслуживающей все возможные кластера на данном сервере.

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

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

Данный параметр перезапускает рабочие процессы сервера 1С по заданному значению в секундах. Обычно параметр используется на тех серверах приложений, которые имеют 32х разрядную систему, так как там объем памяти ограничен ~ 3.7 гб., если используется операционная система 64х разрядная, а сервер приложений 32х. Если же ОС использует 32х разрядную архитектуру, тогда общий объем потребления памяти рабочего процесса составляет ~ 1.7 гб. И пользователи часто могут получать сообщение об ошибке вида “Недостаточно памяти на сервере 1С Предприятие”. Самый простой способ избежать данной ошибки, это сделать перезапуск рабочих процессов, к примеру 86400 секунд (1 сутки). При изменении параметра, отсчет времени начинается со старта службы сервера приложений 1С.

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

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

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

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

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

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

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

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

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

Если сработает один из параметров “интервал перезапуска” или “допустимый объем памяти, то при перезапуске рабочего процесса, он может “отвалиться”. Если клиент во время перезапуска не обращается к серверу (бездействует), то при следующем обращении он плавно переключится на новый рабочий процесс. Если же клиент обращается к серверу в момент перезапуска рабочего процесса, то в данном случае он получит сообщение об ошибке и завершит свою работу. Чтобы этого не произошло, необходимо задать значение данного параметра в секундах. Обычно хватает 120 секунд. За это время рабочий процесс успеет обработать текущие запросы клиентов и перевести их на новый рабочий процесс. Тех активных клиентов, которых процесс не успел обработать, завершается и клиенты возможно могут получить ошибку.

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

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

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

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


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

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

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

Менеджер кластера отвечает за работу кластера. У каждого кластера свой Менеджер. Менеджер хранит информацию о кластере в файле 1CV8Reg.lst (реестр кластера). У каждого Менеджера кластера также есть свой порт на Рабочем сервере. Для первого кластера по умолчанию порт Менеджера 1541. Именно этот порт отображается в оснастке «Серверы 1С: Предприятия» в ветке «Кластеры», идентифицируя кластер.
Менеджер принимает запросы от клиентской части 1С: Предприятия и принимает решение, какому Рабочему процессу отдать этот запрос на обслуживание.

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

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

За «работу с клиентами» отвечает Рабочий процесс. Рабочих процессов в кластере 1С: Предприятия 8 может быть несколько. Количество рабочих процессов не создается вручную, а рассчитывается исходя из описаний требований задач по отказоустойчивости и надежности. Менеджер сервера решает, какой из рабочих процессов будет обслуживать клиентское подключение. Для клиентских подключений Рабочим процессам по умолчанию выделяется диапазон IP портов 1560 – 1591. Кроме этого, каждому Рабочему процессу назначается Служебный порт для обмена с менеджером кластера.

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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


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


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

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

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

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


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

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

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


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

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

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

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

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



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



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


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

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

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

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

Эта статья содержит информацию о процедуре установки 1С в клиент-серверном варианте.

Установка платформы 1С описана в другой нашей статье – “Администрирование 1С”, в разделе “Установка 1С”. Установка на сервер почти полностью совпадает с установкой на локальный компьютер, с одной лишь разницей. В серверном варианте при выборе устанавливаемых компонент необходимо выбрать “Сервер 1С:Предприятия” и “Администрирование сервера 1С:Предприятия”.

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

Установка на клиентских компьютерах ничем не отличается от способа, описанного ранее в статье “Администрирование 1С”.

Создать информационную базу в SQL.

Создание информационной базы в SQL тоже очень похоже на создание базы в файловом варианте. Разница заключается в том, что на этапе выбора типа расположения информационной базы необходимо выбрать “На сервере 1С:Предприятия”.

В пункте “Кластер серверов” укажите имя (а лучше IP-адрес) сервера, на который устанавливали SQL.

В пункте “Имя информационной базы” укажите любое имя, которое хотите дать базе.

Тип СУБД – SQL.

Пользователь базы данных и его пароль – тот самый суперпользователь, о котором говорилось выше, на этапе установки MS SQL.

Смещение дат оставьте по умолчанию.

Необходимо отметить пункт “Создать базу данных в случае ее отсутствия” и нажать “Далее”.

Теперь база успешно создана на сервере SQL и добавлена в список доступных баз. Внизу на картинке можно увидеть результат проделанной работы.

Стоить отметить, что созданная база пока еще пустая. Это каркас, место, выделенное в SQL под вашу информационную базу. Для того, чтобы загрузить свою базу в этот каркас – необходимо воспользоваться средствами Выгрузки/Загрузки информационной базы. Процедура Выгрузки/Загрузки также описана в другой нашей статье “Администрирование 1С”.

Для того, чтобы довести систему до идеального состояния в дальнейшем необходимо будет настроить “план обслуживания” созданной базы данных. План обслуживания – это набор процедур, которые SQL будет выполнять регулярно по заданному расписанию. Например, будет регулярно делать резервные копии и удалять временные файлы. Работа с SQL выходит за рамки темы статьи и будет описана в одной из следующих.

теперь немного подробнее:

Кластер 1С 8.3

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

Пробный запуск фоновых заданий основной базы заставило кластер 1С бесконечно перегружать rphost.exe и дополнительный rphost.exe никак не хотел создаваться. Покопавшись в настройках все стало понятно.

Максимальный объем памяти рабочих процессов - это объем памяти, который могут использовать рабочие процессы вместе. Нужно быть очень внимательными при установке параметра, измеряется в байтах. Если установить неверное значение (недостаточное для нормальной работы пользователей) пользователям будет выдана ошибка "Недостаточно свободной памяти на сервере 1С". Так же эту ошибку можно получить, когда на сервере 1С закончилась квота по памяти.

Безопасный расход памяти за один вызов - позволяет контролировать расход памяти при серверном вызове, измеряется в байтах. Если вызов использует больше памяти чем положено, этот вызов будет завершен в рамках кластера 1С без перезапуска рабочего процесса (rphost.exe). Соответственно "неудачник", который выполнил вызов сервера, утратит сеанс с базой 1С без влияния на работу других пользователей.

в одном ГБ - 1073741824 Байт, следовательно в 2 ГБ - 2147483648 Байта

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

Количество ИБ на процесс - позволяет изолировать информационные базы по рабочим процессам. По умолчанию у текущего кластера 1С было установлено значение - "8", но на протяжении нескольких часов работы сервер себя очень нестабильно, сеансы пользователей зависали. После изоляции каждой информационной базы (значение - "1") проблемы пропали.

Количество соединений на процесс - по умолчанию значение "128". Так как у текущей базы очень большая нагрузка фоновыми заданиями (расчет логистики, анализ прайсов, анализ конкурентов и прочее) было принято решение уменьшить количество до "25".

Немного изменились настройки и самого кластера 1С:

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

Режим распределения нагрузки - есть два варианта параметра: "Приоритет по производительности" - памяти сервера тратится больше и производительность выше, "Приоритет по памяти" - кластер 1С экономит память сервера.

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

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

Это снижает вероятность неправильной настройки сервера и понижает требования к квалификации админов.

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

Стабильность работы при использовании больших объемов памяти определятся новыми параметрами рабочего сервера.

Особенно интересен параметр «безопасный расход памяти за один вызов». Для тех кто плохо представляет что это такое - лучше не тренируйтесь на «продуктивной» базе. Параметр «Максимальный объем памяти рабочих процессов» позволяет при «переполнении» не обваливать весь рабочий процесс, а только один сеанс «с неудачником». «Объем памяти рабочих процессов, до которого сервер считается производительным» позволяет заблокировать новые соединения как только будет преодолен этот порог памяти.

Рекомендую изолировать рабочие процессы по информационным базам, к примеру указать параметр «Количество ИБ на процесс = 1″. При нескольких высоконагруженных базах это позволит уменьшить взаимное влияние как по надежности, так и по производительности.

Отдельный вклад в стабильность системы вносит «расходование» лицензий/ключей. В 8.3 появилась возможность использования «менеджера программных лицензий» напоминая менеджер «аладина». Цель - возможность вынести ключ на отдельную машину.

Реализован он в виде еще одного «сервиса» в менеджера кластера. Вы можете использовать к примеру «свободный» ноутбук. Добавьте его в кластер 1с 8.3, создайте на нем отдельный менеджер с сервисом «сервис лицензирования». В ноутбук можно воткнуть аппаратных hasp-ключ, или активировать программные лицензии.

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

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

Так на ноутбуке с ключом защиты чтобы не запускать пользователей на сервер кластера надо добавить «требования» для объекта требования «Клиентское соединение с ИБ» - «Не назначать», т.е. запретить рабочим процессам данного сервера обрабатывать клиентские соединения.

Еще больший интерес предоставляет возможность запускать «только фоновые задания» на рабочем сервере кластера без сеансов пользователей. Таким образом можно высоконагруженные задачи (код) вынести на отдельный машины. При чем можно одно фоновое задание «закрытия месяца» через «Значение дополнительного параметра» запускать на одном компьютере, а фоновое задание «Обновление полнотекстового индекса» на другом.Уточнение происходит через указание «Значение дополнительного параметра». Например если указать BackgroundJob.CommonModule в качестве значения, то можно ограничить работу рабочего сервера в кластере только фоновыми заданиями с любым содержимым. Значение BackgroundJob.CommonModule.<Имя модуля>.<Имя метода> - укажет конкретный код.

Кластер 1С 8.2

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

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

Отказоустойчивость сервера 8.2 достигается за счет:

  • Хранение информации о сеансе работы пользователя.
  • Пользователь не привязан больше к рабочему процессу.
  • Резервирование рабочих процессов в кластере.
  • Должно быть несколько рабочих процессов, в том числе резервируемые
  • Резервирование кластеров.

Указывается запасной кластер, при подключении - перечисляются в строке соединения

Это позволяет обеспечить непрерывность работы!

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

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

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

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

Аренда 1С:ERP Облачное решение
от 2000 руб./мес.

Управление доставкой Для торговых и курьерских компаний!

1C:ЭДО Узнайте о всех преимуществах электронного документооборота!

Прекращение поддержки
«1С:КА ред. 1.1»!
Организуйте переход на «1С:КА 2.4»

Аренда сервера 1С
в облаке
Работайте в 1С удаленно с экономией до 70%!


Кластер серверов 1С - построение высоконагруженных систем

Заказать демонстрацию Заказать

В данной статье будут рассмотрены несколько вариантов структуры 1С для высоконагруженных систем (от 200 активных пользователей), построенных на базе клиент-серверной архитектуры – их преимущества и недостатки, стоимость инсталляции и сравнительные тесты производительности каждого варианта.

Мы не будем проводить описание, оценку и сравнение общепринятых и всем давно известных классических схем построения серверной структуры 1С, таких как отдельный сервер 1С и отдельный сервер СУБД, либо кластер Microsoft SQL с кластером 1С. Таких обзоров великое множество, в том числе и проведенных самими производителями программных продуктов. Мы предложим обзор схем построения структуры 1С, которые встречались за последние несколько лет в наших ИТ-проектах для среднего и крупного бизнеса.

Требования к высоконагруженным системам 1С

Высоконагруженные системы 1С, работающие с крупными массивами данных в режиме 24/7/365 подвержены факторам риска, которые в стандартных ситуациях обычно не наблюдаются. Как следствие, для их устранения и упреждения требуется применение особенных схем архитектуры 1С и новых технологий.

Катастрофоустойчивость СУБД. В процессе проектирования архитектуры 1С делается упор на вычислительные мощности и высокую доступность сервисов, выраженную в их кластеризации. Серверы 1С:Предприятие по умолчанию способны работать в дублирующем кластере, а для кластера СУБД обычно применяется промышленная система хранения данных (СХД) и технология кластеризации (к примеру, Microsoft SQL Cluster). Однако, ситуация становится плачевной, когда проблемы случаются с самой СХД (зачастую, по нашему опыту последних лет – это проблемы программного характера). Тогда у ИТ-инженера резко возникают две проблемы – где взять актуальные данные и куда их развернуть в кратчайшие сроки, поскольку система хранения данных с нужным объемом быстрого массива дисков недоступна.

Требования к безопасности базы данных. Работая с проектами среднего и крупного бизнеса, мы регулярно сталкиваемся с требованиями по защите персональных данных (в частности, для выполнения пунктов ФЗ-152). Одним из условий выполнения этих требований является обеспечение должной сохранности персональных данных, что требует шифрования базы данных 1С.

При разработке схемы высоконагруженных систем 1С обычно обращают внимание в первую очередь на параметры дисковой системы ввода\вывода, на которой расположены базы данных. Но помимо этого, еще существует активная утилизация ресурсов ЦПУ и потребление ОЗУ сервером 1С. Зачастую именно этого типа ресурсов и не хватает, возможности аппаратной модернизации текущего сервера 1С исчерпываются и требуется добавление новых серверов 1С, работающих с единым сервером СУБД.

Схемы организации кластеров серверов 1С

Схема с кластером 1С-серверов, подсоединенным к кластеру с синхронной репликацией SQL AlwaysOn по протоколу IP. Данная схема является одним из качественных вариантов решения проблемы катастрофоустойчивости базы данных 1С (см. Рисунок 1). Технология кластеризации баз SQL AlwaysOn основана на принципе онлайн-синхронизации таблиц SQL между основным и резервным серверами без вмешательства конечного пользователя. С помощью SQL Listener есть возможность переключиться на резервный сервер SQL в случае выхода из строя основного, что позволяет назвать данную систему полноценным катастрофоустойчивым кластером SQL, благодаря использованию двух независимых серверов SQL. Технология SQL Always On доступна только в версии Microsoft SQL Enterprise.


Рисунок 1 - схема кластера серверов 1С + SQL AlwaysOn


Вторая схема идентична первой, добавлено только шифрование баз SQL на основном и резервном сервере. Мы уже упоминали о том, что работа с последними ИТ-проектами показала, что компании начали гораздо больше внимания уделять вопросу безопасности данных, по различным причинам – требования ФЗ-152, рейдерские захваты серверов, утечка данных в облаке и тому подобное. Так что считаем данный вариант схемы 1С довольно актуальным (см. Рисунок 2).


Рисунок 2 - схема кластера серверов 1С + SQL AlwaysOn с шифрованием


Кластер серверов 1С "active-active", подсоединенный к единственному серверу СУБД по протоколу IP. В противовес потребностям в отказоустойчивости и безопасности – некоторым структурам в первую очередь требуется повышенная производительность, так сказать «вся вычислительная мощь». Поэтому максимальный приоритет отдается увеличению количества вычислительных кластеров сервера 1С, на которые современная платформа 1С позволяет дифференцировать различные типы вычислений и фоновые задания (см. Рисунок 3). Конечно же, комплектация основных ресурсов сервера SQL тоже должна быть на уровне, однако сам сервер баз данных представлен в единственном числе (видимо, расчет идет на своевременное резервное копирование баз).


Рисунок 3 - схема кластера серверов 1С с одним сервером СУБД


Сервер 1С и СУБД на одном аппаратном сервере с SharedMemory. Поскольку наши практические тесты ориентированы на сравнение производительности разных схем, то обязательно требуется некий эталон для сравнения нескольких вариантов (см. Рисунок 4). В качестве эталона, по нашему мнению, нужно взять схему расположения сервера 1С и СУБД на одном аппаратном сервере без виртуализации с взаимодействием по SharedMemory.


Рисунок 4 - схема сервера 1С и СУБД на одном аппаратном сервере с SharedMemory


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


Критерии оценки архитектур 1С Кластер 1С + SQL AlwaysOn Кластер 1С + SQL AlwaysOn с шифрованием
Кластер 1С с одним сервером СУБД
Классический 1С+СУБД SharedMemory
Легкость инсталляции и обслуживания Удовл. Удовл. Хорошо Отлично
Отказоустойчивость Отлично Отлично Удовл. Не применимо
Безопасность Удовл. Отлично Удовл. Удовл.
Бюджетность Удовл. Удовл. Хорошо Отлично

Таблица 1 - сравнение вариантов построения систем 1С


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

Описание методики тестирования

Этап тестирования состоит из двух ключевых инструментов синтетической генерации нагрузки и имитации работы пользователей в 1С. Это тест Гилева (TPC-1C) и «Тест центр» из инструментария 1С: КИП.

Тест Гилева. Тест относится к разделу универсальных интегральных кроссплатформенных тестов. Он может применяться как для файлового, так и для клиент-серверного вариантов 1С:Предприятие. Тест оценивает количество работы в единицу времени в одном потоке и подходит для оценки скорости работы однопоточных нагрузок, включая скорость отрисовки интерфейса, влияния ресурсных затрат на обслуживание виртуальной среды, перепроведения документов, закрытия месяца, расчета зарплаты и т.п. Универсальность позволяет делать обобщенную оценку производительности не привязываясь к конкретной типовой конфигурации платформы. Результатом теста является сводная оценка измеряемой системы 1С, выраженная в условных единицах.

Специализированный «Тест центр» из инструментария 1С: КИП. Тест-центр – инструмент автоматизации многопользовательских нагрузочных испытаний информационных систем на платформе 1С:Предприятие 8. С его помощью можно моделировать работу предприятия без участия реальных пользователей, что позволяет оценивать применимость, производительность и масштабируемость информационной системы в реальных условиях. Используя инструментарий 1С: КИП, на основании процессов и контрольных примеров формируется матрица «Список Объектов макета базы ERP 2.2» для сценария тестирования производительности. В макете базы 1С: ERP 2.2 генерируются обработкой данные по Нормативно-справочной информации (НСИ):

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

Тест осуществляется в рамках нескольких групп пользователей. Группа состоит из 4 пользователей, у каждого из которых есть своя роль и перечень последовательных операций. Благодаря гибкому механизму задания параметров для тестирования, можно запускать тест на разное количество пользователей, что позволит оценить поведение системы при различных нагрузках и определить параметры, которые могут привести к снижению показателей производительности. Проводится 3 теста по 3 итерации в которых разработчик 1С запускает тест с эмуляцией работы пользователей и замеряет время выполнения каждой операции. Выполняются замеры всех трех итераций для каждой из схем структуры 1С. Результатом теста является получение среднего времени выполнения операции для каждого документа матрицы.

Показатели «Тест центра» и теста Гилева будут отражены в сводной таблице 2.

Тестовый стенд

Сервер терминального доступа виртуальная машина, использовалась для управления инструментами тестирования:

  • vCPU - 16 ядер 2.6GHz
  • RAM - 32 ГБ
  • I\o: Intel Sata SSD Raid1
  • RAM - 96 ГБ
  • I\o: Intel Sata SSD Raid1

Сервер 1С и СУБД - физический сервер

  • CPU - Intel Xeon Processor E5-2670 8C 2.6GHz – 2 шт
  • RAM - 96 ГБ
  • I\o: Intel Sata SSD Raid1
  • Роли: Сервер 1С 8.3.8.2137, Сервер MS SQL 2014 SP 2

Выводы

Можем сделать вывод, что по среднему времени выполнения операции наиболее оптимальной является схема №3 «Кластер серверов 1С "active-active", подсоединенный к единственному серверу СУБД по протоколу IP» (см. Таблица 2). Для обеспечения отказоустойчивости такой архитектуры мы рекомендуем строить классический отказоустойчивый кластер MSSQL с размещением базы данных на отдельной СХД.

Важно отметить, что наиболее оптимальное соотношение факторов минимизации простоя, отказоустойчивости и сохранности данных - у схемы №1 «Кластер 1С-серверов, подсоединенный к кластеру с синхронной репликацией SQL AlwaysOn по протоколу IP», при этом падение производительности по отношению к самому производительному варианту составляет примерно 10%.

Как мы видим по результатам тестов, синхронная репликация базы SQL AlwaysOn достаточно негативно влияет на производительность. Объясняется это тем, что система SQL ждет окончания репликации каждой транзакции на резервный сервер, не позволяя работать с базой в это время. Этого можно избежать если настроить асинхронную репликацию между MSSQL серверами, но при таких настройках мы не получим автоматического переключения приложений на резервную ноду в случае сбоя. Переключение придется выполнять вручную.

На базе облака EFSOL мы предлагаем нашим клиентам кластер серверов 1С в аренду. Это позволяет существенно сэкономить средства на построение собственной отказоустойчивой архитектуры для работы с 1С.



Схема архитектуры 1С

Среднее время выполнения операции, сек

Буквально вчера обновили все программное обеспечение сервера. Затронем, пожалуй, самые интересные и новые возможности кластера серверов «1С:Предприятие 8.3».

Как настроить кластер серверов для «1С:Предприятие 8.2» можно посмотреть в предыдущей . На некоторых моментах заострять внимание не буду, они уже были описаны в ранее.

ТАК ЧТО ЖЕ ИЗМЕНИЛОСЬ В КЛАСТЕРЕ «1С:Предприятие 8.3»:

Первым делом, после установки кластера «1С:Предприятие 8.3» ранее необходимо было создать рабочие процессы. Как оказалось, процессы кластера теперь создаются автоматически в зависимости от нагрузки на учетную систему.

Пробный запуск фоновых заданий основной базы заставило кластер «1С:Предприятие 8.3» безконечно перегружать rphost.exe и дополнительный rphost.exe никак не хотел создаваться. Покопавшись в настройках все стало понятно.

Максимальный объем памяти рабочих процессов - это объем памяти, который могут использовать рабочие процессы вместе. Нужно быть очень внимательными при установке параметра, измеряется в байтах . Если установить неверное значение (недостаточное для нормальной работы пользователей) пользователям будет выдана ошибка «Недостаточно свободной памяти на сервере «1С:Предприятие»». Так же эту ошибку можно получить, когда на сервере «1С:Предприятие» закончилась квота по памяти.

Безопасный расход памяти за один вызов - позволяет контролировать расход памяти при серверном вызове, измеряется в байтах . Если вызов использует больше памяти чем положено, этот вызов будет завершен в рамках кластера 1С без перезапуска рабочего процесса (rphost.exe ). Соответственно «неудачник», который выполнил вызов сервера, утратит сеанс с базой данных без влияния на работу других пользователей.

Объем памяти рабочих процессов, до которого сервер считается производительным - при превышении этого параметра сервер в кластере «1С:Предприятие 8.3» перестанет принимать новые соединения.

Количество ИБ на процесс - позволяет изолировать информационные базы по рабочим процессам. По умолчанию у текущего кластера «1С:Предприятие 8.3» было установлено значение - «8», но на протяжении нескольких часов работы сервер вел себя нестабильно, сеансы пользователей зависали. После изоляции каждой информационной базы (значение - «1») проблемы пропали.

Количество соединений на процесс - по умолчанию значение «128». Так как у текущей базы очень большая нагрузка фоновыми заданиями (расчет логистики, анализ прайс-листов, анализ конкурентов и прочее) было принято решение уменьшить количество до «25».

Немного изменились настройки и самого кластера «1С:Предприятие 8.3»:


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

Режим распределения нагрузки - есть два варианта параметра: «Приоритет по производительности» — памяти сервера тратится больше и производительность выше, «Приоритет по памяти» — кластер «1С:Предприятие 8.3» экономит память сервера.

Вместо послесловия. Кластер «1С:Предприятие 8.3» работает заметно шустрее и надежнее, создание сеанса пользователя с информационной базой происходит в разы быстрее, интерфейс в режиме совместимости с «1С:Предприятие 8.2.16», можно сказать, летает. Конечно, есть и нюансы, но куда ж без них. Успехов в настройке нового кластера «1С:Предприятие 8.3».