gifts2017

Параллельный запуск нескольких серверов 1С одной версии (в обычном режиме и в режиме отладки)

Опубликовал mxm2 mxm2 (mxm2) в раздел Администрирование - Системное

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

Изначально было найдено описание решения: http://infostart.ru/public/71077/

"В 1С:Предприятии отсутствуют штатные возможности по регистрации нескольких экземпляров сервера 1С:Предприятия одной версии (8.1 или 8.2).

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

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

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

Первоначальная установка: 

Начальные условия: 1 копия агента сервера 1С уже установлена как служба. 

Порядок добавления второй (отладочной) копии:

1. Создаем новую папку для служебной информации сервера (рис. 1)рис. 1

проверяем/устанавливаем права доступа на данную папку сервера (anig99)

2. Создаем новую ветку реестра (проще всего через экспорт - импорт), меняем порты (на стандатных портах уже работает другой сервер 1с), папку (пп1), добавляем ключ "-debug" (для запуска в режиме отладки) рис. 2

Рис. 2
Параметр -debug можно расположить в любом месте строки параметров (на рисунке он в конце).

3. После этого нужно перезагрузить MS сервер - соответствующая служба появится в списке служб сервера  (рис. 3)

рис.3

Можно обойтись без перезагрузки сервера. Достаточно воспользоваться командой sc. что-то типа sc create 1CServerEnterpriseServer binPath= "C:\Program Files (x86)\1cv82\8.2.15.310\bin\ragent.exe". В этом случае создаться ветка в реестре и служба сразу появится в списке служб Windows. Останется только удалить из реестра эту новую ветку и переименовать созданную нами в 1CServerEnterpriseServer (вместо 1C:Enterprise 8.2 Server Agent[debug]). Все. Обновляем список служб и видим нашу службу, которую можно запускать.  (anig99)

Иногда после добавления второй службы в режиме отладки перестают запускаться в автоматическом режиме обе. Вручную стартуют. Журнал винды говорит "Сбой при запуске службы "Агент сервера 1С:Предприятия 8.2 (x86-64)" из-за ошибки Имя учетной записи задано неверно или не существует, или же неверен указанный пароль.", в этом случае нужно либо использовать для запуска сервера локальную учетную запись, либо вместо сетевой записи учетки типа username@domain, использовать запись типа domain\username. (motkot)

4. Создаем новую ветку в администрировании Серверов 1С (с соотвествующим портом) рис. 4

рис. 4
Возможно, понадобится также, создать рабочий сервер и процесс (иногда они не создаются автоматом) (Igor2010)

5. Создаем новую базу 1С: (здесь важно в имени сервера указать наш нестандартный порт например так "Srv:1741"), pис. 5

рис.5

Теперь можно отлаживать приложение на сервере вне зависимости от работающей пользовательской копии.

Реконфигурация при обновлении платформы

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

Обновление платформы, службы (рис.6)

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

Для этого, всего-то нужно немного подправить реестр, как мы уже видели ранее, на рис 2, т.е. приблизительно так, рис.7:

Обновлеине платформы, реестр (рис.7)

 

После этого нужно проверить и перезапустить соответсвующую службу, рис.8:Обновлеине платформы, проверка и перезапуск службы (рис.8)

Переключение базы в режим отладки: 

Чтобы переключить существующую базу из "рабочего" режима в режим "отладки", достаточно отсоединить её в консоли администратора (рис.4) от рабочего сервера естественно без очистки, и подсоединить к отладочному (это происходит очень быстро), не забываем изменить порт сервера в описании пути к базе (рис.5). 

В процессе поиска решения были использованы материалы: 

http://infostart.ru/public/71077/ 

http://www.gilev.ru/1c/app/ 

http://www.intelav.ru/help/install-1c-server

Особое спасибо: anig99Igor2010motkot, за дельные комментрии.

