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

В большинстве случаев для установки 1C:Предприятия 8.х в варианте “клиент-сервер” достаточно запуска программы установки 1С:Предприятия 8.х. При этом сервер 1С:Предприятия получает стандартные значения параметров, необходимые для его нормального функционирования.

Рассмотрим установку сервера 1С:Предприятия более детально. В процессе установки сервера 1С:Предприятия 8.х программа установки 1С:Предприятия 8.х выполняет следующие действия:

* Копирует загрузочные модули сервера 1С:Предприятия в каталог, указанный программе установки 1С:Предприятия в качестве конечной папки.
* Если в процессе установки выбрано "Создать пользователя USR1CV81", то создает пользователя USR1CV81. От имени этого пользователя работает сервер 1С:Предприятия 8.1, если он запускается как сервис. Ему доступны только те ресурсы, которые необходимы серверу 1С:Предприятия. Важно, что серверу 1С:Предприятия для работы необходимы два каталога: общий каталог с данными сервера (обычно "C:\Program Files\1cv81\server") и каталог временных файлов (обычно "C:\Documents and Settings\usr1cv81\Local Settings\Temp" или "C:\WINNT\Temp"). Пользователь USR1CV81 получает права на общий каталог с данными сервера. Каталог временных файлов обычно доступен всем пользователям.
* Если в процессе установки включено "Установить сервер 1С:Предприятия 8.1 как сервис Windows", то регистрирует в Windows сервис агента сервера 1С:Предприятия и запускает его. При первом запуске создается кластер серверов 1С:Предприятия с настройками по умолчанию. В нем один рабочий сервер и один рабочий процесс. Адрес рабочего сервера совпадает с именем компьютера, на котором выполнена установка.

Пользователь USR1CV81 или USR1CV82 и его права

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

Рассмотрим подробнее права, устанавливаемые пользователю USR1CV81. Сервер 1С:Предприятия использует следующие каталоги:

* Каталог загрузочных модулей находится в каталоге, заданном программе установки 1С:Предприятия в качестве конечной папки. В нем расположены загрузочные модули сервера 1С:Предприятия. Пользователь USR1CV81 необходимы права на чтение данных и запуск программ из этого каталога и его подкаталогов. Он получает эти права неявно, благодаря включению в группу Users.
* Каталог данных сервера обычно имеет имя "C:\Program Files\1cv81\server". Пользователю USR1CV81 необходимы полные права на этот каталог. Программа установки 1С:Предприятия при создании пользователя USR1CV81 наделяет его правами на этот каталог.
* Каталог временных файлов обычно имеет имя "C:\Documents and Settings\usr1cv81\Local Settings\Temp" или "C:\WINNT\Temp", которое определяется значением переменной TEMP окружения пользователя или переменной TEMP системного окружения. Посмотреть значение этой переменной можно в диалоге System Properties (Start -> Settings -> Control Panel -> System -> Advanced -> Environment Variables). Программа установки 1С:Предприятия задает пользователю USR1CV81 полные права на этот каталог. Обычно при установки Windows каталог временных файлов доступен всем пользователям посредством включения в его список доступа группы CREATOR OWNER. Однако, это доступ не полный. В частности, всем пользователям не доступна операция поиска файлов в этом каталоге. Установка пользователю USR1CV81 полных прав на каталог временных файлов позволяет серверу 1С:Предприятия выполнять все необходимые ему операции. Посмотреть список доступа можно в диалоге свойств каталога на закладке Security. Наличие группы CREATOR OWNER позволяет обращаться к каталогу любому пользователю, создающему какие-нибудь файлы в этом каталоге или владеющему какими-нибудь файлами в этом каталоге. При этом в списке доступа созданного файла вместо группы CREATOR OWNER будет записан пользователь, создавший файл. Среди пользователей, которым разрешен доступ в этот каталог, должен быть и пользователь USR1CV81, наделенный полными правами на этот каталог.
Важно иметь в виду, что каталог временных файлов определенного пользователя (в том числе и пользователя USR1CV81) определяется комбинацией переменных окружения этого пользователя и системных переменных окружения. Чтобы узнать этот каталог, программа установки 1С:Предприятия запрашивает контекст пользователя USR1CV81. В для этого в Windows 2000 пользователю, от имени которого запускается программа установки 1С:Предприятия, могут потребоваться привилегии: Act as part of the operating system и Bypass traverse checking. Проверить привилегии пользователя можно утилитой Local Sequrity Settings в ветке Local Policies -> User Rights Assignment. В процессе установки нового программного обеспечения программа установки обычно получает эти привилегии автоматически.

Регистрация сервера 1С:Предприятия как сервиса Windows


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

