PROИТ
Office 365, AD, Active Directory, Sharepoint, C#, Powershell. Технические статьи и заметки.
Перезапуск агента 1С на кластере не под админом или удаленный рестарт сервиса на Windows Server 2012 R2
Дано: виртуальная машина с ОС Windows Server 2012 R2 (функция сервера — кластер 1С). Установлен сервер 1С 8.3. В службах присутствует агент сервера 1С.
Задача: в некоторых случаях возникает необходимость сделать перезапуск агента 1С, поэтому появилась задача сделать так, чтобы определенные доменные пользователи могли перезапускать службу (агента 1С), не заходя на сам сервер и не имея административных прав (это освобождает администратора от необходимости заходить на сервер и делать перезапуск).

Решение: для перезапуска агента пользователь на своем ПК будет запускать bat-файл, который содержит специальную команду удаленного перезапуска сервиса.
Описание
Настройку делаем в два этапа:
1. Подготовка сервера (кластера 1С) — назначение прав на сервис при помощи специальной утилиты.
2. Подготовка клиента (ПК пользователя) — создание bat-файла для удаленного перезапуска.
ЭТАП 1. Подготовка сервера (кластера 1С) — назначение прав на сервис при помощи специальной утилиты.
Первоначально нужно предоставить определенному пользователю право на перезапуск сервиса.
Самым удобным способом для нас оказалось это — задать права при помощи утилиты SubInACL (скачивайте ее с официального сайта Microsoft).
После установки утилиты SubInACL на кластере при помощи следующей команды можно посмотреть какие права назначены на сервис 1С агента:
В файле service1cAgent.txt в итоге будет примерно такая информация:
Видно, что кроме администраторов никто особых прав не имеет.
Нам нужно назначить права на данный сервис нужному пользователю, например, mydomain\user1.
Сначала попробовали эту команду:
не сработало
При попытке что-то сделать с сервисом почти всегда получали ответ об отсутствии доступа:

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

LQSETOPI — перечисление предоставляемых пользователю прав.
Расшифровка прав для данной команды:

2. Подготовка клиента (ПК пользователя) — создание bat-файла для удаленного перезапуска.
У пользователя имеющего право на перезапуск сервиса используем утилиту PsService.exe (скачивайте ее с официального сайта Microsoft, установки она не требует).
Проверить доступ к сервису на удаленном сервере можно при помощи команды ниже.
Чтение сервиса под пользователем с другой машины:
Где \\SRV-NODE — это имя сервера (кластера 1С), на котором нужно произвести перезапуск 1С агента.
Непосредственно перезапуск делается следующей командой.
Команда перезапуска сервиса под пользователем, у которого назначены вышеуказанные права:
На перезапуск сервиса может уйти около одной минуты.
При успешном выполнении команды получаем:

Для удобства делаем батник, запускающий данную команду (например, Restart1CAgentOnCluster.bat) и кладем его там же где и утилита psservice.
Содержимое файла Restart1CAgentOnCluster.bat:
Результат выполнения bat-файла на ПК пользователя:

Пользователю понадобится для файла:
- PsService.exe — утилита командной строки.
- Restart1CAgentOnCluster.bat — должен лежать в той же папке, что и файл PsService.exe
Т.е. достаточно предоставить пользователю два этих файла и он сможет по запросу делать перезапуск 1С агента на сервере (например, если что-то у кого-то зависло в 1С, а админ в отпуске!)
Как перезапустить агент сервера 1с
В Windows "Панель управление" — "Администрирование" — "Службы"

В списке служб находим в колонке "Имя" "Агент сервера 1С:Предприятия 8.x". Состояние — "Работает". Правой кнопкой на строке названия службы вызываем контекстное меню и нажимаем кнопку меню "Остановить" или "Перезапустить"

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

Чтобы запустить, необходимо там же, правой кнопкой вызвав меню, выбрать пункт "Запустить"

Служба "Агент сервера 1С 8" будет запущена, если в процессе запуска не возникнут ошибки.
Решение проблемы: агент сервера 1С:Предприятие останавливается
Решаемая задача: в этом материале мы рассмотрим решение такой проблемы, когда агент сервера 1С:Предприятие останавливается.
Возможные причины:
- Переполнен кэш сервера 1С или закончилось место на диске.
- Переименован сервер, на котором установлен агент сервера 1С.
- Повредился файл с настройками кластера 1С.
- Заняты порты, используемые сервером.
Для выполнения описанных действий требуется учетная запись Администратора.
Первый вариант решения проблемы ‒ изменение портов работы сервера 1С
Запускаем редактор реестра.

Рисунок 1 — Команда запуска редактора реестра
Находим ветку реестра:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\1C:Enterprise 8.3 Server Agent\

Рисунок 2 — Редактор реестра
В свойстве «ImagePath»=, меняем строку:
«-srvc -agent -regport 1541 -port 1540 -range 1560:1591»

