ОРГАНИЗАЦИЯ НАДЕЖНОЙ ИНФОРМАЦИОННОЙ ИНФРАСТРУКТУРЫ ПРЕДПРИЯТИЯ
Основой информационной инфраструктуры современного предприятия является его корпоративная сеть, образующая сетевую инфраструктуру, а также прикладные информационные системы, предназначенные для решения задач управления и планирования. Такая распределенная инфраструктура в общем случае обладает рядом недостатков: невысокая производительность, низкая надежность, слабая защищенность, невозможность масштабирования, что в итоге оказывает влияние не только на внутренние технологические процессы на предприятии, но и на бизнес-процессы в целом.
Исходя из такой точки зрения, необходимо аккуратно подходить к построению инфраструктуры предприятия - требуется учитывать как проблемы внедрения прикладных информационных систем, организацию уровней разграничения доступа к информации, внедрение защищенных каналов передачи данных, так и решать задачи обеспечения надежности работы информационной инфраструктуры в целом.
Общие аспекты повышения надежности информационных систем
Очевидно, что такие жизненно важные (ВСС - Business Critical Computing) системы, как ИИСУП, должны обладать адекватным уровнем отказоустойчивости в рамках отведенных бюджетов. В информационных системах управления предприятиями, к которым предъявляются предельно высокие требования по надежности, должны применяться особые решения, обеспечивающие отказоустойчивость и коэффициент готовности не менее 99,999 % (не более 5 минут простоев в год) [46].
Отказоустойчивость информационно-управляющих систем обходится недешево, и существующие отказоустойчивые решения базируются либо на операционных системах собственной разработки, либо на одном из клонов Unix. Поставщики аппаратных платформ обеспечивают высокую надежность, заставляя платить за избыточность аппаратных и программных средств. Еще больше возрастает эта плата, когда необходимо решать программными средствами проблемы, возникающих в ходе внедрения и эксплуатации компонентов ИИСУП, но при этом не нашедшие аппаратного решения [47].
До недавнего времени надежными системами считались только сложные закрытые и дорогие системы, предполагающие частое дублирование отдельных компонентов. С появлением открытых компьютерных сетей появилась возможность строить надежные системы из универсальных узлов, которые можно заменить в случае аварии без нарушения работоспособности конфигурации системы управления.
Задача создания критичных по надежности информационных систем, которые успешно функционируют даже при наличии ошибок, гораздо труднее, чем может показаться на первый взгляд. Причем эта проблема сильно отличается от проблемы исправления ошибок, возникающих при работе технического обеспечения ИИСУП. Очевидно, что разработка программного обеспечения, защищенного (и защищающегося) от ошибок, стоит дорого. Но при этом избыточность является минимальной платой за надежность не только аппаратных средств, но и программного обеспечения.
Существует видимость того, что выход системы или ее компонентов из строя можно легко определить, хотя в действительности это не так. Дело в том, что не всегда простая работа серверов или обработка запросов, транзакций является достаточным признаком функционирования системы. Если при этом хранящиеся в ней данные не соответствуют реальности, то систему можно считать неработоспособной. В то же время авария одного сервера может не нарушить работоспособности всей системы в целом. В связи с этим рассмотрим, какие именно условия должны соблюдаться при нормальном функционировании системы [48].
Целостность данных. Данные, находящиеся в корректно функционирующей системе, должны быть непротиворечивыми и адекватными (соответствовать реальности). Система становится нефункциональной, если в нее внесены несанкционированные изменения. Проконтролировать точность данных достаточно сложно, тем не менее, в критически важных информационных системах необходимо предусмотреть контроль целостности, например, по контрольной сумме или с помощью электронноцифровой подписи.
Управляемость. Для изменения конфигурации и исправления ошибок в системе должны быть предусмотрены механизмы управления ее состоянием. Если система выйдет из-под контроля администратора, то также нельзя говорить о ее штатной работе, поскольку она может неадекватно реагировать на запросы пользователей. Поэтому подсистемы ИИСУП должны иметь механизмы мониторинга собственного состояния и инструменты для самоконфигурирования без остановки всей системы.
Безопасность. Для исключения несанкционированного изменения системы и нарушения целостности данных, нужно предусмотреть механизмы идентификации и авторизации пользователей, а также обеспечить конфиденциальность определенных данных. В некоторых случаях компрометация конфиденциальной информации эквивалентна выходу системы из строя. Это, например, относится к данным системы контроля целостности. Поэтому нужно предусмотреть механизмы идентификации пользователей, авторизации их доступа к ресурсам системы и криптографической защиты конфиденциальных данных (см. гл. 2).
Связность. Современные ИИСУП состоят, как правило, из нескольких компонентов, соединенных коммуникационными каналами. Естественно, при нарушении связи между компонентами система не сможет выполнять свои функции, поэтому логично предусмотреть подсистемы сетевого управления и мониторинга. Сейчас большинство информационных корпоративных систем строятся на базе протокола TCP/IP, который имеет все необходимые механизмы для установления надежных сеансов связи. Поэтому в большинстве случаев для контроля связности достаточно использовать стандартные способы, предусмотренные в TCP/IP. Для критически важной по отказоустойчивости системы (подсистемы или компонента) нужно иметь механизмы для проверки работоспособности, поскольку важно знать - корректно ли работает система (подсистема или компонент).
За соблюдением целостности данных, как правило, следят те же компоненты, которые эти данные и обрабатывают. В то же время контроль связности и безопасности лучше реализовывать централизованно, поскольку для работоспособности интегрированной системы важно общее состояние ее подсистем. Для решения конкретных задач, возможно, потребуется наложение дополнительных условий, например, для систем электронной коммерции, таким дополнительным критерием может служить доступность и>е6-интерфейса.
Когда определены критерии работоспособности системы, можно обсуждать основные рабочие характеристики, которые будут обеспечивать эффективную работу пользователей. Следующие характеристики легко формализуемы и могут быть указаны в техническом задании для сторонних разработчиков.
Надежность - доля времени непрерывной работы вычислительной системы. Чем больше эта величина, тем меньше система простаивает. Для критически важных приложений нужно добиваться минимум 99,9 % надежности. Общим требованием сегодня стало «пять девяток» - 5 мин. простоя в год. Однако такие же требования, нужно предъявлять и к сетевому оборудованию, каналам подключения, электропитанию. Естественно, что надежность серверов должна быть выше надежности рабочих станций и мобильных устройств [46].
Отказоустойчивость - количество одновременных отказов компонентов системы, которые приводят к прекращению работы. Чем больше узлов системы нужно вывести из строя для прекращения ее работы, тем более отказоустойчива такая система. Отказоустойчивость повышает общую надежность системы, собранной из недостаточно надежных компонентов. Требования по отказоустойчивости определяются по разности между требуемым уровнем надежности и реальной надежностью существующих компонентов [49].
Доступность - время, за которое новый пользователь получает доступ к системе или сервису. Доступность определяется несколькими факторами, наиболее важными из которых являются надежность системы, ее производительность и количество пользователей.
Масштабируемость - отношение текущей производительности системы к максимально достижимой без архитектурных изменений. Чем больше можно наращивать производительность, тем выше масштабируемость. Эта характеристика влияет на доступность системы - когда рабочие станции уже не успевают обрабатывать запросы, нужно увеличить производительность системы, а это зависит от возможностей масштабируемости. Требования по масштабируемости определяются, исходя из затрат на архитектурную перестройку системы и стоимости простоя в случае, когда производительности не хватает для обслуживания нужного числа пользователей.
Время восстановления. Даже самые надежные системы иногда выходят из строя, например, из-за пожара или стихийного бедствия. Время восстановления после аварии также является важной характеристикой для жизненно важных систем. Причем восстановление системы - это не только обеспечение доступа к серверам и приложениям, но и восстановление целостности данных. Необходимое время восстановления определяется по ущербу от простоя системы [49].
Ключевой характеристикой из перечисленных является доступность, которую, с одной стороны можно легко измерить, а с другой - она зависит от всех остальных характеристик. Следует отметить, что требования по доступности могут меняться в зависимости от времени суток, дня недели и месяца (специфики работы системы). Например, если в конце месяца готовится финансовый отчет, то в эти дни требования по доступности бухгалтерско-финансовой подсистемы ужесточаются. Регламентные работы нужно планировать так, чтобы обеспечить требования по доступности жизненно важных приложений.
Возможны два способа повышения доступности компонентов и ресурсов интегрированных информационных систем: увеличение индивидуальной надежности серверов и улучшение общесистемной отказоустойчивости [47, 50]. В первом случае увеличивается надежность каждого элемента системы, что позволяет формировать конфигурации высокой доступности из небольшого числа компонентов. Для построения надежной ИИСУП обычно используется большое количество не очень надежных компонентов, а высокая надежность всей системы достигается многократным дублированием.
Рассмотрим методы увеличения аппаратной надежности [47, 51].
Резервирование. Таким способом увеличивается отказоустойчивость компьютеров по отношению к сбоям внутренних компонентов: блоков питания, дисков, процессоров и т. п. При использовании резервирования необходимо вовремя отследить сбой и переключить систему на работу с резервным аналогом выходящего из строя компонента. При этом для резервирования, например, блоков питания не требуется программной поддержки, в то время как для вычислительных устройств, элементов и массивов памяти часто приходится менять и программное обеспечение. В результате решение становится не универсальным, и его нельзя применить для других серверов.
Горячая замена. Вместе с дублированием горячая замена позволяет выполнять ремонт серверов без прекращения их работы, что увеличивает доступность, но уменьшает отказоустойчивость и надежность сервера во время смены блока. Наиболее сложно обеспечить горячую замену процессоров, памяти и жестких дисков, поскольку для этого нужно реализовать динамическую перестройку операционной системы. Кроме того, необходимо правильно спроектировать корпус сервера, который позволял бы менять внутренние элементы, не вынимая весь сервер из монтажной стойки.
Диагностика. Немаловажным элементом надежных систем является диагностика компонентов: перегрев процессора, памяти, системной платы, контроль возникновения ошибок. Диагностика позволяет предупредить аварию и вовремя заменить блок, который пока еще работает корректно, но есть вероятность его скорого отказа. Если в системе предусмотрена горячая замена данного компонента, то это позволяет исправить поломку еще до ее возникновения. Правильная диагностика важна для тех серверов, доступ к которым ограничен по времени или затруднен.
Кластеризация. Имеются два типа реализации кластеров, обеспечивающих совместную работу нескольких серверов: аппаратная и программная. Аппаратный кластер предусматривает специальные компоненты для поддержки целостности кластера и обрабатываемых им данных. Программный позволяет реализовать кластер с использованием универсальных серверов и сетевых технологий, но требует поддержки со стороны операционной системы: баланса загрузки, контроля работоспособности узлов, перераспределения ресурсов и решения других задач.
Различные производители серверных платформ используют комбинации механизмов увеличения аппаратной надежности, стремясь реализовать их с меньшими затратами, а на некоторые компоненты надежных систем есть и промышленные стандарты - это, прежде всего, касается подсистем хранения с jRHZD-массивами и микросхем памяти с коррекцией ошибок. Таким способом даже в простых системах можно уменьшить вероятность потери данных, однако их доступность при этом не увеличивается.
Для повышения доступности данных и приложений нужно обеспечить постоянную работу процессоров и сетевых соединений. Для увеличения надежности сетевых соединений, как и для блоков питания, достаточно их дублировать и обеспечить горячую замену, хотя придется предусмотреть механизмы перераспределения загрузки и контроля работоспособности. Именно этим путем идут сегодня все производители серверного оборудования.
Более сложной проблемой является обеспечение непрерывной работы процессоров, что возможно в многопроцессорных серверах, где процессор располагается на отдельном модуле с возможностью горячей замены. Однако нужно еще обеспечить программную поддержку смены процессорных модулей в операционной системе. Так, на серверах HP Non Stop Server используется программная технология парных процессов [52]. Суть ее заключается в том, что на различных процессорах выполняются два процесса - первичный и резервный. Первичный посылает резервному контрольные сообщения, чтобы тот в случае аварии мог подхватить исполнение. В результате при замене или выходе из строя одного процессора его функции будут переданы другим. Причем эта технология никак не связана с конкретным типом процессора. В частности, HP объявил о переносе операционной системы с поддержкой парных процессов с процессоров семейства Itanium на Хеоп.
По другому пути пошла компания IBM, которая реализовала аппаратное резервирование процессоров прямо на кристалле. Процессоры Power, на которых у IBM построены различные серверные системы, имеют 4-12 одинаковых ядра, которые могут проверять работу друг друга. Кроме того, в таких серверах есть дополнительная система, которая контролирует состояние оборудования. В частности, именно эта система динамически перераспределяет вычисления между процессорами в случае выхода одного из них из строя. Также предусматривается один или несколько независимых процессоров, которые контролируют работу всего оборудования: от процессоров до шин ввода/вывода данных. В результате, в этих серверах обеспечивается достаточно высокий уровень надежности и доступности.
Рассмотрим системные методы увеличения надежности.
Многоуровневые приложения. Разделение монолитного приложения на несколько уровней позволяет увеличить масштабируемость и доступность, а также частично уменьшить время восстановления. Поскольку компоненты многоуровневой системы могут быть разнесены на любое расстояние друг от друга, то возникает возможность максимально приблизить внешние компоненты к пользователям и достигнуть максимальной доступности системы. Кроме того, при разделении системы на уровни обычно предусматривается, что компонент одного уровня может работать с несколькими компонентами других уровней, поэтому при выходе из строя одного компонента достаточно подключиться к другому аналогичному. Время восстановления в этом случае равно времени переподключения.
Стандартизация. Использование для построения ИИСУП стандартизованных компонентов позволяет увеличить масштабируемость и снизить время восстановления. В этом случае, при аварии одного компонента его можно заменить одним или несколькими аналогичными. Если они соответствуют стандарту, то функционирование системы не измениться, если все данные аварийного компонента будут доступны для его новых экземпляров. При использовании стандартных форматов представления данных, компоненты можно практически в любой момент перевести на более производительную платформу. Стандартизация на уровне сети позволяет использовать разнородные среды для передачи сигналов, что исключает их одновременный выход из строя.
Дублирование узлов и каналов. Для дублирования нужно, чтобы соблюдалось требование стандартизации и взаимозаменяемости узлов: узел одного уровня должен работать с несколькими узлами других уровней, и узлы одного уровня могут обмениваться между собой текущей информацией. Дублирование также нужно предусмотреть и на уровне каналов, чтобы сохранять постоянную связность системы даже в случае выхода из строя одного канала связи. При этом желательно использовать дублирующие каналы различной природы: наземные, спутниковые и радиоканалы.
Надежную распределенную систему управления предприятием необходимо разрабатывать в случае, когда она предназначена для обслуживания большого количества территориально разнесенных подразделений, каждое из которых обменивается небольшим количеством запросов. Однако основной проблемой распределенной системы является ее управляемость, поскольку администратору сети приходиться следить за большим количеством факторов, которые могут отрицательно сказаться на работе системы в целом. Если же пользователей системы немного, но они активно работают, то строить сильно распределенную сеть становиться неразумно логичнее воспользоваться одним сервером повышенной надежности, который проще администрировать и поддерживать в работоспособном состоянии. Однако стоимость таких систем достаточно высока, работают они под управлением уникальных операционных систем и имеют определенные ограничения по масштабируемости. Оптимально их использование в финансовых и кадровых отделах, а также в качестве серверов баз данных для распределенных систем. Возможен и смешанный вариант, когда на предприятии есть группы, пользующиеся высоконадежными серверами, а доступ к результатам их трудов получает большое количество служащих и клиентов организации, но уже через распределенную систему доступа. Важно обеспечить безопасность при обращении к внутренним системам извне, так как внешние неблагонадежные пользователи могут повредить работе таких систем.
Современные подходы к проектированию ИИСУП предполагают реализацию корпоративных информационных систем с использованием >ге6-технологий. Такие системы при соблюдении определенных требований дублирования получаются достаточно надежными, удобными и функциональными. Типовая структура корпоративного портала, построенного с использованием тгеб-технологий, представлена на рис. 3.1. Такая структура не является обязательной и предназначена для определения общего взгляда на современные подходы к проектированию распределенных информационных систем управления. Так, например, web-серверы и кэш-уровень могут быть отданы на управление провайдеру, обслуживающему корпоративный портал, а в локальной сети предприятия останутся подсистемы хранения данных, СУБД и приложения. Если есть необходимость оставить все управление сетью на предприятии, то, как правило, разделение сети проходит по схеме, приведенной на рис. 3.1 - серверная часть, СУБД остаются под управлением отдела автоматизированных систем управления предприятием (АСУП) или ИТ-отдела, а в ведение подразделений передаются >ге6-сервера и кэш-уровень.
Рассмотрим состав приведенной на рис. 3.1 структуры.
Подсистема кэширования позволяет снять с weZ?-cepBepa ресурсоемкие операции шифрования и быстрой выдачи часто повторяющихся элементов (навигационное меню или изображения). Причем, если we^-серверов несколько, такая система может справиться и с балансировкой нагрузки. Для увеличения надежности рекомендуется предусмотреть резервную или распределенную систему кэширования.
Web-серверы выполняют идентификацию, установку сеансов и протоколирование всех действий, выполняемых в ИИСУП. Со стороны пользователя web-сервер работает по стандартным интернет-протоколам, а внутри - по протоколам, используемым серверами приложений. При этом возможна ситуация, когда web-сервер не содержит секретных данных, поэтому его поддержка и защита вполне может быть доверена провайдеру. Жеб-серверов может быть несколько, что позволяет значительно повысить уровень масштабируемости данной подсистемы.