Для просмотра списка сервисов Windows и их параметров предназначена утилита Component Services (Start -> Settings -> Control Panel -> Administrative Tools -> Services). Сервер 1С:Предприятия представлен в списке сервисов сервисом "Агент сервера 1С:Предприятия 8.1". Параметры сервиса определяют запуск процесса "Агент сервера 1С:Предприятия" (ragent), пользователя, от имени которого он запускается, а также способ перезапуска в аварийных ситуациях.

В диалоге свойств сервиса "Агент сервера 1С:Предприятия 8.1" на закладке General показана строка запуска процесса ragent, который является Агентом сервера 1С:Предприятия. Обычно эта строка имеет вид:


В ней указано, что:

* процессом Агента сервера является загрузочный модуль "C:\Program Files\1cv81\bin\ragent.exe";
* процесс ragent запускается как сервис Windows и должен управляться менеджером сервисов (-srvc);
* используется как Агент сервера 1С:Предприятия (-agent);
* при первом запуске сервиса должен быть создан кластер с параметрами по умолчанию и главным IP-портом номер 1541 (-regport 1541). По этому порту клиентские приложения должны соединяться с информационными базами, зарегистрированными в кластере;
* IP-порт агента сервера должен иметь номер 1540 (-port 1540). По этому порту Консоль кластера должна соединяться с центральным сервером для выполнения административных функций;
* при запуске процессов кластера на данном сервере им будут динамически назначаться IP-порты из диапазона 1560-1591 (-range 1560:1591).
* общие данные кластера будут размещены в каталоге "C:\Program Files\1cv81\server" (-d "C:\Program Files\1cv81\server").

Сервис "Агент сервера 1С:Предприятия 8.1" может быть добавлен или удален не только при установке или удалении 1С:Предприятия программой установки 1С:Предприятия 8.1, но и вручную. Для этого можно исполнить из командной строки утилиту ragent, указав ей соответствующие параметры.

Для создания сервиса нужно указать параметр -instsrvc и параметры: -usr - имя пользователя, от имени которого должен быть запущен сервис, -pwd - пароль этого пользователя. При этом остальные параметры станут параметрами строки запуска Агента сервера 1С:Предприятия как сервиса. Например, для стандартной регистрации сервиса Агента сервера 1С:Предприятия в отладочном режиме набор параметров должен быть таким:

"C:\Program Files\1cv81\bin\ragent.exe" -instsrvc -usr .\USR1CV81 -pwd Password -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv81\server" -debug

Для удаления сервиса нужно указать параметр -rmsrvc. Например:
"C:\Program Files\1cv81\bin\ragent.exe" -rmsrvc

Иногда бывает полено изменить строку запуска Агента сервера или другие параметры сервиса Агента, например, включить режим отладки, или создать несколько сервисов разных версий. Диалог свойств сервиса не позволяет редактировать строку запуска сервисного приложения и некоторые другие параметры, например, идентификатор сервиса. Для редактирования потребуется утилита regedit, предназначенная для просмотра и редактирования системного реестра Windows.

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

Запустите утилиту regedit (откройте Start -> Run и наберите regedit) и выберите ветку:


Среди ее параметров есть параметр ImagePath, значением которой является строка запуска Агента сервера 1С:Предприятия. Здесь можно добавить новые параметры строки запуска или поменять значения существующих. Полный список возможных параметров приведен в книге "1С:Предприятие 8.1 Клиент-сервер" документации.

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

* Создать первый сервис:
"C:\Program Files\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv81\server"

* При помощи утилиты regedit изменить идентификатор зарегистрированного сервиса. Для этого: выбрать ветку
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.1 Server Agent

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.1 Server Agent First
* Создать второй сервис:
"C:\Program Files\1cv81_10\bin\ragent.exe" -srvc -agent -regport 1641 -port 1640 -range 1660:1691 -d "C:\Program Files\1cv81_10\server"

* Быть может, его идентификатор тоже изменить. Для этого: выбрать ветку
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.1 Server Agent
и изменить ее имя, например на:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.1 Server Agent Second

Что не может сделать программа установки 1С:Предприятия?

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

Чтобы сервер 1С:Предприятия был доступен с других компьютеров в локальной сети, необходимо проверить сетевые настройки на серверном и клиентском компьютере, а также для сети в целом. Для передачи данных между клиентскими приложениями и сервером 1С:Предприятия, а также между процессами кластера серверов используется TCP/IP. От правильности его настройки зависит работа 1С:Предприятия в варианте клиент-сервер.