Рисунок 3 — Стандартные порты
«-srvc -agent -regport 2041 -port 2040 -range 2060:2091»

Рисунок 4 — Изменение портов
Также в конце строки дописываем “-debug” для включения отладки и подтверждаем изменения.

Рисунок 5 — Добавление отладки
Перезапускаем службу 1C:Enterprise 8.3 Server Agent.

Рисунок 6 — Перезагрузка службы
Второй вариант решения проблемы заключается в увеличении памяти процесса 1С
Шаг 1. Проверяем место на диске С:\, если место мало — чистим.
Шаг 2. Переходим к удалению процессов, если таковые имеются.
Далее по очередности удаляем процессы:

Рисунок 7 — Останавливаем процесс RPHOST

Рисунок 8 — Останавливаем процесс rmngr

Рисунок 9 — Останавливаем процесс ragent
Шаг 3. Чистим папки и файлы srvinfo, чистим кэш и настройки кластера 1С в С:\Program Files\1cv8\srvinfo\reg_1541\ или С:\Program Files(x86)\1cv8\srvinfo\reg_1541\
Шаг 4. Запускаем сервер и проверяем работу служб. Это можно выполнить разными способами. Запустить из «Служб»:

Рисунок 10 — Запуск Службы
Или Пуск — Все программы:

Рисунок 11 — Запуск службы из меню Пуск
Шаг 5. Проверяем настройки кластера и информационные базы.
Автоматический перезапуск службы агента сервера 1С — скрипт + расписание
Добрый день. Поступила заявка от 1С-ников, что необходимо ночью перезапускать службу агента сервера 1С на 8-ке. Как многим известно, что данную службу просто так нельзя «перезапустить», иначе зависшие сессии так и остаются «висеть», ее необходимо сначала остановить, а после снова запустить. Порывшись немного в интернете, пересмотрев кучу скриптов — собрал из многообразия один, не большой, полностью рабочий, уже оттестировал его на серверах, теперь выкладываю на ваше обозрение и пользование.
Скрипт перезапуска службы агента сервера 1С
Собственно сам скрипт:
- Первым делом отключаем уведомления о выполнении, пусть это все работает в фоновом режиме
- Далее указываем где будет хранится наш лог-файл, куда будет писаться дата и время запуска и остановки службы (можно не писать лог, но на всякий случай пусть будет)
- Пишем в Лог дату и время начала остановки
- Останавливаем службу агента сервера, в моем случае она называется так — 1C:Enterprise 8.3 Server Agent (1640) и пишем ее статус в лог файл (ниже приведу пример что в логе появляется)
- Далее делаем задержку в 15 секунд, чтобы дождаться, пока служба останавливается (пинг равен примерно 1 секунде, первый проходит моментально, поэтому делаем время в секундах +1)
- Опять записываем в лог дату в время
- Запускаем службу обратно
- Делаем задержку в 5 минут, если служба не остановилась за 15 секунд, то она не запустится естественно, что то видимо зависло сильно и будем ждать 5 минут.
- Далее проверяем, запустилась ли служба и работает ли она? Если не работает, то выполняем ее повторный старт.
- Завершаем работу с cmd.
Пример лог файла:
12.10.2017 0:00:00,10
Служба «Агент сервера 1С:Предприятия 8.3 (1640)» останавливается.
Служба «Агент сервера 1С:Предприятия 8.3 (1640)» успешно остановлена.
12.10.2017 0:00:15,33
Служба «Агент сервера 1С:Предприятия 8.3 (1640)» запускается.
Служба «Агент сервера 1С:Предприятия 8.3 (1640)» успешно запущена.
12.10.2017 1:00:00,15
Служба «Агент сервера 1С:Предприятия 8.3 (1640)» останавливается.
Служба «Агент сервера 1С:Предприятия 8.3 (1640)» успешно остановлена.
12.10.2017 1:00:15,37
Служба «Агент сервера 1С:Предприятия 8.3 (1640)» запускается.
Служба «Агент сервера 1С:Предприятия 8.3 (1640)» успешно запущена.
Настройка выполнения *.bat по расписанию
Для начала идем в «Пуск -> панель управления -> Администрирование» и запускаем там «Планировщик заданий«.
Выбираем пункт «Создать задачу«:
На вкладке «Общие» задаем имя задания, его описание и пользователя, от которого оно будет выполняться. По умолчанию там будет пользователь, под которым вы вошли в данный момент в систему.
Далее идем в закладку Триггеры и настраиваем, когда нам надо запускать задачу. В моем случае это ежедневно выполнять в 00:00 и повторять ее каждый час в течении 7 часов.
Далее идем во вкладку Действия и создаем действие на выполнения скрипта.
Все, на этом все готово. Как можем увидеть в журнале, задача с такими параметрами успешно выполняется и ровно то время, которое у нас задано в скрипте: