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

Публикация № 1113270

Администрирование - Администрирование данных 1С - Сервисные утилиты

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

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

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)

 

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

Наименование Файл Версия Размер
clstr_ctl.sh

.sh 3,24Kb
26.08.19
0
.sh 3,24Kb Скачать

Специальные предложения

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

См. также

Go. Разбор лога технологического журнала. Достойная альтернатива perl'у

Сервисные утилиты Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Началось все с того, что я познакомился с перловыми скриптами для парса ТЖ которые размещены на kb.1c.ru (например в этой статье https://kb.1c.ru/articleView.jsp?id=113). По началу мне дико понравилось то, что перл разбирал гигабайты логов за считанные минуты, но позитив мой угасал обратно пропорционально с тем, насколько глубже я погружался в "кроличью нору" ....

1 стартмани

24.10.2018    20277    lazarenko    39    

Мониторинг журнала регистрации при помощи Powershell

Сервисные утилиты Журнал регистрации v8 Абонемент ($m)

Работа с журналом регистрации в формате SQLite внешними средствами на примере мониторинга изменений в конфигурации базы данных.

1 стартмани

12.07.2018    12921    user768334    7    

Tool1CD: отрежем донорскую почку

Сервисные утилиты Разработка внешних компонент v8 Розница Абонемент ($m)

Ваша база мертва? Что ж, кое-что в ней ещё теплится.

1 стартмани

15.05.2018    18901    baton_pk    13    

Использование регулярных выражений (RegExp) в Linux

Сервисные утилиты Администрирование данных 1С Внешние источники данных v8 Абонемент ($m)

Описывается способ использования регулярных выражений (RegExp) в Linux с использованием тех же компонентов, что и в Windows (COM-объекты VBScript.RegExp).

1 стартмани

20.04.2018    8645    vsbronnikov    12    

Мониторинг изменений рабочих конфигураций. Часть 1. Сохранение конфигураций из базы SQL без конфигуратора

Сервисные утилиты v8 1cv8.cf Абонемент ($m)

Выгружаем исходники из SQL напрямую скриптом, собираем CF и контролируем реальные изменения в рабочих базах из браузера.

1 стартмани

28.02.2018    19410    user768334    25    

Практика доступа в базу 1С через протокол oData. Чтение данных

Сервисные утилиты Практика программирования Администрирование данных 1С v8 1cv8.cf Абонемент ($m)

Для чего нужен доступ в базу 1С через REST-интерфейс по протокол oData? Как его организовать? Как не будучи гуру в JavaScript и .NET получить быстрый визуальный доступ к данным базы 1С? Попробую дать ответ на эти вопросы и прокомментирую некоторые нюансы, с которыми я столкнулся.

1 стартмани

11.12.2017    99568    Dementor    55    

1С:Предприятие 8.2. Управляемая Форма. Меняем иконку рабочего стола.

Сервисные утилиты Производительность и оптимизация (HighLoad) Практика программирования Работа с интерфейсом v8 1cv8.cf Россия Абонемент ($m)

Для конфигураций имеющих свой дизайн важно иметь возможность сменить не только картинки разделов для созданных подсистем, но и картинку рабочего стола, но менять ее нет возможности. Сама 1С объясняет это тем что интерфейс любой конфигурации должен быть унифицирован: "Дело не в одной картинке, а в общей стилистике для любых конфигураций. Важно чтобы пользователи привыкали к общему стилю и одинаково воспринимали одинаковые элементы в разных конфигурациях - это ускорит и освоение конфигураций и повседневную работу пользователей с ними." Но все же можно попытаться ее сменить.

1 стартмани

28.09.2012    29200    ghostaz    39