Рис. 3.1. Типовая схема построения интегрированной информационной системы с использованием и>е6-технологий
Серверы приложений предназначены для реализации основных функциональных возможностей ИИСУП, заложенных в серверах приложений, которые по запросу пользователя получают данные из источников, обрабатывают их и выдают получателю через we6-cepBep. Кроме этого, сервер приложений следит за авторизацией доступа пользователей к информационным ресурсам предприятия и целостностью данных. Сервер приложений может использовать различные протоколы для получения данных от NFS до ПОР. Серверов приложений может быть несколько, но они, как правило, располагаются во внутренней сети компании и соединяются с 1ге6-серверами по выделенным линиям.
Серверы СУБД выполняют наиболее общие операции и следят за целостностью данных и разрешениями на доступ к ним пользователей. Серверов может быть несколько, при этом даже одна база может располагаться на нескольких серверах, что увеличивает отказоустойчивость всей системы. С серверами приложений СУБД взаимодействуют по локальной сети, а с подсистемой хранения - с помощью технологий SAN.
Хранилище (в том числе и репозиторий) может состоять из RAID- массивов или иных накопителей данных. Этот уровень может состоять из нескольких сегментов, разнесенных на достаточно большое расстояние. Управляют его работой, как правило, СУБД или специализированное программное обеспечение. Правильно построенная система хранения позволяет в случае выхода из строя одного накопителя переключаться на резервный без потери доступности.
Дополнительными элементами ИИСУП являются подсистемы контроля, управления сетью и механизмами защиты. Они должны быть универсальными, пронизывая все уровни информационной системы, а на основании собранных ими данных определяется работоспособность системы, и при необходимости запускаются механизмы ее восстановления. Необходимо отметить прикладной уровень (уровень пользователей) - браузеры, которые подключаются к системе либо через локальную сеть предприятия (интранет), либо через Интернет. Причем wefr-сервер согласовывает с браузером о том, какой использовать протокол для представления данных.
Как уже было отмечено, приведенная структура является достаточно общей и позволяет объединить все приложения, создав, таким образом, интегрированную информационную систему. Разработчики таких систем предлагают для их реализации большой набор стандартного аппаратного и программного обеспечения, на котором можно реализовать любые компоненты системы. При этом важно предусмотреть централизованные системы контроля и управления сетевыми устройствами и средствами защиты, поскольку в сложной системе основной проблемой являются случайные или злонамеренные погрешности, которые, накопившись, могут разрушить целостность данных. На текущий период разработаны необходимые компоненты, позволяющие строить распределенные высоконадежные информационные системы. Тем не менее, бурное развитие распределенных сред не исключает использования отдельных высоконадежных серверов для работы наиболее важных компонентов системы, таких как базы данных и различные учетные системы.