Теперь мы знаем: что и как делается.)))

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

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение
Комментарии
1. Александр Медведев (anig99) 23.04.12 15:27
А как перекинуть базу с одного сервера на другой?
Всё. Ступил. Через консоль администрирования 1с
2. mxm2 mxm2 (mxm2) 23.04.12 15:41
Вариант 1 - через конфигуратор (выгрузка - загрузка данных)
Вариант 2 - через администрирование серверов 1с, от одного оцепить базу (удаление, без фактической очистки), к другому подцепить (SQL - база останется прежней)
3. Александр Медведев (anig99) 23.04.12 16:26
(2) второй вариант предпочтительнее, иначе долго.
(0) Ещё пару дополнение к статье:
- нужно установить права доступа на папку сервера srvinfo[debug] (особенно когда сервер запускается под отдельным пользователем)
- можно обойтись без перезагрузки сервера. Достаточно воспользоваться командой sc. что-то типа
sc create 1CServerEnterpriseServer binPath= "C:\Program Files (x86)\1cv82\8.2.15.289\bin\ragent.exe"
В этом случае создаться ветка в реестре и служба сразу появится в списке служб Windows. Останется только удалить из реестра эту новую ветку и переименовать созданную нами в 1CServerEnterpriseServer (вместо 1C:Enterprise 8.2 Server Agent[debug]). Все. Обновляем список служб и видим нашу службу, которую можно запускать.
begemot; mxm2; IgorXml; sevushka; +4 Ответить 1
4. Яков Коган (Yashazz) 25.04.12 16:26
Можно очень тупой вопрос: а зачем? Что именно тестируется таким образом? Чем плох тот же сервер?
5. Екатерина Стельмах (steklonit) 25.04.12 17:29
6. Екатерина Стельмах (steklonit) 25.04.12 17:34
(4) Yashazz, на сервере, запущенном без ключа debug, невозможна отладка кода модулей, выполняющихся в контексте сервера.
"Боевой" сервер нельзя запускать с ключом debug из-за особенностей работы кеша - приложение будет работать заметно медленнее.

Так же правильным решением является наличие тестового сервера приложений по той причине, что программист может неосторожно "положить" сервер предприятия своим сырым кодом, при этом пользователи, работающие на боевом сервере, продолжат работать без проблем.
7. mxm2 mxm2 (mxm2) 25.04.12 19:20
(5) steklonit, В свое время как-то не получилось найти Ваше описание, по сему и пришлось "изобрести велосипед"... в качестве компенсации могу поместить ссылку на Вашу статью в основном тексте. Замечу также, что в 8.2 потерь в производительности отладочной копии практически нет. И еще: запуск сервера в режиме отладки особенно востребован, когда разрабатываемая конфигурация использует тонких клиентов/управляемые формы, как например УТ 11. Сам "делил" сервер 1с с целью проверки возможности избавления от глюка "1970 года" (когда в у пользователей при выводе на экран печатных форм документов, текстовых представлений дат на форме документа и отчетов вместо правильной даты скажем 13.03.2012, выводится 01.01.1970, сама дата документа в журнале при этом отображается правильно), глюк возникает раз в 2-3 дня, лечится перезапуском агента сервера 1с. Разделением проверял версию, что подобное влияние оказывает отладочный режим сервера: в неотладочном режиме частота глюка уменьшилась, но он всеравно проявляется. Пока решаю проблему еженочным рестартом агента (что при наличии обменов не есть хорошо).
8. cratos2 (CratosX) 29.04.12 18:21
(7) mxm2, смещение дат 2000 пробовали?
9. mxm2 mxm2 (mxm2) 03.05.12 07:46
(8) cratos2, cмещение с самого начала 2000. на всех базах.
10. mxm2 mxm2 (mxm2) 03.05.12 10:53
Выявлена еще одна закономерность: раньше (при отладке в том же сервере 1с) были отдельные зависания при работе пользователей в "боевой" базе, сейчас (при "изолированной" отладке в отдельном сервере 1с) - подобного влиения не наблюдается. так что "делить" всетаки есть смысл.
11. Александр Милютин (sanfoto) 07.11.12 09:08
(6) steklonit,
"Боевой" сервер нельзя запускать с ключом debug из-за особенностей работы кеша - приложение будет работать заметно медленнее.

А есть реальное подтверждение?
У нас не было замечено замедления на 1с 8.2)) правда все Дебажится в копиях БД(периодически копии обновляем из Бэкапа основной БД) и потом подтягивается в основную из Хранилища.
12. mxm2 mxm2 (mxm2) 07.11.12 09:25
(11) sanfoto, про скорость: кроме субъективных наблюдений ничего нет...), но отлаживать лучше в отдельном процессе, т.к. иногда проще передернуть отлаживаемый сервер 1С, чем дождаться окончания процесса. Да вобщем то при отладке некоторых вещей и "свалить" сервер 1с получалось )
13. Александр Милютин (sanfoto) 07.11.12 09:41
(12) mxm2,
"свалить" сервер 1с получалось )

