Сетевое ПО Лекция 4 (1061287), страница 3
Текст из файла (страница 3)
Чтобыобеспечить оптимальный уровень производительности в любых условиях,необходимо сбалансированное наращивание производительности отдельныхсерверов кластера;горизонтальное масштабирование (scaling out) — это добавлениесерверов к существующему кластеру. Если нагрузка по исполнениюприложения распределяется между несколькими серверами, добавление ккластеру дополнительных серверовозначаетснижениенагрузкинаотдельный сервер. Определение необходимого числа кластеровЕсли требуется обеспечить высокую доступность для несколькихприложений, встает вопрос о необходимом числе кластеров.
Кластерпозволяет выполнять несколько приложений, поэтому можно разместить всеприложения на одном кластере, создать для каждого приложения отдельныйкластер, либо комбинировать эти подходы.3.8 Типа кластеров кластеры серверов (server clusters) кластеры сбалансированной нагрузки сети (Network LoadBalancing clusters),3.8.1 Кластеры серверовКластеры серверов предназначены для приложений, которые в течениедолгого времени хранят в памяти сервера большие объемы частоизменяющихся данных, отражающих состояние приложения.Такие приложения называются приложениями с состоянием (statefulapplications), их примером может служитьSQL Server,Сетевое ПО. Лекция 4(2014г.)(Взаимоблокировка, репликация, кластеры,миграция)почтовые серверы,14серверы сообщений типа Microsoft Exchange,также серверы файлов и печати.Все узлы кластера серверов подключены к общему хранилищуданных через шину SCSI или сеть областей хранения (Storage AreaNetwork, SAN).
Всем узлам доступны одни и те же прикладные данные,поэтому любой узел в любое время может обработать клиентский запрос.Каждый узел кластера должен быть настроен как активный либопассивный.Активный узел принимает и обрабатывает запросы клиентов, апассивный играет роль резерва на случай отказа активного узла.3.8.2 NLB-кластерыДругой тип кластеров использует механизм балансировки сетевойнагрузки (Network Load Balancing, NLB) и обеспечивает в дополнение квысокой доступности и надежности высокую масштабируемость.Кластерыпредназначенысбалансированнойдлянагрузкиприложений,сетиработающихилиNLB-кластерысосравнительнонебольшими наборами редко меняющихся или неизменяемых данных, атакже для приложений, которые не хранят свое состояние в памяти в течениедлительного времени.Такиеприложенияназываютсяприложениямибезсостояния(stateless applications), типичными примерами являютсяWeb-, FTP- и VPN-серверы.Каждый клиентский запрос приложение без состояния выполняет какотдельную транзакцию, поэтому для балансировки сетевой нагрузки запросыраспределяются между серверами.Серверы - узлы NLB-кластера не подключены к общемухранилищу данных, как узлы обычного кластера, а имеют идентичныекопии данных.Сетевое ПО.
Лекция 4(2014г.)(Взаимоблокировка, репликация, кластеры,миграция)Все узлы NLB-кластера являются активными.154 Миграция процессовПеренос (миграция) процесса состоит в передаче с одного узла сети надругой информации о состоянии процесса, достаточной для того, чтобывыполнение процесса можно было продолжить на новом узле.4.1 Необходимость переноса• Распределение нагрузки. Перенося процессы с более загруженныхсистем на менее загруженные, можно выравнивать загрузку систем, чтобудетспособствоватьповышениюобщейпроизводительности.Эмпирические данные свидетельствуют о том, что таким образом можнодостичь существенного роста производительности.
Однако алгоритмыраспределения нагрузки должны быть тщательно разработаны. Чеминтенсивнее происходит обмен информацией в распределенной системе,тем хуже становится ее производительность.• Производительность обмена информацией. Процессы, интенсивнообменивающиеся информацией, можно перенести на один узел, чтобыснизить стоимость передачи данных и длительность взаимодействия.Кроме того, если процесс выполняет анализ данных, которые находятся вфайле или наборе файлов, размер которого превышает размер процесса,возможно. лучше перенести процесс к данным, а не наоборот.• Работоспособность.Можетвозникнутьнеобходимостьперенестивыполняющийся в течение длительного времени процесс, чтобыизбежать запланированного простоя или отказов, о возможностивозникновения которых стало известно заранее. Если от операционнойсистемы поступило подобное извещение, процесс, которому нужнопродолжать свою работу, может либо перейти на другую систему, либоубедиться, что позже его можно будет перезапустить на этой же системе.• Использование особых возможностей.
Процесс может переместиться сцельюиспользованияуникальныхаппаратныхилипрограммныхСетевое ПО. Лекция 4(2014г.)(Взаимоблокировка, репликация, кластеры,миграция)возможностей конкретного узла.164.2 Механизмы переноса процессовРазрабатывая средство переноса процессов, следует обращать вниманиена ряд вопросов, в число которых входят следующие:• Кто должен стать инициатором переноса?• Какая "часть" процесса должна быть перенесена?• Что должно произойти с ресурсами переносимого процесса?4.2.1 Инициация переносаВыбор инициатора переноса зависит от предназначения переносапроцессов.Если целью является перераспределение нагрузки, то решение онеобходимостипереносапроцессадолжноприниматьсямодулемоперационной системы, управляющим загрузкой систем. Этот модульотвечает за вытеснение переносимых процессов или передачу им сигналов.Чтобы определить, куда нужно перенести процесс, модуль долженобмениваться информацией с подобными ему модулями из других систем ииметь возможность отслеживать загрузку этих систем.Если же целью является использование каких-то особых ресурсов, топривозникновениинеобходимостипроцессможетмигрироватьсамостоятельно.
В этом случае процесс должен быть осведомлен осуществовании распределенной системы; в предыдущем случае работафункции переноса процесса и существование нескольких систем могутостаться для процесса незаметными.4.2.2 Что переноситсяНеобходимо перенести образ процесса, состоящий, по крайней мере, изуправляющегоблока.Крометого,нужнообновитьвсесвязи,предназначенные для передачи сигналов и сообщений, между даннымпроцессом и другими процессами.Сетевое ПО. Лекция 4(2014г.)(Взаимоблокировка, репликация, кластеры, 17миграция)Ответственность за перенос управляющего блока процесса и обновлениеотображения связей возлагается на операционную систему.
Переноспроцесса остается незамеченным как самим процессом, так и его партнерамипо обмену информацией.Переносуправляющегоблокапроцессаосуществляетсяпросто.Сложность с точки зрения производительности представляет переносадресного пространства процесса и открытых им файлов.4.2.3 Перенос адресного пространства процесса• Интенсивная (полная). Во время переноса процесса перемещается всеадресное пространство. Этот подход, несомненно, является самымпонятным. В старой системе не остается никаких следов процесса.Однако если адресное пространство очень большое и процессу вряд липонадобится большая его часть, то можно избежать его полногоперемещения, тем самым на порядок сократив расходы по переносупроцесса.• Предварительное копирование.
Пока процесс продолжает выполнятьсяна старом узле, его адресное пространство копируется на новый узел.Страницы, которые были изменены на старой системе во времяпредварительного копирования, нужно скопировать еще раз. Такаястратегия сокращает время простоя процесса, возникающего при егопереносе.• Интенсивная(выборочная). Осуществляетсяперенос только техстраниц адресного пространства, которые находятся в основной памяти ибылиизменены.Всеостальныеблокивиртуальногоадресногопространства переносятся только по мере необходимости. Это сводит кминимуму передачу данных. Однако при соблюдении такой стратегиинужно, чтобы машина, с которой переносится процесс, продолжалапринимать участие в его работе, поддерживая элементы таблицы страници/или сегментов, а также осуществляя удаленное предоставлениеСетевое ПО.
Лекция 4(2014г.)(Взаимоблокировка, репликация, кластеры,миграция)страниц.18• Копирование по запросу. Эта стратегия является разновидностьюпредыдущей. В данном случае страницы предоставляются только тогда,когда на них поступает запрос. При этом начальные затраты на переноспроцесса являются минимальными (в пределах от десятых до сотыхдолей микросекунды).• Очистка.
Страницы процесса удаляются из основной памяти староймашиныипереносятсянадиск.Послеэтогодоступкнимосуществляется непосредственно с диска старого узла, без участия егоосновной памяти. Такая стратегия избавляет от необходимости держать восновной памяти старого узла какие-либо страницы переносимогопроцесса, освобождая занимаемый им блок памяти для других процессов.Во многих случаях заранее неизвестно, понадобится ли большая частьотсутствующего в основной памяти адресного пространства.
Однако еслипроцессы разбиты на потоки и если основной единицей переноса является непроцесс, а поток, то наиболее привлекательно выглядит стратегия,основанная на удаленной подкачке страниц.Этой стратегии почти всегда отдается предпочтение, потому чтооставшиеся потоки процесса остаются на старой системе и им такжетребуется доступ к адресному пространству этого процесса.4.3 Перенос открытых файлов.Если первоначально файл находится в той же системе, что ипереносимый процесс, и если файл заблокирован переносимым процессомдля своего исключительного использования, то имеет смысл перенести файлвместе с процессом.При этом возникает опасность, состоящая в том, что перенос процессаможет быть лишь временным, и в течение пребывания процесса на новойсистеме файл ему может не понадобиться.Сетевое ПО.
Лекция 4(2014г.)(Взаимоблокировка, репликация, кластеры, 19миграция)Поэтому, возможно, стоит переносить весь файл только после того, какпереносимый процесс обратится к нему.Если файл используется совместно с другими распределеннымипроцессами, то следует поддерживать распределенный доступ к этому файлубез перемещения.Если разрешено использовать кэш, то возникают дополнительныесложности.Например, если процесс открыл файл для записи, затем разветвился, азатем один из его дочерних процессов оказался перенесенным на другуюмашину, то этот файл теперь должен быть открыт для записи с двухразличных узлов.4.4 Вытесняющие и невытесняющие переносыВытесняющий перенос процессов включает передачучастичновыполненного процесса (или, по крайней мере, процесса, создание которогоуже завершено).Невытесняющий перенос процессов — более простая функция,работающая только с процессами, выполнение которых еще не началось,благодаря чему переносить информацию о состоянии процесса не требуется.В обоих случаях необходимо передать на удаленный узел информацию осреде, в которой будет выполняться процесс.
Сюда могут входить сведения отекущем каталоге пользователя, унаследованных процессом привилегиях иунаследованных ресурсах, таких, как дескрипторы файлов.Невытесняющий перенос процесса может быть полезен при балансировкенагрузки. Эта схема обладает тем преимуществом, что позволяет избежатьнакладных затрат на полный перенос процесса. Недостатком этой схемыявляется то, что она не может адекватно реагировать на внезапные измененияв распределении нагрузки..