В предыдущих версиях «1С: Предприятия 8» кластер серверов мог располагаться на нескольких физических компьютерах, но один из этих компьютеров должен был играть роль центрального сервера, координирующего работу всего кластера. Такая архитектура накладывала ряд довольно существенных ограничений на работу кластера серверов «1С: Предприятия 8».
• Выход из строя центрального сервера приводил к разрыву всех клиентских соединений и полностью парализовывал любую работу с информационными базами, обслуживаемыми кластером.
• Плановое техническое обслуживание, например установка обновлений ОС с последующей перезагрузкой, требовало остановки работы пользователей со всеми информационными базами кластера.
• Все общие данные и все сервисные функции кластера (такие, как управление транзакционными блокировками, журналирование событий, полнотекстовый поиск, нумерация объектов, и т. п.) располагались в единственном процессе, могли создавать существенную нагрузку на центральный сервер, но не могли масштабироваться.
Модель клиент-серверного взаимодействия, реализованная в предыдущих версиях «1С: Предприятия 8», также обладала рядом особенностей работы клиентских приложений с кластером.
• Обрыв связи между клиентским приложением и рабочим процессом кластера приводил к аварийному завершению клиентского приложения.
• Отказ рабочего процесса кластера приводил к аварийному завершению всех клиентских приложений, которые обслуживались рабочим процессом.
• Не было возможности перераспределять клиентские соединения между рабочими процессами кластера – обслуживающий рабочий процесс назначался клиентскому соединению «пожизненно». Соответственно нельзя было и передать часть нагрузки с одного рабочего сервера на другой.
«1С: Предприятие 8.2» содержит ряд кардинальных улучшений архитектуры кластера серверов, призванных улучшить масштабируемость и отказоустойчивость информационных систем, построенных на этой технологической платформе.
Во-первых, «горячее» резервирование кластера серверов. У администратора информационной системы появилась возможность объединить несколько кластеров в группу резервирования. Обслуживанием пользователей занимается первый кластер из группы, а остальные поддерживают у себя в актуальном состоянии все важные данные первого кластера. В случае выхода из строя первого кластера, активным становится следующий кластер из группы резервирования. Для рабочих процессов, функционирующих внутри кластера, реализована другая схема – рабочие процессы подразделяются на активные и резервные. В случае плановой или аварийной остановки активного процесса кластер запускает один из резервных процессов и переводит на него имеющуюся нагрузку.
Практически это означает, что при грамотно спроектированной структуре кластера завершение любого из серверных процессов и даже отключение любого из физических компьютеров кластера не приведет к сбою в работе пользователей. Это особенно важно для тех информационных систем, которые работают в режиме «24×7» и остановка которых даже на короткое время может привести к серьезным финансовым потерям предприятия.
Во-вторых, масштабирование управляющих процессов (менеджеров) кластера. Общие данные и сервисные функции кластера теперь могут быть распределены между несколькими процессами-менеджерами, функционирующими на разных физических компьютерах. Эта позволяет существенно разгрузить главный менеджер кластера и переложить часть «сервисной» нагрузки на другие процессы.
В-третьих, новая модель клиент-серверного взаимодействия. Теперь платформа обладает устойчивостью к обрывам каналов связи между клиентом и сервером: в случае, если клиентское приложение не было завершено штатным образом, но перестало подавать признаки жизни, пользовательский сеанс продолжает поддерживаться на стороне сервера в течение довольно длительного времени (20 мин). Если за это время связь будет восстановлена, пользователь сможет продолжить работу с того самого места, где она была прервана.