Централизованное управление кластером 1С Предприятия, состоящим из нескольких рабочих серверов, работающих на платформе GNU/Linux

26.08.19

Разработка - Инструментарий разработчика

При эксплуатации крупных информационных систем, в состав которых могут входить десятки серверов 1С Предприятия, зачастую возникают ситуации, требующие однотипных действий на всех серверах кластера 1С Предприятия или на всех серверах контура. В настоящей статье представлен способ централизованного управления серверами 1С Предприятия, работающими на платформе GNU/Linux. Подобный подход может быть использован и для других задач, возникающих в процессе эксплуатации крупных систем, с целью сокращения как временных затрат специалистов, так и времени простоя системы.

Скачать файлы

Наименование Файл Версия Размер
clstr_ctl.sh
.sh 3,24Kb
1
.sh 3,24Kb 1 Скачать

0. Общие моменты
В контексте задачи, обозначенной в заголовке статьи, предполагается что управлять серверами кластера 1С Предприятия мы будем из консоли GNU/Linux посредством bash-скрипта. Указанный скрипт, в свою очередь, взаимодействует с серверами кластера по протоколу ssh.
Осуществлять централизованное управление серверами кластера, можно с любого компьютера, работающего под управлением операционной системы GNU/Linux (например, таковым может стать один из центральных серверов кластера 1С Предприятия). Для наглядности излагаемого материала, будем исходить из следующей инфраструктуры: компьютер work — рабочий компьютер администратора, с которого будет осуществляться централизованное управление серверами кластера; сервера server_a, server_b, server_c — сервера из состава кластера серверов 1С Предприятия.
Вместе с тем предполагается, что на компьютере, с которого планируется осуществлять централизованное управление (запуск скрипта), уже существует пользователь (не root) и у него уже созданы ключи для ssh-клиента. Информация о том, как создать пользователя в ОС GNU/Linux и как создать ключи для ssh-клиента не является предметом данной статьи. Подробнее об этом можно узнать из страниц справочного руководства (man 8 useradd и man 1 ssh-keygen).
Все описанное в статье прошло проверку работоспособности на кластере 1С Предприятия, работающем под управлением ОС CentOS 7, но вполне может быть адаптировано под любой имеющийся дистрибутив GNU/Linux.

ВАЖНО: Ответственность за любые последствия, возникшие в результате внесения изменений в работающую систему по материалам данной статьи, лежат исключительно на лице, внесшим данные изменения!

1. Подготовка инфраструктуры серверов к централизованному управлению
Предполагается, что на всех серверах кластера (в нашем случае server_a, server_b и server_c) уже существует пользователь операционной системы (не
root), от имени которого будут выполняться удаленные команды. Одним из возможных вариантов, которым мы и воспользуемся, может быть задействование пользователя, созданного при установке серверных пакетов 1С Предприятия — usr1cv8 (имя пользователя может несколько отличаться, в зависимости от используемой версии 1С Предприятия).

1.1. Настройки sudo на рабочих серверах
На всех серверах кластера необходимо наделить выбранного пользователя правами на управление сервисами 1С Предприятия (сам сервер 1С Предприятия и сервер RAS, в случае его использования). Для этого мы создадим файл с именем, соответствующим имени пользователя (однако, имя файла может быть любым), в каталоге /etc/sudoers.d следующего содержания:

usr1cv8 ALL = NOPASSWD: /usr/bin/systemctl start srv1cv83, /usr/bin/systemctl stop srv1cv83
usr1cv8 ALL = NOPASSWD: /usr/bin/systemctl start ras1cv83, /usr/bin/systemctl stop ras1cv83

Текст 1: Содержимое файла /etc/sudoers.d/usr1cv8

Таким образом мы наделили пользователя usr1cv8 возможностью запускать и останавливать сервисы srv1cv83 и ras1cv83 без ввода пароля.
Для более детального изучения структуры конфигурационного файла рекомендуется обратиться к страницам справочного руководства (man 5 sudoers).
Проверить правильность сделанных настроек можно выполнив от имени выбранного пользователя соответствующие команды. В нашем случае, для сервера server_a эти команды будут иметь следующий вид:

[usr1cv8@server_a ~]$ sudo systemctl stop srv1cv83
[usr1cv8@server_a ~]$ sudo systemctl start srv1cv83

Обе команды должны выполниться без запроса пароля и без каких-либо ошибок (дополнительных сообщений). После выполнения первой команды не должно остаться выполняющихся процессов, относящихся к серверу 1С Предприятия (ragent, rmngr и rphost). После выполнения второй команды все указанные процессы должны присутствовать в списке выполняющихся процессов.

