В новой версии «1С:Предприятия» анонсировали развитие кластеров серверов

24.08.2018      37552

В версии 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;

   Счетчик.СчитатьДлительностьВызовов = Истина;

   Счетчик.ТипОтбора = АдминистрированиеТипОтбораСчетчикаПотребленияРесурсов.Все;

   ...

   Счетчик.Записать();

КонецЦикла ;


В основе нового программного интерфейса – объект АдминистрированиеСервера, который позволяет установить соединение с агентом центрального сервера, выполнить аутентификацию, а также получить доступ к кластерам и администраторам центрального сервера. Доступ к информационным базам, рабочим серверам, администраторам и менеджерам кластера теперь есть в каждом кластере. Все они описываются соответствующими объектами с приставкой «Администрирование»: например, АдминистрированиеИнформационнаяБаза, АдминистрированиеРабочийСервер и так далее. Кроме того, за счет перехода к объектной модели интерфейс имеет более простые команды.


Автор:
Обозреватель


См. также

Не найдено ни одной записи.
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. insurgut 207 24.08.18 14:07 Сейчас в теме
Выгонялочка безо всяких COM-объектов, красота! :)
kild; Gureev; JohnConnor; Астиг; dragonCat; Brawler; +6 Ответить
2. Timur.V 79 24.08.18 14:17 Сейчас в теме
А в интерфейсах, использующих COM и Java, нет перечислений: понятные всем значения «Незащищенное», «ЗащищенноеПриУстановкеСоединения» и «Защищенное» приходилось обрабатывать в цифровые значения от 0 до 2.

Кто знает зачем это?
В COM- соединении определяю: Тонкий клиент, Толстый клиент, Фоновое задание. И далее, в соответствии с алгоритмом работы...
А какое соединение - не обращал на это внимание. Зачем это нужно?
3. PerlAmutor 130 25.08.18 08:39 Сейчас в теме
Например, могло зависнуть клиентское приложение или выполнение регламентных заданий было невозможно до тех пор, пока информация о них не будет заново считана из информационных баз.

Проблема обычно кроется в том, что сервис 1С не имеет зависимости от сервиса MSSQL. В результате, когда 1С "поднимается" быстрее MSSQL сервера и не ждет его, то 1С сервер предприняв попытку чтения списка регламентных заданий и не получив их - удачно про них "забывает" и больше не "вспоминает", как будто их и нету. Почему разработчики 1С в своем инсталлере сервера не предусмотрели возможность поставить галочку зависимости сервиса 1С от сервиса MSSQL загадка. Ровно как и причина того, почему 1С забывает перечитать список регламентных заданий после неудачной попытки.

разработчики реализовали специальный программный интерфейс

Ура! Если бы еще сделали встроенный веб-сервер администрирования кластера серверов с API интерфейсом, чтобы управлять им также как роутером WIFI через браузер - цены бы доработке не было.
CratosX; 7OH; Fox-trot; +3 Ответить
4. dragonCat 25.08.18 11:06 Сейчас в теме
(3)Напиши! Объекты то все теперь есть. Понятно, что не нативный, но вполне будет рабочий ;-)
6. PerlAmutor 130 25.08.18 11:21 Сейчас в теме
(4) Да как-то ставить отдельную версию платформы с этими функциями, чтобы администрировать кластер не очень весело. Было бы здорово, если бы администрирование кластера вынесли в отдельный сервис, который бы висел на одном из портов (80,8080,443 или любом другом) и позволял бы перезагружать сервер 1С через Веб-интерфейс, позволял бы перезапускать рабочие процессы вручную, а также было бы неплохо туда вывести графики и счетчики ОС: количество ОЗУ, место на дисках, загрузка процессоров, пропускная способность (загрузка) сетевых интерфейсов, количество перезапусков рабочих процессов, аптайм и встроенный сервис уведомлений, который бы отправлял уведомление на почту или мессенджер сообщения о возникших проблемах на выбор: закончилась память, заканчивается место на диске, непредвиденный перезапуск сервера и т.п..
9. strav 05.09.18 15:46 Сейчас в теме
(3)
Почему разработчики 1С в своем инсталлере сервера не предусмотрели возможность поставить галочку зависимости сервиса 1С от сервиса MSSQL загадка.


Наверно, потому что сервер БД может находиться на другом сервере и быть совсем не MSSQL 😀
10. CratosX 113 04.02.19 01:41 Сейчас в теме
(9) не совсем понятно, почему это является преградой
5. dragonCat 25.08.18 11:11 Сейчас в теме
Вот меня всегда радовали подобные новости ровно до одного момента: а как у новой версии платформы с производительностью и надёжностью? Прекрасно помню просто как на прошлой работе переходили на 11ю версию - в итоге пришлось откатиться на 9ю, так как то одно то другое не работало из имеющегося функционала на обычных формах. Сейчас ведём разработку тиражируемого продукта и не можем подняться толком выше 10й версии, хотя разработка ведётся на 11й. Пока механизмы платформы достаточно надёжны. Но перейти на актуальную - без шансов. Потому все такие плюшки и остаются уделом энтузиастов, а в массовый рынок пойти не могут. А жаль.
CratosX; zazaka; LynxX; mrsmrv; +4 Ответить
7. user1035350 25.08.18 20:58 Сейчас в теме
... "посмотрим. посмотрим" - бормотал Кот Матросскин....
надеюсь будет нормально сделано...
8. A_Max 20 29.08.18 10:06 Сейчас в теме
(5) Весной на партнёрском конференции пытался задать вопрос по поводу разделения релизов платформы dev/stable, условно как в линуксе сделано с чётными/нечётными. В одном вносят новый функционал, затем его финализируют и правят только баги.
Но не смог донести необходимости этого.


А по теме "Новый АдминистрированиеСервера(АдресСервераRAS, 1545)". Я ЗНАЛ! С самого момента когда появился ras/rac удивился почему же не сделали стандартного интерфейса к нему внутри платформы. А ещё удивило, почему сразу не поставлять прототипы для других языков помимо джавы. Пришлось самому описывать структуры.
11. hrom 69 24.05.23 11:27 Сейчас в теме
А есть пример с блокировкой работы базы?
Что-нибудь типа?
InfoBase.БлокировкаРегламентныхЗаданий = Истина;
InfoBase.ВключенаБлокировкаНачалаСеансов = БлокироватьСеансыВБазе;
InfoBase.КодРазрешенияНачалаСеансов = КодДоступа;
InfoBase.СообщениеБлокировки = "Работа с базой времено недоступна!";
InfoBase.Записать();
12. hrom 69 24.05.23 14:11 Сейчас в теме
Вообщем вот так это делается:

InfoBase.ВыполнитьАутентификацию(ИмяПользователя, ПарольПользователя);
InfoBase.БлокировкаРегламентныхЗаданий = БлокироватьСеансыВБазе;
InfoBase.ВключенаБлокировкаНачалаСеансов = БлокироватьСеансыВБазе;

Если БлокироватьСеансыВБазе = Истина Тогда
InfoBase.КодРазрешенияНачалаСеансов = КодДоступа;
InfoBase.СообщениеБлокировки = "Работа с базой временно недоступна!";
InfoBase.Записать();
ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Заблокировали базу: " + СокрЛП(InfoBase.Name) + " код доступа: " + СокрЛП(КодДоступа));
Иначе
InfoBase.СообщениеБлокировки = "";
InfoBase.Записать();
ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Разблокировали базу: " + СокрЛП(InfoBase.Name));
КонецЕсли;
Оставьте свое сообщение