Процессы кластера серверов 1С:Предприятия соединяются друг с другом по адресам, определенным в качестве значений свойства "Компьютер" диалога свойств рабочих серверов. Для кластера необходимо, чтобы значением свойства "Компьютер" был либо IP-адрес в точечной нотации, либо такой символический адрес, по которому может быть определен IP адрес при помощи функции gethostbyname, определенной в программном интерфейсе протокола TCP. Определение IP-адреса выполняется либо на основании локальной таблицы символических адресов (C:\WINNT\system32\drivers\etc\hosts), либо по таблицам адресов в доступных DNS серверах. Если по символическому адресу рабочего сервера его IP-адрес не определяется или определяется неправильно (например, IP-адрес не совпадает с фактическим IP-адресом данного компьютера), то кластер работать не будет. Важно, чтобы имена компьютеров и их адреса, определенные в Windows на каждом из рабочих серверов кластера, не противоречили их именам в DNS.

На каждом рабочем сервере процессы кластера используют следующие порты: IP порт рабочего сервера (обычно 1540); IP порты из диапазонов IP портов рабочего процесса (обычно 1560-1591). Кроме того, на центральном сервере кластера используется порт кластера (обычно 1541). Если в системе используются сетевые экраны, то передача данных по этим портам должна быть разрешена. Вместо разрешения портов из приведенного списка можно разрешить передачу данных процессам кластера (ragent, rmngr, rphost).

Соединение клиентского приложения 1С:Предприятия с сервером выполняется в 2 этапа. Сначала оно устанавливает соединение с менеджером кластера. При этом используется адрес центрального сервера (символический или числовой) и порт кластера (обычно 1541). Далее клиентское приложение устанавливает соединение с одним из рабочих процессов. В качестве его адреса используется значение свойства "Компьютер" соответствующего рабочего сервера и порт рабочего процесса, который выбирается из диапазона IP портов рабочего сервера. Передача данных на эти порты должна быть разрешена во всех сетевых экранах на маршруте от компьютера клиентского приложения до компьютеров кластера серверов 1С:Предприятия. Определение IP адреса серверных процессов выполняется при помощи функции gethostbyname на компьютере клиента. Важно, чтобы имена центрального и рабочих серверов и их адреса, определенные в Windows на каждом из серверов кластера, не противоречили их именам в DNS, доступном компьютеру клиента.

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

Особенности настройки SQL-сервера

1С:Предприятие в варианте «клиент-сервер» использует для хранения данных SQL-сервер. При этом к SQL-серверу обращается только Сервер 1С:Предприятия. Клиенты 1С:Предприятия непосредственного доступа к SQL-серверу не имеют. Установка и настройка SQL-сервера подробно описана в документации по Microsoft SQL Server. Для успешной работы Сервера 1С:Предприятия с SQL-сервером необходимо обратить особое внимание на следующие настройки.

* Необходимые компоненты SQL-сервера. Для доступа к SQL-серверу со стороны Сервера 1С:Предприятия на компьютере Сервера 1С:Предприятия должны быть установлены компоненты Microsoft Data Access 2.6 или более поздний.
* Аутентификация пользователя SQL-сервером. Права доступа к базам данных SQL-сервера определяются пользователем, от имени которого происходит обращение к базам данных. С компьютера, на котором установлен SQL-сервер, запустим утилиту SQL Server Enterprise Manager, найдем узел Local (Console Root -> Microsoft SQL Servers -> SQL Server Group -> (Local)) и откроем его свойства. На закладке Sequrity можно видеть, что SQL-сервер поддерживает два способа аутентификации пользователей: SQL Server and Windows и Windows only. Аутентификация Windows позволит Серверу 1С:Предприятия обращаться к SQL-серверу только от имени пользователя USR1CV81, что не позволяет различать права доступа до различных информационных баз, обслуживаемых одним сервером 1С:Предприятия. Рекомендуется выбирать режим SQL Server and Windows. В этом случае обращение к конкретной информационной базе будет выполняться от имени пользователя, который задан в качестве пользователя SQL-сервера при создании данной информационной базы. Важно, что этот пользователь должен иметь не только полные права на базу данных информационной базы, но и права на создание баз данных в SQL-сервере и на чтение таблиц базы данных Master.
* Сетевые протоколы для доступа к SQL-серверу. Если Сервер 1С:Предприятия и SQL-сервер размещены на разных компьютерах, то необходимо выполнить настройки сетевых протоколов доступа к SQL-серверу. Это можно сделать при помощи утилиты SQL Server Client Network Utility. На закладке General можно выбрать список сетевых протоколов, используемых для доступа к SQL-серверу. Наиболее быстрым и универсальным является использование протокола TCP/IP. При использовании других протоколов необходимо иметь в виду, что некоторые из них, например Named Pipes, выполняют дополнительную аутентификацию средствами Windows при обмене данными с SQL-сервером. В этом случае для успешной работы с SQL-сервером на компьютере с SQL-сервером должен быть зарегистрирован пользователь USR1CV81, наделенный соответствующими правами. Протокол доступа к данному SQL-серверу может быть изменен на закладке Alias.

