Как устранить ошибку «Specify version for module "cs"» при настройке сервера взаимодействия через утилиту ring?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При обновлении или развертывании сервера взаимодействия системы 1С:Предприятие системные администраторы часто сталкиваются с ситуацией, когда стандартная команда создания службы завершается сбоем. Вместо успешной регистрации сервиса утилита ring возвращает сообщение об ошибке: [ERROR ] Неправильный вызов команды (для справки см. "ring help"): Specify version for module "cs". Available versions: .... Разберем по шагам, почему возникает эта неполадка и какими способами ее можно устранить.

Выясним причину такого поведения утилиты. Ошибка возникает тогда, когда в системном реестре утилиты ring зарегистрировано сразу несколько версий одного и того же модуля cs (Collaboration Server). Обычно это происходит в процессе обновления: дистрибутив новой версии устанавливается на сервер рядом с предыдущим, а старый релиз не был удален или деактивирован. В итоге утилита видит в системе несколько сборок (например, 25.0.22 и 26.0.54) и не может определить автоматически, какую именно версию модуля необходимо запустить в качестве службы для создаваемого экземпляра.

Для решения этой проблемы рассмотрим два основных подхода: явное указание версии при вызове команд и очистку устаревших модулей из конфигурации.

Способ 1. Явное указание версии и архитектуры модуля при вызове ring

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

Рассмотрим синтаксис команды создания службы экземпляра cs для версии 26.0.54:

ring cs@26.0.54 --instance cs service create

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

ring cs@26.0.54:x86_64 --instance cs service create

Обратим внимание на важный нюанс: если служба создана с явным указанием версии модуля, то суффикс вида @26.0.54 или @26.0.54:x86_64 потребуется указывать при выполнении абсолютно всех последующих операций с данным экземпляром. Это касается запуска и остановки сервиса, проверки статуса, настройки пулов подключений JDBC или конфигурации WebSocket:


ring cs@26.0.54 --instance cs service start
ring cs@26.0.54 --instance cs service status

Способ 2. Удаление старой версии модуля из системы (рекомендуемый вариант)

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

  1. Остановим и удалим старую службу операционной системы. Перед тем как регистрировать новую версию, необходимо корректно удалить предыдущую службу, иначе возникнет конфликт имен сервисов или сетевых портов. Выполним команды:
    
    ring cs@25.0.22 --instance cs service stop
    ring cs@25.0.22 --instance cs service delete
    
  2. Деинсталлируем устаревший пакет сервера взаимодействия. Для этого воспользуемся штатным инсталлятором 1С (1ce-installer или 1ce-installer-cli), выбрав удаление версии 25.0.22.
  3. Проверим конфигурационный файл реестра модулей. Если пакет был удален вручную или деинсталлятор оставил записи в реестре, откроем конфигурационный файл ring-commands.cfg в текстовом редакторе. Расположение файла зависит от платформы:

    В ОС Windows: %ALLUSERSPROFILE%\1C\1CE\ring-commands.cfg (стандартный путь: C:\ProgramData\1C\1CE\ring-commands.cfg).

    В ОС Linux: /etc/1C/1CE/ring-commands.cfg.

    Файл имеет структуру YAML. Найдем в секции модуля cs блок, соответствующий старой версии 25.0.22, и аккуратно удалим его, оставив только запись для релиза 26.0.54. После сохранения изменений перезапуск утилиты не требуется.
  4. Создадим службу штатной командой. После того как в реестре останется единственная версия модуля, выполним стандартную команду без указания дополнительных постфиксов:
    
    ring cs --instance cs service create
    ring cs --instance cs service start
    

Важные рекомендации по окружению и сопутствующим сервисам

Разберем технические требования, несоблюдение которых часто мешает успешному запуску сервера взаимодействия после обновления:

Права доступа: Все манипуляции со службами через ring необходимо производить исключительно с правами администратора: через командную строку, запущенную от имени Администратора в Windows, либо с префиксом sudo (или под учетной записью root) в Linux.

Переменные среды Java: Корректный запуск службы невозможен без правильно определенной системной переменной JAVA_HOME. Убедимся, что она указывает на каталог установленного и совместимого с текущим релизом сервера взаимодействия пакета JDK или JRE.

Взаимодействие со сторонними компонентами: Напомним, что сервер взаимодействия функционирует в связке с распределенным хранилищем данных Hazelcast и поисковым кластером Elasticsearch. При переходе между мажорными версиями сервера взаимодействия проконтролируем состояние экземпляров и этих сервисов, обращаясь к ним через утилиту командами ring hazelcast ... и ring elasticsearch ... соответственно.

← На главную