В версии 8.3.14 «1С:Предприятие» повысилась отказоустойчивость кластера серверов и появилась возможность администрирования кластера из встроенного языка.
Отказоустойчивость сервиса фоновых заданий
Отказоустойчивые группы серверов – кластеры – используются для хранения баз данных, файлов в сети, бизнес-приложений и систем обслуживания клиентов. Отказоустойчивость кластера позволяет исправить ситуацию, когда из-за сбоев сервиса поддерживаемые им приложения оказываются недоступны: она перезапускает приложения на других узлах кластера без вмешательства администратора. Уровень отказоустойчивости кластера определяется количеством рабочих серверов, которые могут одновременно выйти из строя, и это не приведет к аварийному завершению работы пользователей.
В 8.3.14 «1С:Предприятие» реализовали отказоустойчивость сервиса фоновых заданий для кластеров, в которых уровень отказоустойчивости превышает 0. Если работа менеджера кластера завершается в аварийном порядке, информация переносится на другие менеджеры кластера, имеющие экземпляры сервиса фоновых заданий. Это значит, что аварийная ситуация в работе одного из менеджеров не отразится на выполнении регламентных и фоновых заданий. Пользователи даже не заметят возникшую неполадку.
В предыдущей версии «1С:Предприятие» при аварийном завершении работы менеджера кластера работа пользователей с фоновыми и регламентными заданиями могла быть прервана. Например, могло зависнуть клиентское приложение или выполнение регламентных заданий было невозможно до тех пор, пока информация о них не будет заново считана из информационных баз.
Администрирование из встроенного языка
Ранее платформа 1С:Предприятие содержала несколько различных инструментов, с помощью которых можно было администрировать кластер серверов:
- интерактивная Windows-утилита администрирования;
- программный интерфейс кластера, доступный во встроенном языке через технологию COM (Component Object Model);
- сервер администрирования кластера (ras) и утилита командной строки (rac) для обеспечения кроссплатформенности;
- программный Java-интерфейс для создания администрирующих кластер приложений.
У этих инструментов были технические недостатки. Например, Windows-утилита не позволяет работать с кластерами разных версий. А в интерфейсах, использующих COM и Java, нет перечислений: понятные всем значения «Незащищенное», «ЗащищенноеПриУстановкеСоединения» и «Защищенное» приходилось обрабатывать в цифровые значения от 0 до 2. Соответствие уровню безопасности соединения приходилось определять по справке.
Для того, чтобы облегчить работу с серверами «1С:Предприятия», разработчики реализовали специальный программный интерфейс. Он взаимодействует с сервером администрирования кластера (ras), позволяет администрировать кластер и облегчает управление серверами в многопользовательских, многозадачных unix-системах. Для передачи управляющих команд серверу кластеров «1С:Предприятия» и получения данных о структуре и состоянии кластера требуется лишь клиентское приложение платформы. Из одного клиентского приложения можно одновременно администрировать кластеры разных версий.
Агент = Новый АдминистрированиеСервера(АдресСервераRAS, 1545);
Агент.ВыполнитьАутентификацию(Пользователь, Пароль);
// Перебрать все кластеры.
Кластеры = Агент.ПолучитьКластеры();
Для Каждого Кластер из Кластеры Цикл
Кластер.ВыполнитьАутентификацию(ПользовательКластера, ПарольПользователяКластера);
// Завершить все сеансы в кластере.
Сеансы = Кластер.ПолучитьСеансы();
Для Каждого Cеанс из Сеансы Цикл
Cеанс.ЗавершитьСеанс(Сообщение);
КонецЦикла;
КонецЦикла;
Второй пример показывает работу со счетчиками потребления ресурсов. Раньше работа со счетчиками через COM интерфейс, например, была невозможна, т.к. в этом интерфейсе отсутствуют перечисления. В новом интерфейсе это возможно, и выполняется довольно просто:
Агент = Новый АдминистрированиеСервера(АдресСервераRAS, 1545);
Агент.ВыполнитьАутентификацию(Пользователь, Пароль);
// Перебрать все кластеры.
Кластеры = Агент.ПолучитьКластеры();
Для Каждого Кластер Из Кластеры Цикл
Кластер.ВыполнитьАутентификацию(ПользовательКластера, ПарольПользователяКластера);
// Перебрать все счетчики потребления ресурсов.
Счетчики = Кластер.ПолучитьСчетчикиПотребленияРесурсов();
Для Каждого Счетчик Из Счетчики Цикл
Сообщить("Имя счетчика: " + Счетчик.Имя);
Сообщить("Описание: " + Счетчик.Описание);
// Перебрать все значения счетчика.
ЗначенияСчетчика = Счетчик.ПолучитьЗначения();
Для Каждого Значение Из ЗначенияСчетчика Цикл
Сообщить("Длительность вызова = " + Значение.ДлительностьВызова);
Сообщить("Процессорное время = " + Значение.ПроцессорноеВремя);
Сообщить("Потребление памяти = " + Значение.ПотреблениеПамяти);
...
КонецЦикла;
КонецЦикла;
// Создать новый счетчик потребления ресурсов.
Счетчик = Кластер.СоздатьСчетчикПотребленияРесурсов();
Счетчик.Имя = "Счетчик1";
Счетчик.ДлительностьНакопления = 10000;
Счетчик.СчитатьДлительностьВызовов = Истина;
Счетчик.ТипОтбора = АдминистрированиеТипОтбораСчетчикаПотребленияРесурсов.Все;
...
Счетчик.Записать();
КонецЦикла ;
В основе нового программного интерфейса – объект АдминистрированиеСервера, который позволяет установить соединение с агентом центрального сервера, выполнить аутентификацию, а также получить доступ к кластерам и администраторам центрального сервера. Доступ к информационным базам, рабочим серверам, администраторам и менеджерам кластера теперь есть в каждом кластере. Все они описываются соответствующими объектами с приставкой «Администрирование»: например, АдминистрированиеИнформационнаяБаза, АдминистрированиеРабочийСервер и так далее. Кроме того, за счет перехода к объектной модели интерфейс имеет более простые команды.