В дополнение к статье

Нет сомнения, что связка MS SQL Server + сервер "1С: Предприятие 8" - в своей нише самая востребованная и часто применяемая связка. Для её качественной поддержки желательно понимание обоих продуктов. В то же время, на практике, специалист поддержки обычно либо специализируется на администрировании MS SQL Server и не ориентируется в особенностях сервера "1С: Предприятие 8", либо, наоборот, специализируется на администрировании сервера "1С: Предприятие 8" и не ориентируется в особенностях MS SQL Server.

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

Для облегчения восприятия информации приводятся случаи из практики, примечания и советы (выделены курсивом).

Трёхзвенная схема

Как, возможно, уже известно читателю, база данных в рассматриваемом случае имеет трёхзвенную архитектуру:

Звено 1: СУБД MS SQL Server. "Хранит" и обслуживает базу данных, в конечном счёте выполняет все виды операций с базой данных. Таким образом, производительность работы базы данных, скорость и параллельность чтения-записи данных – во многом определяются производительностью MS SQL Server.

Звено 2: Сервер "1С: Предприятие 8". Служит посредником во взаимодействии между клиентами (пользователями) и MS SQL Server. Все клиентские запросы направляются на сервер, который "переводит" их на язык запросов MS SQL Server, получает результаты выполнения этих запросов, отправляет результаты клиенту.

Есть лишь малая часть операций, которые выполняются на уровне сервера "1С: Предприятие 8", без обращения к MS SQL - это, в частности, отслеживание так называемых "управляемых блокировок", чтение-запись "параметров сеанса". Обращения к СУБД в таких случаях не требуется, так как эти операции производятся не с данными базы, а со вспомогательной информацией сервера.

Звено 3: Клиентская часть "1С: Предприятие 8". Обращается к серверу "1С: Предприятие 8", получает от него результаты (то есть, например, выборки данных), отвечает за пользовательский интерфейс.

"Хотел как лучше".

После переустановки сервера "1С: Предприятие 8" пользователи жалуются на резкое падение производительности. Специалист по внедрению ПП "1С: Предприятие", производивший переустановку – лишь удивляется – мол, хотел как лучше, система должна была начать работать быстрее... Анализ ситуации показал, что серверу "1С: предприятие 8" была выделено слишком много ресурсов: его процессы (см. пункт 3) rphost заняли 15.5 Гб из 16Гб оперативной памяти сервера, в результате для уступчивого MS SQL Server практически не осталось доступной оперативной памяти.

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

Совместимость продуктов

Актуальные данные о версиях MS SQL Server, рекомендуемых к использованию в связке с "1С: Предприятие 8", следует выяснять по ссылке http://v8.1c.ru/requirements/ .

На момент подготовки статьи разработчики фирмы "1С" рекомендуют следующие варианты:

      1. SQL Server 2008 R2.
      2. SQL Server 2008, требуется установка пакета обновлений 1 (SP1).
    3. SQL Server 2005, требуется установка пакета обновлений 3 (SP3).



Технически возможно, но не рекомендуется применение MS SQL Server 2000, для него требуется установка пакета обновлений 2 (SP2), и желательна установка пакета обновлений 4 (SP4).

Следует учитывать, что в настоящий момент эта версия снята с поддержки, а также не имеет 64-разрядной версии для архитектуры x86-64.

Обратите внимание:

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

Установка клиент-серверной версии "1С: Предприятие 8"

"1C установил"

У одного из заказчиков установку "1С: Предприятия 8" произвёл системный администратор, не имеющий опыта в работе с "1С:Предприятием 8". И хотя, по его словам, он "установил 1С" - на пользовательских компьютерах отсутствовала клиентская часть, а на сервере - серверная. Разбор ситуации прояснил картину – в комплекте "1С: Предприятия 8" имелось 2 диска – установка платформы и установка шаблонов баз данных. Администратор не стал вникать в порядок установки – и установил шаблоны баз данных, а не исполняемые файлы, компоненты платформы.

Конечно же, это нетипичный пример исключительно невнимательного отношения к работе.

При установке "1С: Предприятия 8" следует учитывать, что отдельно устанавливаются:

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





Компонента "1С: Предприятие" может не устанавливаться на сервере (серверах).

В этом случае сервер будет предоставлять клиентским компьютерам доступ к базам данных "1С: Предприятие", но работа с БД в пользовательском режиме непосредственно с сервера будет невозможна.

Обратите внимание:

