Как администрировать сервер 1С:Предприятие на Linux без использования MMC

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

Традиционно администраторы 1С привыкли использовать стандартную оснастку Microsoft Management Console (MMC) для управления кластером серверов, хотя сегодня более актуальна концепция защищенной IT инфраструктуры на базе Linux. Однако с активным переходом на операционные системы семейства Linux (Debian, Ubuntu, CentOS), где важна правильная настройка Astra Linux с установкой зависимостей, привычный инструмент становится недоступным, так как MMC — это исключительно Windows-технология (в отличие от универсальных инструментов вроде EasyRDPHub для управления подключениями). В данной статье мы разберем, как эффективно управлять серверами 1С в кроссплатформенной среде, рассмотрим концепцию консоли в виде информационной базы и проанализируем штатные инструменты, предоставляемые фирмой 1С.

Проблема зависимости от Windows и MMC

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

Решение 1: Консоль администрирования в виде информационной базы

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

Преимущества данного метода:

  1. Кроссплатформенность: Поскольку клиент 1С (тонкий или толстый) существует для Linux, мы можем запустить такую консоль в любой среде.
  2. Знакомый интерфейс: Администратору не нужно изучать команды терминала, он работает в привычном интерфейсе управляемых форм.
  3. Централизация: Можно хранить список всех серверов и кластеров в справочнике внутри этой базы, обеспечивая быстрый доступ к любому объекту инфраструктуры.
  4. Автоматизация: Внутри базы легко реализовать логирование действий (кто и когда завершил сеанс пользователя) и настроить систему прав доступа.

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


Процедура ПолучитьСписокПроцессов(ИмяСервера, Порт)
    Соединение = Новый COMОбъект("V83.COMConnector"); // Только для Windows
    // В кроссплатформенном варианте используем RAS/RAC
    Администрирование = Новый АдминистрированиеСервера;
    СоединениеСКластером = Администрирование.УстановитьСоединение(ИмяСервера, Порт);
    
    Для Каждого Процесс Из СоединениеСКластером.ПолучитьРабочиеПроцессы() Цикл
        Сообщить("Процесс: " + Процесс.Имя + " Порт: " + Процесс.Порт);
    КонецЦикла;
КонецПроцедуры

Важно отметить, что при работе на Linux использование COMОбъект невозможно. В этом случае обработка должна взаимодействовать с сервером через интерфейс RAS (Remote Administration Service).

Решение 2: Использование связки RAS и RAC

Выясним причину, по которой 1С рекомендует использовать именно этот механизм. RAS — это служба, которая выступает посредником между сервером 1С и внешними запросами. Она принимает команды по протоколу TCP и передает их кластеру. RAC (Remote Administration Client) — это консольная утилита, которая отправляет эти команды.

Разберем по шагам, как настроить управление через RAC на Linux:

  1. Запустите службу ras на сервере 1С. Обычно это делается командой: ./ras cluster --daemon.
  2. Используйте утилиту rac для выполнения административных действий.

Например, чтобы просмотреть список информационных баз в кластере, мы используем следующую команду в терминале:


./rac infobase --cluster=ID_КЛАСТЕРА summary list

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

Решение 3: Официальная кроссплатформенная Java-консоль

Рассмотрим еще один инструмент, о котором часто забывают. Фирма 1С поставляет официальную консоль администрирования, написанную на языке Java. Она визуально практически идентична старой оснастке MMC, но способна запускаться как в Windows, так и в Linux.

Для её работы необходимо:

Этот вариант идеально подходит для тех, кому нужен функционал MMC, но в среде Linux. Проанализируем ситуацию с лицензированием: в отличие от использования консоли в виде базы 1С, Java-консоль и утилита RAC не занимают клиентскую лицензию, что является существенным преимуществом для крупных инсталляций.

Программное управление через объект "АдминистрированиеСервера"

Если мы решим написать собственную консоль или скрипт автоматизации внутри 1С, нам потребуется объект АдминистрированиеСервера. Разберем пример сценария, который принудительно завершает сеансы всех пользователей в определенной базе перед выполнением регламентных работ (поможет готовая обработка принудительного завершения сеансов пользователей 1С):


Функция ЗавершитьВсеСеансы(ИмяБазы)
    Кластер = НайтиНужныйКластер(); // Собственная функция поиска
    ПараметрыСоединения = Новый ПараметрыСоединенияССерверомАдминистрирования;
    ПараметрыСоединения.АдресСервера = "localhost";
    ПараметрыСоединения.Порт = 1545;
    
    Соединение = СоединениеССерверомАдминистрирования.Создать(ПараметрыСоединения);
    ИБ = Соединение.ПолучитьИнформационнуюБазу(Кластер, ИмяБазы);
    
    Сеансы = Соединение.ПолучитьСеансыИнформационнойБазы(Кластер, ИБ);
    Для Каждого Сеанс Из Сеансы Цикл
        Соединение.ЗавершитьСеанс(Кластер, Сеанс);
        ЗаписьЖурналаРегистрации("Администрирование.ЗавершениеСеансов", 
            УровеньЖурналаРегистрации.Информация, , , 
            "Завершен сеанс пользователя: " + Сеанс.ИмяПользователя);
    КонецЦикла;
КонецФункции

Обратите внимание на использование объекта ПараметрыСоединенияССерверомАдминистрирования. Это современный способ работы, который поддерживается в последних версиях платформы 8.3 и позволяет абстрагироваться от низкоуровневых протоколов.

Сравнительный анализ подходов

Подведем итог и выясним, какой инструмент выбрать в зависимости от задач:

1. Консоль в виде базы 1С:

2. Утилита RAC (консоль):

3. Java-консоль 1С:

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

← На главную