Информацию о том как посмотреть список рабочих процессов можно почерпнуть в станицах справочного руководства (man 1 ps, man 1 pgrep).

1.2. Настройки ssh на рабочих серверах
Следующим этапом необходимо настроить возможность подключения к серверам кластера по протоколу ssh без необходимости ввода пароля пользователя. Для этого на всех серверах кластера, мы добавляем в домашнем каталоге пользователя usr1cv8 в каталог .ssh файл authorized_keys, в который помещаем публичный ключ пользователя, от имени которого мы будем запускать скрипт управления. В нашем случае это пользователь fedotov на компьютере work:

ssh-rsa AAAA6MakK+xJo9eqjH7TYE7BZP8750/BaThbpc1yjGYrOMvtOQOzMcGlU8KYu9J9KdOPNW6sitboCGugz4L
koweymAbgx5/aPwIHJqls1d5cO06sMxRjZIl0CktCHfdjIH/sHFITfRJJ fedotov@work

Текст 2: Примерное содержимое файла /home/usr1cv8/.ssh/authorized_keys

ВАЖНО: Права доступа к файлу authorized_keys должны быть не выше чем rw-r--r-- (644). В противном случае сервер ssh будет все равно запрашивать пароль, т. к. будет считать что этот файл может быть скомпрометирован. Подробнее о назначении прав доступа можно узнать из страниц справочногоруководства (man 1 chmod).

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

[fedotov@work ~]$ ssh usr1cv8@server_a

И убедиться, что получено приглашение командной строки нужного нам сервера:

Last login: Wed Apr 3 17:48:39 2019 from work
[usr1cv8@server_a ~]$

На этом подготовительный этап можно считать завершенным!

2. Работа со скриптом централизованного управления
Скрипт может работать в двух вариантах: «автоматизированном» и «ручном». В «автоматизированном» варианте скрипту в качестве параметра необходимо передать имя одного из центральных серверов кластера 1С Предприятия, на котором развернут сервис RAS.
При выполнении команды останова (перезапуска) серверных процессов 1С Предприятия на серверах кластера скрипт получит необходимый список серверов от RAS:

[fedotov@work ~]$ clstr_ctl.sh stop server_a
Останавливаем сервера 1С Предприятия:
* Останов сервера 1С Предприятия на server_a                    [ DONE ]
* Останов сервера 1С Предприятия на server_b                    [ DONE ]
* Останов сервера 1С Предприятия на server_c                    [ DONE ]

При этом будет создан файл server_a.stoped который будет содержать список серверов остановленного кластера. Этот файл необходим для последующего запуска серверов кластера, т. к. при остановленном кластере получить список серверов с RAS уже не удастся. В случае отсутствия данного файла, при попытке запустить сервера кластера, скриптом будет выдана ошибка:

[fedotov@work ~]$ clstr_ctl.sh start server_a
ОШИБКА: не найден файл server_a.stoped!

При успешном запуске серверов кластера результат выполнение скрипта долженвыглядеть следующим образом:

[fedotov@work ~]$ clstr_ctl.sh start server_a
Запускаем сервера 1С Предприятия:
* Запуск сервера 1С Предприятия на server_a                     [ DONE ]
* Запуск сервера 1С Предприятия на server_b                     [ DONE ]
* Запуск сервера 1С Предприятия на server_c                     [ DONE ]

Файл server_a.stoped при этом будет удален.
В «ручном» варианте в качестве параметра скрипту необходимо указать имя файла, содержащего список серверов, которыми требуется управлять. Запуск скрипта будет выглядеть следующим образом:

[fedotov@work ~]$ clstr_ctl.sh start -f ./servers.list
Запускаем сервера 1С Предприятия:
* Запуск сервера 1С Предприятия на server_a                     [ DONE ]
* Запуск сервера 1С Предприятия на server_b                     [FAILED]
* Запуск сервера 1С Предприятия на server_c                     [ DONE ]

В приведенном примере при запуске сервера 1С Предприятия на server_b возникла ошибка, которая требует непосредственного вмешательства
администратора для расследования причин ее возникновения.

 
 3. Приложение (текст скрипта clstr_ctl.sh)

 

1c linux ras bash централизованное управление

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 руб.

02.09.2020    119918    656    389    

701

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

18000 руб.

06.10.2023    7008    20    6    

37

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 руб.

10.11.2023    3246    10    1    

31

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177341    1070    0    

846

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99204    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    17914    6    8    

38

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    27945    3    10    

14

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23490    15    15    

31
Оставьте свое сообщение