64-битная версия платформы не содержит клиентской части. Поэтому при установке на сервер отдельно устанавливаются 64-битные серверные компоненты, и отдельно – 32-битные компоненты клиентского приложения.

Компонента "Сервер 1C: Предприятия" нужна для подключения к MS SQL Server - это сервер приложений, связующее звено между платформой на клиентских рабочих местах и MS SQL Server.

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

При установке "как сервис" эта компонента будет запускаться и выполняться от имени выбранного пользователя:




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

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

Рабочими процессами сервера можно будет управлять (добавлять, удалять, ставить ограничение на использование ОЗУ, объявлять основным или резервным), если будет установлена компонента "Администрирование сервера 1С: Предприятия".



Обратите внимание:

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

Для 64-битной версии сервера теоретически достаточно двух рабочих процессов – одного рабочего и одного резервного. Однако на практике для обеспечения надёжности и стабильности подключений на существенном (несколько сотен) количестве пользователей требуется большее количество, оно зависит многих факторов - от количества пользователей, наполнения базы данных и объёма выполняемых запросов, поэтому авторы считают, что количество процессов в этом случае следует подбирать экспериментально.

"Уроборос"

После неудачной оптимизации настроек сервера "1С: Предприятие 8" пользователи просигнализировали о крайне медленной работе системы, а системный администратор отметил постоянную 100% загрузку процессора на сервере.

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

А дело в том, что данное ограничение работает следующим образом:

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

Установленное ограничение было настолько маленьким (300Мб), что рабочий процесс не мог полностью обслужить даже одного интенсивно работающего пользователя - в результате менеджер кластера серверов непрерывно перезапускал рабочие процессы и переподключал пользователей. Как только создавался новый процесс и пользователи к нему подключались – лимит оперативной памяти почти мгновенно достигался и вызывал следующий перезапуск. На это и уходило 100% загрузки процессора.

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

В случае, если количество подключаемых пользователей невелико (менее 50) – сервер приложений обычно устанавливают на том же компьютере, где работает MS SQL Server.

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

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

На самом сервере её настоятельно рекомендуется установить.

Доступ

Обратите внимание:

Для проверки того, что доступ обеспечен, недостаточно использования утилиты администрирования серверов 1C: Предприятия, и тем более недостаточно присутствия сервера в "Сетевом окружении"!

Необходимо на каждом клиенте выполнить вход в базу данных, установленную на сервере – только это даст 100% уверенность, что доступ обеспечен.

1. В зависимости от политик безопасности, для MS SQL Server применяется аутентификация по учетной записи Windows либо аутентификация по учётной записи MS SQL Server.




В последнем случае при создании базы данных "1С: Предприятия" система будет запрашивать логин и пароль учётной записи MS SQL Server (например, sa), в первом случае логин и пароль следует оставлять пустыми:



и тому пользователю системы, от имени которого запущен сервер 1С: Предприятия, необходимо дать права в MS SQL Server, а именно:

      полные права на базу данных, в которой располагается информационная база
      доступ к базе данных master (роль public)
      рекомендуется – права на создание базы данных, в противном случае каждую новую базу данных нужно будет сначала создавать средствами MS SQL Sever, а уже затем подключать к серверу 1С: Предприятия
      рекомендуется - право на удаление своей базы данных



Например, можно назначить рассматриваемому пользователю предопределённую роль processadmin или sysadmin.

Совет.

Если у всех пользователей одновременно пропал доступ к рабочей базе данных – нужно перепроверить права и роли пользователя в MS SQL Server, в том числе установленные для конкретной базы данных, то есть User mapping:




2. Сервер 1С: Предприятия обращается к MS SQL Server через механизм Microsoft Data Access, поэтому его компоненты должны быть установлены, а у пользователя сервера 1С: Предприятия (см. предыдущий пункт) должны быть права на их запуск.

3. Связь между клиентами и сервером поддерживается по протоколу TCP, поэтому необходимо, чтобы этот протокол поддерживался обеими сторонами. Возможны проблемы с сопоставлением имени сервера и его IP адреса, например, если используется одноранговая сеть. В таком случае следует записать соответствие в файле [С:\WINDOWS\] system32\drivers\etc\hosts .

Совет.

В случае, если сеть одноранговая – для обеспечения постоянного подключения к серверу создайте сетевой диск, который обращается к какой-либо из папок этого сервера.

4. В случае использования протокола Named Pipes, и если MS SQL Server и сервер 1С: Предприятия установлены на разных компьютерах – пользователь, от имени которого работает сервер 1С: Предприятия, должен быть зарегистрирован в списке пользователей компьютера, на котором запущен MS SQL Server.

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

