Традиционно администраторы 1С привыкли использовать стандартную оснастку Microsoft Management Console (MMC) для управления кластером серверов, хотя сегодня более актуальна концепция защищенной IT инфраструктуры на базе Linux. Однако с активным переходом на операционные системы семейства Linux (Debian, Ubuntu, CentOS), где важна правильная настройка Astra Linux с установкой зависимостей, привычный инструмент становится недоступным, так как MMC — это исключительно Windows-технология (в отличие от универсальных инструментов вроде EasyRDPHub для управления подключениями). В данной статье мы разберем, как эффективно управлять серверами 1С в кроссплатформенной среде, рассмотрим концепцию консоли в виде информационной базы и проанализируем штатные инструменты, предоставляемые фирмой 1С.
Разберем ситуацию: ваша серверная инфраструктура переведена на Linux (здесь могут пригодиться скрипты для настройки окружения gcc). Стандартная консоль администрирования, которая устанавливается вместе с платформой на Windows, использует COM-соединение для взаимодействия с менеджером кластера. В Linux поддержка COM отсутствует, что делает невозможным запуск классической оснастки. Перед администратором встает задача поиска альтернативных инструментов, которые позволят просматривать активные сеансы, блокировать регламентные задания или удалять зависшие соединения. Рассмотрим возможные решения этой задачи.
Одним из интересных и практичных подходов является использование специальной обработки, интегрированной в пустую информационную базу 1С — для этого подойдёт кроссплатформенная консоль администрирования серверов 1С. Посмотрим, как это работает. Вместо внешнего приложения мы используем саму платформу 1С:Предприятие как оболочку.
Преимущества данного метода:
Проанализируем программную часть. Для реализации подобного функционала используются встроенные объекты платформы. Рассмотрим пример кода, который позволяет получить список рабочих процессов кластера через программный интерфейс:
Процедура ПолучитьСписокПроцессов(ИмяСервера, Порт)
Соединение = Новый COMОбъект("V83.COMConnector"); // Только для Windows
// В кроссплатформенном варианте используем RAS/RAC
Администрирование = Новый АдминистрированиеСервера;
СоединениеСКластером = Администрирование.УстановитьСоединение(ИмяСервера, Порт);
Для Каждого Процесс Из СоединениеСКластером.ПолучитьРабочиеПроцессы() Цикл
Сообщить("Процесс: " + Процесс.Имя + " Порт: " + Процесс.Порт);
КонецЦикла;
КонецПроцедуры
Важно отметить, что при работе на Linux использование COMОбъект невозможно. В этом случае обработка должна взаимодействовать с сервером через интерфейс RAS (Remote Administration Service).
Выясним причину, по которой 1С рекомендует использовать именно этот механизм. RAS — это служба, которая выступает посредником между сервером 1С и внешними запросами. Она принимает команды по протоколу TCP и передает их кластеру. RAC (Remote Administration Client) — это консольная утилита, которая отправляет эти команды.
Разберем по шагам, как настроить управление через RAC на Linux:
ras на сервере 1С. Обычно это делается командой: ./ras cluster --daemon.rac для выполнения административных действий.Например, чтобы просмотреть список информационных баз в кластере, мы используем следующую команду в терминале:
./rac infobase --cluster=ID_КЛАСТЕРА summary list
Этот метод является наиболее надежным и "штатным", однако он требует навыков работы с командной строкой. Именно поэтому графические оболочки (в виде баз 1С или веб-интерфейсов), работающие поверх RAC, так популярны в сообществе.
Рассмотрим еще один инструмент, о котором часто забывают. Фирма 1С поставляет официальную консоль администрирования, написанную на языке Java. Она визуально практически идентична старой оснастке MMC, но способна запускаться как в Windows, так и в Linux.
Для её работы необходимо:
1cv8-admin.jar).java -jar 1cv8-admin.jar.Этот вариант идеально подходит для тех, кому нужен функционал MMC, но в среде Linux. Проанализируем ситуацию с лицензированием: в отличие от использования консоли в виде базы 1С, Java-консоль и утилита RAC не занимают клиентскую лицензию, что является существенным преимуществом для крупных инсталляций.
Если мы решим написать собственную консоль или скрипт автоматизации внутри 1С, нам потребуется объект АдминистрированиеСервера. Разберем пример сценария, который принудительно завершает сеансы всех пользователей в определенной базе перед выполнением регламентных работ (поможет готовая обработка принудительного завершения сеансов пользователей 1С):
Функция ЗавершитьВсеСеансы(ИмяБазы)
Кластер = НайтиНужныйКластер(); // Собственная функция поиска
ПараметрыСоединения = Новый ПараметрыСоединенияССерверомАдминистрирования;
ПараметрыСоединения.АдресСервера = "localhost";
ПараметрыСоединения.Порт = 1545;
Соединение = СоединениеССерверомАдминистрирования.Создать(ПараметрыСоединения);
ИБ = Соединение.ПолучитьИнформационнуюБазу(Кластер, ИмяБазы);
Сеансы = Соединение.ПолучитьСеансыИнформационнойБазы(Кластер, ИБ);
Для Каждого Сеанс Из Сеансы Цикл
Соединение.ЗавершитьСеанс(Кластер, Сеанс);
ЗаписьЖурналаРегистрации("Администрирование.ЗавершениеСеансов",
УровеньЖурналаРегистрации.Информация, , ,
"Завершен сеанс пользователя: " + Сеанс.ИмяПользователя);
КонецЦикла;
КонецФункции
Обратите внимание на использование объекта ПараметрыСоединенияССерверомАдминистрирования. Это современный способ работы, который поддерживается в последних версиях платформы 8.3 и позволяет абстрагироваться от низкоуровневых протоколов.
Подведем итог и выясним, какой инструмент выбрать в зависимости от задач:
1. Консоль в виде базы 1С:
2. Утилита RAC (консоль):
3. Java-консоль 1С:
Рассмотрев все варианты, мы видим, что администрирование 1С на Linux — это не ограничение, а возможность использовать более гибкие и автоматизированные инструменты. Выбор конкретного решения зависит от ваших предпочтений: хотите ли вы максимальной автоматизации через код 1С или предпочитаете стандартные утилиты командной строки.