Введение
Недействующая система кластеризации для Linux
инфобокс программного обеспечения
| название = OpenSSI
| логотип = OpenSSI logo.png
| разработчик = OpenSSI Team
| последняя версия = 1.9.3
infobox software
| name = OpenSSI
| logo = OpenSSI logo. png
| developer = OpenSSI Team
| latest release version = 1.9.3
OpenSSI основана на операционной системе Linux и была выпущена компанией Compaq в 2001 году как проект с открытым исходным кодом. Это финальная стадия длительного процесса разработки, который берет начало с LOCUS, созданного в начале 1980-х годов.
Описание
OpenSSI позволяет рассматривать кластер отдельных компьютеров (узлов) как единую большую систему. Процессы, выполняемые на любом узле, имеют полный доступ к ресурсам всех узлов. Процессы могут автоматически перемещаться между узлами для балансировки загрузки системы. Входящие сетевые соединения могут направляться на наименее загруженный доступный узел. OpenSSI разработан для использования как в высокопроизводительных, так и в высокодоступных кластерах. Возможно создание кластера OpenSSI без единой точки отказа, например, файловая система может быть зеркалирована между двумя узлами, так что в случае сбоя одного узла процесс, обращающийся к файлу, автоматически переключится на другой узел. В качестве альтернативы кластер может быть спроектирован таким образом, чтобы каждый узел имел прямой доступ к файловой системе.
Единое пространство процесса
OpenSSI предоставляет единое пространство процессов — каждый процесс виден с любого узла и может управляться с любого узла с помощью стандартных команд Linux (ps, kill, renice и т.д.). Виртуальная файловая система Linux /proc отображает все запущенные процессы на всех узлах. Реализация единого пространства процессов достигается за счет использования абстракции VPROC, разработанной компанией Locus для операционной системы OSF/1 AD.
Миграция
OpenSSI позволяет переносить выполняющиеся процессы между узлами. При переносе выполняющихся процессов они сохраняют доступ ко всем открытым файлам, объектам межпроцессного взаимодействия и сетевым соединениям. Процессы могут быть перенесены вручную, либо путем вызова специального системного вызова OpenSSI migrate(2), либо путем записи номера узла в специальный файл в каталоге /proc процесса. Кроме того, процессы могут автоматически переноситься для балансировки нагрузки между узлами кластера, если это необходимо пользователю. OpenSSI использует алгоритм, разработанный проектом MOSIX, для определения нагрузки на каждый узел.
Одно корнило
OpenSSI предоставляет единый корень для кластера, обеспечивая доступ к одним и тем же файлам и каталогам с любого узла. OpenSSI использует несколько механизмов для реализации единого корня – CFS (OpenSSI Cluster File System), кластерные файловые системы SAN и параллельное монтирование сетевых файловых систем. OpenSSI использует функцию контекстно-зависимых символических ссылок (CDSL), вдохновленную системой HP TruCluster, для обеспечения прозрачного доступа к файлам, специфичным для каждого узла, для приложений, не учитывающих кластерную структуру. CDSL может указывать на различные файлы на разных узлах кластера.
ХСС
CFS, кластерная файловая система OpenSSI обеспечивает прозрачный межузловой доступ к базовой реальной файловой системе, расположенной на одном из узлов. CFS располагается поверх реальной файловой системы и координирует доступ с разных узлов, используя механизм токенов. Один узел имеет физический доступ к базовой файловой системе и выполняет все операции чтения и записи. В любой момент времени один узел владеет токеном, представляющим часть базового файла, что означает, что эта часть файла находится в кэше владеющего узла. Если другой узел пытается получить доступ к этой части файла, токен перехватывается, и содержимое кэша копируется на запрашивающий узел. Реализация OpenSSI CFS удивительно похожа на используемую в HP TruCluster. CFS также используется для координации доступа к сегментам общей памяти. CFS может быть использована в отказоустойчивой системе с использованием общих подсистем дисков (двухпортовый SCSI или SAN) или DRBD. Если узел, который в данный момент напрямую обращается к файловой системе, выходит из строя, монтирование CFS переключается на другой узел, напрямую подключенный к диску, и кластер получает доступ к файловой системе через этот узел.
SAN кластерные файловые системы
OpenSSI может использовать кластерные файловые системы, основанные на SAN, для корневого раздела, при условии, что они предоставляют интерфейс файловой системы, совместимый с POSIX. Также были протестированы Lustre и Global File System. При использовании кластерной файловой системы каждый узел монтирует файловую систему параллельно, а доступ к файлам осуществляется непосредственно от узла к файловой системе.
НФС
OpenSSI монтирует NFS файловые системы параллельно на каждом узле. Каждый узел обращается к NFS-серверу напрямую.
Одно вводно-выводное пространство
OpenSSI обеспечивает кластерный доступ ко всем устройствам ввода-вывода в системе, с некоторыми ограничениями: узел не может монтировать блочное устройство с другого узла. Для управления каталогом /dev используется менеджер устройств udev. Каждый узел запускает собственную копию udev для создания соответствующих узлов устройств в подкаталоге /dev, например, /dev/1 для узла 1, /dev/2 для узла 2 и так далее.
Единое пространство IPC
OpenSSI обеспечивает интернодный доступ ко всем стандартным механизмам межпроцессного взаимодействия Linux, включая общую память, семафоры, очереди сообщений SYSV, каналы и сокеты домена Unix. Для реализации общедоступной памяти в масштабе кластера – распределенной общей памяти – OpenSSI использует токенную систему CFS. В любой момент времени сегмент памяти может быть доступен для чтения одному или нескольким узлам, либо для записи одному узлу. Если узел, не имеющий прав записи в сегмент, пытается выполнить запись, то сегмент становится недоступным для чтения на всех остальных узлах и доступным для записи на текущем узле. Если узел, не имеющий прав чтения, пытается прочитать сегмент, то текущее значение копируется из узла, где оно было валидно, и, если оно было доступно для записи, помечается как доступное для чтения.
IP-адрес кластера
OpenSSI использует LVS для обеспечения отказоустойчивых, сбалансированных по нагрузке IP-сервисов. Входящие сетевые соединения принимаются узлом-директором, который перенаправляет их на наименее загруженный серверный узел. (Узел может выполнять функции как директора, так и сервера). В случае отказа узла-директора, другой узел-директор берет на себя управление, и система продолжает принимать входящие соединения.
История
Истоки OpenSSI восходят к началу 1980-х годов, когда распределенная операционная система LOCUS была разработана в Калифорнийском университете в Лос-Анджелесе (UCLA). Группа, создавшая "LOCUS", в 1982 году основала Locus Computing Corporation и выпустила версии технологии, основанные на ней, под различными названиями. В середине 1990-х годов эта работа привела к созданию продукта UnixWare NonStop Clusters в компании Tandem Computers, которая к 1995 году поглотила команду бывшей Locus CC и приобрела права на технологию. В 1997 году компания Compaq приобрела Tandem Computers. NonStop Clusters были коммерциализированы Santa Cruz Operation как дополнение к UnixWare. Когда SCO Group прекратила продажи продукта, разработчики (привлеченные в результате приобретения Tandem и работавшие в Compaq) портировали код "NonStop Clusters" на Linux и в 2001 году, под новым названием OpenSSI, опубликовали его как программное обеспечение с открытым исходным кодом. Сотрудники продолжали разработку некоторое время после того, как Compaq была приобретена Hewlett Packard (что произошло в 2002 году). В течение следующего десятилетия OpenSSI был улучшен независимыми разработчиками.