6. Некоторые антивирусы могут блокировать "нежелательный" сетевой трафик, так что может потребоваться дополнение их списков исключений.

7. Релиз платформы "1С: Предприятия 8" должен быть абсолютно одинаковым на клиенте и на сервере.

"Близнецы"

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

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

Первоначальные настройки MS SQL Server и базы данных

“И так работает”

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

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

И, конечно, именно в этот момент обнаружится, что база при таком пересчете "зависает", или "вылетает", или не даёт работать остальным пользователям.

Этот своего рода "закон Мэрфи" касается каждого из нижеперечисленных пунктов.

Перед началом использования MS SQL Server в качестве СУБД для "1С: Предприятие" рекомендуется:

1. Установить значение параметра max degree of parallelism равным 1.

То есть:

      после подсоединения к серверу войти в свойства сервера через контекстное меню, пункт Properties
      далее выбрать страницу Advanced и отредактировать параметр max degree of parallelism






В противном случае некоторые запросы, формируемые сервером 1С: Предприятия, могут вызвать ошибку "Intra-query parallelism caused your server command (process ID #XX) to deadlock. Rerun the query without intra-query parallelism by using the query hint option (maxdop 1)". После этой ошибки клиентская часть зачастую аварийно завершается.

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

2. Создать План обслуживания (Maintance Plan), еженочно обрезающий (shrink) базу данных временных таблиц tempdb. Автоматически база временных таблиц сервером 1С: Предприятия очищается не всегда, а иногда, в результате неудачно написанного запроса, может быть сформирована и не очищена временная таблица размером, например, 50 Гб. Вследствие этого может закончиться место на диске, вследствие этого возможно аварийное завершение и клиентской, и серверной части, также присутствует небольшой риск нарушения целостности данных.

То есть нужно:

      зайти в MS SQL Management Studio
      после подсоединения к серверу раскрыть раздел "Maintance plans"
      создать новый (или дополнить имеющийся) План обслуживания,
      добавить в него пункт "Execute T-SQL Statement task" (так как в задании "Shrink database" нельзя выбрать базу tempdb) с кодом




1.USE
2.
3.GO
4.
5.DBCC SHRINKFILE (N"tempdev" , 0, TRUNCATEONLY)
6.
7.GO
8.
9.DBCC SHRINKFILE (N"templog" , 0, TRUNCATEONLY)
10.
11.GO

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

1.USE tempdb
2.
3.GO
4.
5.EXEC sp_helpfile
6.
7.GO




“Горшочек, не вари”

Самый часто встречающийся на практике способ переполнить tempdb и тем самым "уронить" сервер – это забыть указать условие при соединении таблиц.

А именно, допустим, у нас в базе есть две таблицы, размером по 20 тысяч записей каждая. Допустим, между их записями можно установить однозначное соответствие, и мы пишем запрос, создающий временную таблицу, которая содержит 20 тысяч записей с полями обеих исходных таблиц. Но если мы забудем указать условие соединения – каждая запись первой таблицы соединится с каждой записью второй! То есть получится результирующая таблица из 20’000* 20’000=400 млн. записей. И так далее.

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

Нужный путь для хранения файлов рабочей базы лучше задать при её создании, отредактировав колонку Path (Путь):




Для изменения физического расположения файлов базы временных таблиц используется команда ALTER DATABASE, то есть в MS SQL Management Studio нужно выполнить следующий скрипт (команда "New query")

1.USE master
2.
3.GO
4.
5.ALTER DATABASE tempdb
6.
7.MODIFY FILE (NAME = tempdev, FILENAME = "Новый_Диск:\Новый_Каталог\tempdb.mdf")
8.
9.GO
10.
11.ALTER DATABASE tempdb

12.
13.MODIFY FILE (NAME = templog, FILENAME = "Новый_Диск:\Новый_Каталог\templog.ldf")
14.
15.GO

4. Не следует затруднять "рост" рабочей базы данных и её лога – ограничения на размер быть не должно, свойство "Autogrowth" должно быть установлено в процентах, рекомендуемое значение 10%. В противном случае добавление данных в базу, восстановление из архива и другие операции могут выполняться неоправданно долго.

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



5. Рекомендуется включить в MS SQL Server поддержку сетевого протокола TCP/IP и выключить все остальные, в противном случае совместная работа MS SQL Server и сервера 1С: Предприятия будет менее стабильной.




6. Там же - очистить раздел Alias, т.к. её установка приводит к ошибкам взаимодействия MS SQL Server и сервера 1С: Предприятия.

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

1. При создании базы данных из "1С: Предприятия" установить "смещение дат" 2000, в противном попытка записи даты ранее 01.01.1753 (что возможно в силу человеческого фактора) - будет вызывать сбои в работе базы данных.