аналогично)) но никто не отменял несколько rphost сделать))

а вообще мы сейчас ушли от этой схемы... для прогеров отдельная железка - таки это более реальная изоляция))
14. Igor2010 (IgorXml) 19.02.13 15:41
(3) anig99, Это не удобно: "..sc create 1CServerEnterpriseServer binPath= "C:\Program Files (x86)\1cv82\8.2.15.289\bin\ragent.exe.."". Руками потом параметры набивать надо.
По самой публикации надо добавить:
- в пункте 5. "Создаем новую базу 1С:..." не получится, пока не создадите в консоле рабочий сервер и процесс. Я вручную сделал после пункта 4.
Проверял на Windows Server 2008 r2 1С 8.2.17.
15. mxm2 mxm2 (mxm2) 19.02.13 15:51
(14) Igor2010, -debug - Отработает в любом месте... а насчет рабочего сервера - Вы правы, добавлю...)
16. Igor2010 (IgorXml) 19.02.13 16:00
Спасибо. Публикация лучшая на эту тему для 1С-иков. Понятно и наглядно.
17. Олег Сорокин (Oleg_nsk) 21.02.13 10:23
Интересно. И когда это можно будет делать штатными средствами? Слишком уж насущная проблема, когда на поддержке около десяти клиентов и более.
18. Kоstik Matiushkin (motkot) 21.02.13 11:25
После добавления второй службы в режиме отладки перестали запускаться в автоматическом режиме обе. Вручную стартуют. ОС Win 2008 R2. Журнал винды говорит "Сбой при запуске службы "Агент сервера 1С:Предприятия 8.2 (x86-64)" из-за ошибки Имя учетной записи задано неверно или не существует, или же неверен указанный пароль."
Но почему вручную стартует нормально? Да и несколько раз "перевбивали" данные учетки. Никто не сталкивался, как решить?
19. mxm2 mxm2 (mxm2) 21.02.13 11:33
(18) motkot, учетка не сетевая случаем?... если да, попорбуйте локальную учетку.
20. Kоstik Matiushkin (motkot) 21.02.13 11:36
(19) сетевая, но работала при наличии одной службы.
21. Kоstik Matiushkin (motkot) 21.02.13 20:42
(19) решение есть с сетевой учеткой, было введено в настройках службы username@domain, а если ввести domain\username то все работает на ура. можно включить в статью ;)
22. mxm2 mxm2 (mxm2) 21.02.13 20:51
(21) motkot, ок, спасибо за информацию. позднее включу.
23. mxm2 mxm2 (mxm2) 02.04.13 11:06
http://infostart.ru/public/178238/ - делает все, что здесь описано автоматом.
24. Виталий Онянов (Tavalik) 19.03.14 10:14
Спасибо! Все получилось.

Только надо еще правило для новых портов в Брандмауэр Windows добавить.
25. Виталий Онянов (Tavalik) 05.06.14 10:25
А объясните еще пожалуйста мне, почему нельзя включать режим отладки на сервере с боевыми базами? Я же буду производить отладку не на рабочей базе, а на тестовой.
26. mxm2 mxm2 (mxm2) 05.06.14 10:47
(25) Tavalik, Можно включить, но при отладке даже не рабочей базы Вы сможете "свалить" экземпляр сервера 1С, на котором работают люди.
27. Виталий Онянов (Tavalik) 06.06.14 08:39
(26) mxm2,
Я тоже об этом слышал. Но не могу понять, почему такое может произойти?
28. andrey dyak (dyak84) 30.12.14 12:22
Автор спасибо статья помогла все получилось так держать.
29. Иван Поликарпов (AisteamService) 11.02.16 13:48
У меня заработало только после того, как сделал одинаковые имена серверов в консоли администрирования. Это нормально или косяк?
30. Андрей Новиков (rugnom) 04.07.16 14:23
А при запуске второго сервиса 1С в режиме отладки не нарушается лицензионное соглашение?