ОПИСАНИЕ ПРОГРАММЫ «МикроСервер УПФ» (версия 1.02)
Вступление
Небольшие организации обычно работают с базой данных в файловом режиме. Это недорогой (не требуется приобретение сервера 1с) способ организации совместной работы нескольких пользователей. Однако он имеет серьезные недостатки. Главный из них – сетевая работа с базой данных в режиме разделенного доступа. В результате скорость работы с файлом ограничивается скоростью сети, кроме того, при совместном доступе к сетевому ресурсу Windows не в лучшую сторону меняет настройки кэширования данных этого файла, что резко снижает скорость записи. При аварийном прекращении работы сети во время записи данных может произойти порча базы, часто необратимая.
К счастью, при реализации модели управляемых форм начиная с версии 8.2 фирма 1с предоставила возможность работы с файловой базой через веб-сервер. У этого способа есть следующие преимущества:
1. Намного выше скорость работы с данными, поскольку не требуется передача «сырых» данных по сети во время обработки.
2. База не боится разрывов сети во время записи, поскольку непосредственная работа с файлом данных происходит через модуль веб-сервера. Разрыв передачи данных по сети может вызвать лишь временное прекращение работы пользователей, но не порчу данных в базе и не тем более не может вызвать разрушение самой базы.
3. Нетребовательность к скорости сети и к быстродействию клиентских компьютеров. Это обеспечивает легкое масштабирование - путем апгрейда лишь одного сервера можно существенно повысить производительность работы.
4. Возможность работы как в тонком клиенте 1с, так и в веб-браузере.
5. Более высокая защищенность от утечки данных, так как пользователи не имеют непосредственного файлового доступа к базе.
Однако при работе в таком режиме можно столкнуться со следующей проблемой. Дело в том, что модуль 1с для веб-сервера — однопоточный. Соответственно, все пользователи 1с, подключенные к одному веб-серверу, встают в единую очередь серверных вызовов. Если серверные вызовы длительные, что возможно при значительных объемах данных в базе или при выполнении сложных запросов, то это может полностью парализовать работу других пользователей: они будут вынуждены ждать.
Вот что написано по этому вопросу на сайте 1с: "Прямо в адресное пространство веб-сервера загружается компонент для работы с файловой базой данных и сами данные информационной базы. При этом нагрузка на веб-сервер значительно возрастает, а пользователи одной информационной базы не имеют возможности работать параллельно. Все их запросы к базе данных выстраиваются в одну очередь. " (с)
Но решить эту проблему можно достаточно просто. Нужно использовать вместо одного веб-сервера несколько, вплоть до того, что каждому клиенту выделить свой собственный серверный процесс. К сожалению, 1с не предоставляет возможности автоматической публикации конфигурации через веб-модуль на нескольких экземплярах сервера. Тем не менее, для сервера Apachе это можно осуществить путем запуска нескольких экземпляров сервера с указанием различных конфигурационных файлов.
Описание работы программы
Программа выполняет ретрансляцию входящих tcp-соединений с указанного «главного» порта на один из портов, на которых запущен веб-сервер. Запуск экземпляров веб-сервера Apache происходит автоматически при старте программы. Для обеспечения этого программа предварительно создает временные конфигурационные файлы, которые указывает при запуске экземпляров веб-сервера.
Ретрансляция соединений происходит следующим образом: Поступившее соединение проверяется по таблице активных трансляций. Если трансляция от ip-адреса источника уже существует, то используется экземпляр веб-сервера, связанный с этой трансляцией и соединение ретранслируется на соответствующий порт Apache. Если же поступившее соединение в таблице трансляций не найдено — то оно направляется на экземпляр веб-сервера с наименьшим (или нулевым) количеством активных трансляций, при этом информация об этом сохраняется в таблице трансляций. Трансляции, время жизни которых превысило таймаут сессии (25 минут по умолчанию), считаются неактивными и удаляются из таблицы трансляций. Экземпляры веб-сервера перезапускаются автоматически в фоновом режиме таким образом, чтобы минимизировать время недоступности сервиса. Перезапуск веб-серверов позволяет освободить память.
Необходимо особо отметить следующие нюансы:
С рабочим процессом веб-сервера ассоциируется именно клиентский компьютер, а не клиентский сеанс 1С:Предприятия. Соответственно, если с одного компьютера будет несколько подключений — они все будут обслуживаться одним веб-сервером. Однако, это более эффективно, чем работа всех пользователей всей локальной сети в одном серверном процессе.
Для сервера терминалов данное решение будет плохо применимо по причине, указанной выше. Все соединения с сервера терминалов будут идти от одного IP-адреса, соответственно, они будут транслироваться на один рабочий процесс веб-сервера.
Необходимо отключать использование прокси-сервера в клиентских приложениях, поскольку в этом случае все клиенты будут подключаться к программе от адреса прокси-сервера. При использовании тонкого клиента это решается ключом запуска /NoProxy, при использовании веб-клиента — через настройки браузера.
Все имена и пути в ini-файле должны быть заданы в латинском алфавите
Перед выполнением действий, требующих установки монопольного режима (удаление помеченных объектов, тестирование и исправление и т.п.), необходимо останавливать программу МикроСервер УПФ (сервис), и выполнять эти действия через обычное подключение к базе. Это связано с особенностями механизма установки монопольного режима при многопользовательском доступе через веб-сервер, который не полностью с данной технологией.
Данное решение ни в коей мере не затрагивает лицензирование 1с, оно не увеличивает и не уменьшает потребностей в клиентских лицензиях.
Системные требования
1C версии 8.2 и выше (рекомендуется не ниже 8.3.5), с установленным тонким клиентом для файлового режима и с модулями расширения веб-сервера.
ОС Windows XP, 7, 2003Server
Apache 2.2
Права администратора для установки и настройки программы
Разрешения брандмауэра на подключение к используемым портам
Наличие достаточного объема свободной оперативной памяти для запуска заданного количества веб-серверов с модулями 1с. Потребность в памяти определяется прикладным решением (конфигурацией). В частности, для БП 3.0 следует планировать минимум 0,5 Гб на один экземпляр веб-сервера.
Запуск и настройка
Программа может быть запущена как обычное консольное приложение, так и быть установлена как служба Windows с именем apache_1c_redir. Предпочтительнее работа в режиме службы. Для установки программы как сервиса нужно запустить redir_1c.exe с ключом '-i' или выбрать соответствующий элемент из группы программы в меню Пуск. Для удаления службы используется ключ '-r'.
Параметры программы задаются с помощью файла redir_1c.ini, который находится в каталоге программы. Далее приведено описание параметров ini-файла. В значениях параметров не допускаются буквы национальных алфавитов, все пути к файлам должны быть заданы латиницей!
MAIN_PORT
Задает tcp-порт, на котором программа принимает соединения от клиентов. Должен быть свободен, то есть, на нём не должен работать какой-то другой сетевой сервис. Значение представляет собой целое число — номер порта.
MAIN_IP
Задает ip-адрес, на котором программа принимает соединения от клиентов. Если параметр не указан, то программа принимает запросы на все IP-интерфейсы компьютера.
SLAVE_PORTS
Задает список портов, которые будут использоваться для автоматического запуска экземпляров веб-сервера Apache. Порты должны быть свободны. Значение представляет собой набор целых чисел — номеров портов, разделенных запятой. Количество портов определяет количество экземпляров веб-сервера. В Lite-версии используются первые 3 порта, остальные игнорируются. Количество портов (количество экземпляров Apache) не ограничивает количества пользователей, оно лишь влияет на возможность параллельно выполнять серверные вызовы 1с.
HTTPD
Исполняемый файл веб-сервера Apache. Значение представляет собой строку, задающую путь к файлу httpd.exe установленного на данном компьютере веб-сервера Apache, без кавычек.
WEB_MODULE
Модуль веб-сервера для 1с. Значение представляет собой строку, задающую путь к файлу wsap22.exe установленной на данном компьютере платформы 1с, без кавычек.
BASE
Параметр описания информационной базы. В отличие от других параметров, эти параметры могут повторяться в файле несколько раз — один параметр для каждой публикуемой информационной базы.
Значение представляет собой имя базы для публикации и путь к базе, разделенные точкой с запятой. Имя базы для публикации — строка из латинских букв и цифр без пробелов и без кавычек. Путь к базе — полный путь к каталогу базы данных, без кавычек.
WORK_DIR
Указывает рабочий каталог программы, куда программа сохраняет на время работы файлы настройки веб-серверов, а также выводит таблицу трансляций. Может быть задан как полным путём без кавычек, так и просто в виде имени подкаталога в каталоге программы. Если параметр не задан — программа создает временный каталог в системном каталоге временных файлов, удалив его по завершении работы. Если каталог указан и он при этом не существует — программа создаст его и удалит после успешного завершения работы.
LOG_FILE_NAME
Указывает лог-файл, куда программа пишет события. Параметр может быть задан как полным путем без кавычек, так и просто в виде имени файла в каталоге программы. Если параметр не задан - сообщения программы выводятся на консоль. Следует указывать, если программа запускается как служба.
LOG_LEVEL
Задает уровень детализации событий, 0 — минимальная детализация, 1 — полная. При полной детализации фиксируется начало и завершение каждого tcp-соединения. Полная детализация при использовании лог-файла может привести к повышенной нагрузке на дисковую подсистему и к расходованию свободного места на диске.
TIMEOUT
Задает время в секундах, прошедшее после последней активности клиентского IP-адреса, после которого программа может считать клиентский сеанс закрытым, и соответственно перестанет учитывать его в счетчике трансляций на конкретный порт. По умолчанию – 25 минут. Не рекомендуется задавать меньшее значение без особой необходимости и тестирования на конкретном решении.
TEMP_DIR
Указывает каталог для временных данных сеансов 1с. Если параметр не задан — 1с использует для временных данных каталоги информационных баз. Рекомендуется указывать для предотвращения "засорения" каталогов баз ненужными временными файлами.
VRD_POOL_OPTIONS
Предназначена для 1с версии 8.3 и выше. Задает строчку с дополнительными параметрами, которые указываются в файле публикации информационной базы (.vrd), в том виде, как они должны быть записаны в формате xml-файла в разделе pool. Пример:
VRD_POOL_OPTIONS=size="10000" maxAge="300" attempts="5" attemptTimeout="500" waitTimeout="500"
Порядок установки программы
Запустите инсталлятор, подтвердите согласие с лицензионным соглашеним, выберите каталог, куда будет установлена программа. При необходимости работы в демо-режиме переименуйте файл демо-ключа redir_1c.key.demo в redir_1c.key (если в каталоге программы есть рабочий ключ — предварительно сохраните или переименуйте его). Задайте параметры программы в ini-файле. Проверьте корректную работу программы её запуском и подключением к ней из веб-браузера через адресную строку вида «http://_сервер_:_порт_/_база_». При необходимости установите программу как службу Windows.
Ограничения бесплатно распространяемой версии программы
Если программа при запуске не находит корректный ключевой файл (redir_1c.key), она запускается в Lite-режиме. При этом количество запускаемых экземпляров веб-сервера ограничено 3, количество сеансов пользователей не ограничивается.
Если программа находит демонстрационный ключевой файл – она запускается в демо-режиме. При этом отсутствует дополнительное ограничение на количество запускаемых экземпляров веб-сервера, но время работы программы ограничено 4 часами. По истечении этого времени программа будет завершена, соответственно, сеансы пользователей будут прерваны. Каждый последующий запуск начинает отсчет заново.
© Бреднев Александр, 2014