Внимание! Смещение дат нельзя будет поменять у существующей базы данных!



2. Установить Режим восстановления (Recovery model) в значение Простой (Simple), либо создать План обслуживания (Maintance Plan), который будет ежедневно создавать резервную копию (backup) базы данных и обрезать журнал транзакций (log-файл). В противном случае при некоторых операциях журнал транзакций (log-файл) будет очень быстро расти: например, при реструктуризации базы данных рост размера log-файла может в несколько раз превысить размер самой базы данных.




3. Создать План обслуживания (Maintance Plan), выполняющий следующие регламентные задания как минимум раз в неделю:

      Создание резервной копии (backup) базы данных.
      Обновление статистик базы данных и очистка процедурного кэша (следует отметить, что свойство autoupdate statistics не подразумевает очистку процедурного кэша).
      Очистка процедурного КЭШа – не входит в стандартные операции Планов обслуживания, этот шаг нужно определять как выполнение скрипта (Execute T-SQL Statement) со следующим содержимым:
      DBCC FREEPROCCACHE
      Реиндексация таблиц базы данных.






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




Заключение

Рассмотрены вопросы, которые чаще всего вызывают затруднения у системных администраторов и внедренцев "1С: Предприятие 8", в связи с совместным использованием MS SQL Server и клиент-серверной версии "1С: Предприятие 8".

Автор надеется, что достаточно последовательно и доступно осветил "обе стороны медали".

P.S. Чаще делайте бэкапы!

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

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

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

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

Общая схема клиент-серверного варианта работы

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

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

Для клиентского соединения кластер адресуется по имени центрального сервера и номеру сетевого порта. Если используется стандартный сетевой порт, то достаточно указания одного имени центрального сервера.

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

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

Состав простейшего кластера серверов

Простейший кластер серверов может располагаться на одном компьютере и содержать один рабочий процесс:

На рисунке представлены все элементы, которые задействованы в работе кластера серверов, а именно:

  • процессы кластера серверов:
    • ragent.exe ;
    • rmngr.exe ;
    • rphost.exe ;
  • хранилища данных:
    • список кластеров;
    • реестр кластера.

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

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

Непосредственно кластер серверов включает в себя следующие элементы:

  • один или несколько процессов rmngr.exe ;
  • реестр кластера ;
  • один или несколько процессов rphost.exe .

Процесс rmngr.exe называется менеджером кластера . Этот процесс управляет функционированием всего кластера. В составе кластера может существовать несколько процессов менеджера кластера. Один из этих процессов всегда является главным менеджером кластера , остальные - дополнительными менеджерами . Рабочий сервер, на котором функционирует главный менеджер кластера и располагается реестр кластера, называется центральным сервером кластера . Одной из функций главного менеджера кластера является ведение реестра кластера.

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

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

Масштабируемость кластера серверов может осуществляться несколькими способами:

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

Использование нескольких менеджеров

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

Часть сервисов может использоваться только на главном менеджере кластера:

  • сервис конфигурации кластера,
  • сервис блокировок кластера,
  • сервис управления предметами отладки.

Остальные сервисы могут быть назначены произвольным менеджерам кластера:

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

Использование нескольких рабочих процессов

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

Использование нескольких рабочих серверов

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

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

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

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

Резервирование кластера

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

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

Резервирование рабочих процессов

Каждому рабочему процессу можно указать вариант его использования: Использовать , Использовать как резервный , Не использовать .

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

Устойчивость к обрыву канала связи

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

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

Сеансы

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

  • Толстый клиент , Тонкий клиент , Веб-клиент - создаются при обращении, соответственно, толстого, тонкого и веб-клиента к информационной базе,
  • Конфигуратор - создается при обращении конфигуратора к информационной базе,
  • COM-соединение - создается при обращении к информационной базе через внешнее соединение,
  • WS-соединение - создается при обращении веб-сервера к информационной базе в результате обращения к Web-сервису, опубликованному на веб-сервере,
  • Фоновое задание - создается при обращении рабочего процесса кластера к информационной базе. Предназначен для выполнения кода процедуры фонового задания,
  • Консоль кластера - создается при обращении утилиты администрирования клиент-серверного варианта к рабочему процессу,
  • COM-администратор - создается при обращении к рабочему процессу через внешнее соединение.

Работа под управлением различных операционных систем

Все процессы кластера серверов способны функционировать как под управлением операционной системы Windows, так и под управлением операционной системы Linux. Благодаря тому, что взаимодействие процессов между собой осуществляется по протоколу TCP/IP, в составе одного кластера могут присутствовать рабочие серверы с различными операционными системами.

Утилита администрирования кластера серверов

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

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

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

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

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

Начнем с клиентов, текущая версия платформы (8.2) предусматривает использование трех типов клиентов. Разберем их подробнее.

Толстый клиент

Это классическое клиентское приложение 1С, до выхода платформы 8.2 он был единственно доступным видом клиента. Схема работы толстого клиента следующая: клиентское приложение запрашивает данные у сервера 1С, то в свою очередь запрашивает их из БД и предает обратно клиенту, на котором и производится их обработка. Как можно заметить, данная схема неоптимальна: сервер 1С по сути является всего лишь прослойкой между клиентом и БД, все вычисления происходят на клиенте. Это накладывает повышенные требования на клиентские ПК, т.к. вычислительные мощности сервера не используются. Стоит четко понимать, что в режиме толстого клиента вы не получите увеличения быстродейстивия от перехода к клиент-серверной версии, возможно даже наоборот.

Тонкий клиент

Его можно назвать основным видом клиентского приложения для платформы 8.2, в теории, на практике не все так гладко и мы еще к этому вернемся. Схема его работы кардинально иная: клиент запрашивает данные у сервера 1С, тот получает их из БД, обрабатывает и отдает клиенту результат вычислений. Основная вычислительная нагрузка при этом ложится на сервер, поэтому особых требований к клиентским ПК и каналу от клиента к серверу не предъявляется.

Также тонкий клиент может работать как по протоколу TCP/IP в локальной сети, так и через HTTP через интернет. Для этого требуется еще один посредник - веб-сервер, который передает запросы клиента серверу 1С, никакой обработки данных на веб-сервере не производится, он используется исключительно как транспорт. Преимущества тонкого клиента понятны, он позволяет, при наличии мощного сервера, значительно ускорить работу с программой, также значительно снижается сетевой трафик, что весьма актуально для офисных сетей.

Веб-клиент

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

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

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

На сегодня в режиме управляемого приложения работает лишь часть типовых конфигураций, такие как: Управление небольшой фирмой, Управление торговлей 11, Розница 2 и Зарплата и управление персоналом. Эти решения могут использовать все преимущества новой платформы. Бухгалтерия предприятия 2.0 не использует режим управляемого приложения и в тонком и веб-клиентах работать не будет, это же относится и ко многим сторонним решениям, таким как "Камин" и т.п.

Выводы

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

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

Кластер серверов 1С

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

Также система не накладывает никаких требований к платформам. Вы можете совместно использовать как Windows так и Linux сервера, в качестве веб-сервера можно использовать Apache и IIS, из СУБД поддерживаются PostgreSQL, MS SQL Server, IBM DB2 и Oracle. Поэтому никто не мешает вам создать схему, в которой сервер 1С работающий на платформе Linux будет работать совместно с сервером БД под управлением Windows Server и IIS и наоборот. Кроме того вы можете использовать несколько серверов СУБД (как и веб-серверов) располагая разные базы на разных серверах.

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

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

Любой кластер состоит из Центрального сервера 1С Предприятие и рабочих серверов. В простейшей конфигурации это будет один и тот же физический сервер. Однако при необходимости мы можем добавить дополнительные рабочие сервера, нагрузку по которым будет балансировать центральный сервер. Это позволяет быстро и прозрачно для пользователей увеличить вычислительную мощь системы и увеличить отказоустойчивость. Кластер также не накладывает требований к однородности платформы, в его составе могут работать сервера как под управлением Windows, так и под управлением Linux.

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

Например, если у вас небольшая нагрузка и вы используете толстый клиент и не поддерживающую режим управляемого приложения конфигурацию имеет смысл совместить кластер серверов 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С

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

Средний процент отклонения от эталона Тест Гилева, усл. ед.
50 пользователей 100 пользователей 150 пользователей
Схема структуры №1 "Кластер 1С-серверов, подсоединенный к кластеру с синхронной репликацией SQL AlwaysOn по протоколу IP" 0,42245 0,44433 0,4391 На 14% 25,13
Схема структуры №2 "Кластер 1С-серверов, подсоединенный к кластеру с синхронной репликацией SQL AlwaysOn по протоколу IP с шифрованием" 0,435505 0,425227 0,425909 На 12% 21,65
Схема структуры №3 "Кластер серверов 1С "active-active", подсоединенный к единственному серверу СУБД по протоколу IP." 0,40901 0,41368 0,42852 На 9% 28,09
Эталон. Схема структуры №4 "Расположение сервера 1С и СУБД на одном аппаратном сервере без виртуализации с взаимодействием по SharedMemory" 0,36020 0,42385 0,36335 --- 34,23

Таблица 2 - Итоговая таблица (сокращенный вариант) практических испытаний разных вариантов построения систем 1С

Поделиться: