Руководство по системному администрированию: контейнеры в Solaris - управление ресурсами и зонами

Глава 16 Введение в технологию зон Solaris

Технология зон SolarisTM в операционной системе Solaris обеспечивает изолированную среду для выполнения приложений в системе. Зоны Solaris являются компонентом среды контейнеров Solaris.

В этой главе рассматриваются следующие темы:

Для перехода к созданию зон в системе см. Глава 17Настройка неглобальной зоны (обзор).

Краткое описание зон

Технология программного разбиения на зоны Solaris используется для виртуализации служб операционной системы и формирования изолированной и безопасной среды для выполнения приложений. Зона представляет собой виртуализированную среду операционной системы, созданную внутри одного экземпляра операционной системы Solaris. При создании зоны формируется среда выполнения приложений, в которой процессы изолированы от всех других зон. Такая изоляция не позволяет процессам, выполняющимся в одной зоне, проводить наблюдение или воздействовать на процессы, выполняющиеся в других зонах. Даже процесс, выполняемый с правами доступа суперпользователя, не может просматривать и корректировать действия, выполняемые в других зонах.

Зона также обеспечивает уровень абстракции, отделяющий приложения от физических атрибутов компьютера, на котором они развернуты. В качестве примеров этих атрибутов можно привести пути к физическим устройствам.

Зоны могут использоваться на любом компьютере, на котором работает Solaris 10 или более поздней версии. Система поддерживает до 8192 зон. Количество зон, для которых возможно эффективное управление в автономной системе, определяется в соответствии с общими требованиями к ресурсам прикладного программного обеспечения во всех зонах.

Существует два типа моделей корневой файловой системы неглобальной зоны: "с унаследованными каталогами" (sparse) и "без унаследованных каталогов" (whole). Модель зоны с унаследованными каталогами позволяет оптимизировать совместное использование объектов. Модель зоны без унаследованных каталогов обеспечивает максимальные возможности настройки. Эти понятия рассматриваются в Глава 18Планирование и настройка неглобальных зон (задачи).

О типизированных зонах

Типизированные зоны (BrandZ) предоставляют структуру, позволяющую создавать контейнеры, содержащие наборы моделей поведения среды выполнения. Термин тип зоны может относиться к широкому спектру рабочих сред. Например, неглобальная зона может эмулировать операционную систему Solaris 8 или какую-либо рабочую среду, например, Linux.

Тип зоны определяет рабочую среду, которая может быть установленная в зоне, а также указывает, какую модель поведения использует система в пределах зоны для обеспечения корректной работы программного обеспечения, установленного в зоне. Кроме того, тип зоны используется для правильной идентификации типа приложения при его запуске. Все управление типизированной зоной осуществляется с помощью расширений стандартных команд зон. Большая часть административных процедур идентична для всех зон.

На компьютерах SPARC с операционной системой Solaris 10 8/07 или выше версии Solaris 10 подерживаются следующие два типа зон:

Также операционная система Solaris 10 поддерживает следующие типы зон:

Несмотря на то что можно настроить и установить типизированные зоны в системе Trusted SolarisTM с включенными метками, загрузка типизированных зон в подобной конфигурации системы невозможна.

Рекомендации по использованию зон

Зоны в первую очередь должны применяться для сред, в которых ряд приложений консолидируется на одном сервере. Стоимость и сложность управления многочисленными машинами делают целесообразной консолидацию нескольких приложений на более крупных серверах с большей масштабируемостью.

На следующем рисунке представлена система с четырьмя зонами. В примере консолидированной среды в каждой из зон apps, users и work имеется рабочая нагрузка, не связанная с нагрузками других зон. Этот пример демонстрирует возможность выполнения различных версий одного приложения в разных зонах без отрицательных последствий в соответствии с требованиями к консолидации. Каждая зона может обеспечивать настраиваемый набор служб.

Рисунок 16–1 Пример консолидации сервера зон

Различные версии одного приложения могут выполняться в различных зонах без отрицательных последствий.

Зоны обеспечивают более эффективное использование ресурсов в системе. Динамическое перераспределение ресурсов позволяет по мере необходимости перемещать неиспользуемые ресурсы в другие контейнеры. Благодаря изоляции отказов и обеспечению безопасности, сбои в работе приложений не требуют организации выделенной системы с низкой загруженностью. Использование зон обеспечивает возможность консолидации этих приложений с другими приложениями.

Зоны позволяют делегировать некоторые административные функции при одновременной поддержке общей безопасности системы.

Принципы функционирования зон

Неглобальную зону можно рассматривать как некоторую виртуальную область. Одно или несколько приложений могут выполняться в этой виртуальной области без взаимодействия с остальными компонентами системы. Зоны Solaris изолируют программные приложения или службы за счет использования гибких и определяемых на уровне программного обеспечения ограничений. Управление приложениями, выполняемыми в одном экземпляре операционной системы Solaris, может осуществляться независимо. Таким образом, различные версии одного приложения могут выполняться в различных зонах в соответствии с требованиями к настройкам.

Процесс, назначаемый зоне, обеспечивает управление, контроль и непосредственное взаимодействие с другими процессами, назначаемыми той же зоне. Выполнение этих функций с процессами, назначенными другим зонам в системе, или с процессами, не назначенными какой-либо зоне, невозможно. Процессы, назначенные различным зонам, могут взаимодействовать через сетевые интерфейсы API.

Начиная с версии Solaris 10 8/07 сетевые подключения по протоколу IP теперь можно настроить двумя различными способами в зависимости от того, назначен ли зоне эксклюзивный экземпляр IP, либо настройка и состояние уровня IP используются совместно с глобальной зоной. Для получения дополнительной информации о типах IP в зонах см. Сетевые интерфейсы зоны. Информацию по настройке приведены в Настройка зоны.

Каждая система Solaris содержит глобальную зону. Глобальная зона выполняет две функции. Она является одновременно зоной по умолчанию для системы и зоной, используемой для общесистемного административного управления. Все процессы, выполняемые в глобальной зоне при отсутствии неглобальных зон, называемых просто "зонами", создаются глобальным администратором.

Глобальная зона – это единственная зона, в которой можно настроить, установить, контролировать или деинсталлировать неглобальные зоны. Только глобальная зона может загружаться с системного оборудования. Управление инфраструктурой системы, в частности физическими устройствами, маршрутизацией в зоне с общим IP или динамической перенастройкой (DR), возможно только в глобальной зоне. Соответственно, привилегированные процессы, выполняемые в глобальной зоне, могут обращаться к объектам, связанным с другими зонами.

Непривилегированные процессы в глобальной зоне позволяют выполнять операции, недопустимые для привилегированных процессов в неглобальной зоне. Например, пользователи в глобальной зоне могут просматривать информацию о каждом процессе в системе. Если эта возможность представляет проблему для системы, доступ к глобальной зоне можно ограничить.

Каждой зоне, включая глобальную зону, присваивается имя зоны. Глобальной зоне всегда присваивается имя global. Каждой зоне также присваивается уникальный числовой идентификатор, назначаемый системой при загрузке зоны. Глобальная зона всегда отображается с идентификатором 0. Имена зон и числовые идентификаторы описаны в Использование команды zonecfg.

Каждая зона также имеет имя узла, не зависящее от имени зоны. Имя узла назначается администратором зоны. Для получения дополнительной информации см. Имя узла неглобальной зоны.

Каждой зоне соответствует путь к ее корневому каталогу относительно корневого каталога глобальной зоны. Для получения дополнительной информации см. Использование команды zonecfg.

Для неглобальной зоны по умолчанию устанавливается класс планирования системы. Описание методов, используемых для выбора класса планирования в зоне, приведены в Класс планирования в зоне.

Для перевода работающих процессов в другой класс планирования без изменения класса планирования по умолчанию и перезагрузки можно использовать команду priocntl, описанную на справочной странице priocntl(1).

Обзор функций зоны

В следующей таблице приводится краткая характеристика глобальных и неглобальных зон.

Тип зоны 

Характеристика 

Глобальная 

 

  • Автоматически присваивается идентификатор 0

  • Обеспечивает один экземпляр загружаемого и используемого в системе ядра Solaris.

  • Содержит установленные в полном объеме пакеты системного программного обеспечения Solaris.

  • Может содержать дополнительные программные пакеты или дополнительное программное обеспечение, каталоги, файлы и другие данные, не устанавливаемые посредством пакетов.

  • Обеспечивает полную и непротиворечивую базу данных продуктов, содержащую информацию обо всех программных компонентах, установленных в глобальной зоне.

  • Содержит конфигурационную информацию, относящуюся только к глобальной зоне, например имя узла глобальной зоны и таблицу файловой системы.

  • Является единственной зоной, распознающей все устройства и файловые системы.

  • Является единственной зоной, распознающей существующие неглобальные зоны и их настройки.

  • Является единственной зоной, из которой может осуществляться настройка, установка, управление или удаление файлов неглобальных зон.

Неглобальная 

 

  • Идентификатор зоны назначается системой при загрузке зоны.

  • Функционирует на базе ядра Solaris, загруженного из глобальной зоны.

  • Содержит установленное подмножество полных программных пакетов операционной системы Solaris.

  • Содержит программные пакеты Solaris, используемые совместно с глобальной зоной.

  • Может содержать дополнительные установленные программные пакеты, не используемые совместно с глобальной зоной.

  • Может содержать дополнительное программное обеспечение, каталоги, файлы и другие данные, созданные в неглобальной зоне, не установленные посредством пакетов и не используемые совместно с глобальной зоной.

  • Содержит полную и непротиворечивую базу данных продуктов, содержащую информацию обо всех программных компонентах, установленных в зоне, расположенных в неглобальной зоне или используемых совместно с глобальной зоной (только для чтения).

  • Не распознает другие существующие зоны.

  • Не обеспечивает установку, управление и удаление файлов других зон, включая текущую зону.

  • Содержит конфигурационную информацию, относящуюся только к этой неглобальной зоне, например имя узла неглобальной зоны и таблицу файловой системы.

  • Может иметь собственные настройки часового пояса.

Администрирование неглобальных зон

Глобальный администратор имеет полномочия суперпользователя или роль главного администратора (Primary Administrator). После регистрации в глобальной зоне глобальный администратор может осуществлять контроль и управлять системой в целом.

Управление неглобальной зоной может производиться администратором зоны. Глобальный администратор назначает администратору зоны профиль управления зонами (Zone Management). Полномочия администратора зоны ограничены неглобальной зоной.

Создание неглобальных зон

Для конфигурирования зоны путем установки различных параметров виртуальной платформы зоны и ее прикладной среды глобальным администратором используется команда zonecfg. Затем глобальный администратор устанавливает зону при помощи команды администрирования зон zoneadm, которая служит для установки программного обеспечения на уровне пакетов в иерархии файловой системы зоны. Глобальный администратор может зарегистрироваться в установленной зоне с помощью команды zlogin. При первой регистрации выполняется внутренняя настройка зоны. После этого выполняется команда zoneadm для начальной загрузки зоны.

Для получения информации о конфигурации зоны см. Глава 17Настройка неглобальной зоны (обзор). Для получения информации об установке зоны см. Глава 19Установка, остановка, клонирование и деинсталляция неглобальных зон (обзор). Для получения информации о регистрации в зоне см. Глава 21Регистрация в неглобальной зоне (обзор).

Модель состояний неглобальной зоны

Неглобальная зона может находиться в одном из следующих шести состояний.

Настроена

Все параметры зоны настроены и содержатся в постоянном хранилище. Однако элементы прикладной среды зоны, которые должны быть определены после начальной загрузки, еще не настроены.

Неполная

В ходе операции установки или удаления файлов команда zoneadm определяет состояние целевой зоны как неполное. После успешного завершения операции зона переводится в нормальное состояние.

Установлена

В системе создается экземпляр настройки зоны. Для проверки возможности успешного использования конфигурации в указанной системе Solaris используется команда zoneadm. Пакеты устанавливаются по корневому пути зоны. В этом состоянии зона не имеет какой-либо связанной виртуальной платформы.

Готова

Виртуальная платформа для зоны установлена. Ядром запускается процесс zsched, сетевые интерфейсы настроены и доступны для зоны, файловые системы смонтированы, устройства сконфигурированы. В системе назначается уникальный идентификатор зоны. На этом этапе процессы, связанные с зоной, не запускаются.

Выполняется

Выполняются пользовательские процессы, связанные с прикладной средой зоны. Зона переходит в состояние выполнения после создания первого пользовательского процесса, связанного с прикладной средой (init).

Завершение работы и отключение

Эти состояния являются переходными и видимы только при остановке зоны. Однако зона, остановка которой по какой-либо причине невозможна, прекращает работу в одном из этих состояний.

Использование команды zoneadm для инициирования перехода к одному из этих состояний описывается в Глава 20Установка, загрузка, остановка, деинсталляция и клонирование неглобальных зон (задачи) и на справочной странице zoneadm(1M).

Таблица 16–1 Команды, влияющие на состояние зоны

Текущее состояние зоны 

Применимые команды 

Настроена 

zonecfg -z имя_зоны verify

zonecfg -z имя_зоны commit

zonecfg -z имя_зоны delete

zoneadm -z имя_зоны attach

zoneadm -z имя_зоны verify

zoneadm -z имя_зоны install

zoneadm -z имя_зоны clone

Для переименования зоны в настроенном или установленном состоянии также можно использовать команду zonecfg.

Неполная 

zoneadm -z zonename uninstall

Установлена 

zoneadm -z имя_зоны ready (дополнительно)

zoneadm -z имя_зоны boot

zoneadm -z имя_зоны uninstall для удаления файлов конфигурации определенной зоны в системе.

zoneadm -z имя_зоны move путь

zoneadm -z имя_зоны detach

Команда zonecfg -z имя_зоны используется для добавления или удаления свойств attr, bootargs, capped-memory, dataset, dedicated-cpu, device, fs, ip-type, limitpriv , net, rctl и scheduling-class. Зону также можно переименовать в установленном состоянии. Ресурсы inherit-pkg-dir не могут быть изменены.

Готова 

zoneadm -z имя_зоны boot

zoneadm halt с последующей перезагрузкой системы возвращает зону, находящуюся в состоянии готовности, в установленное состояние.

Команда zonecfg -z имя_зоны используется для добавления или удаления свойств attr, bootargs, capped-memory, dataset, dedicated-cpu, device, fs, ip-type, limitpriv , net, rctl и scheduling-class. Ресурсы inherit-pkg-dir не могут быть изменены.

Выполняется 

zlogin параметры zonename

zoneadm -z имя_зоны reboot

zoneadm -z имя_зоны haltдля возврата зоны, находящейся в состоянии готовности, в установленное состояние.

zoneadm halt с последующей перезагрузкой системы для возврата зоны, находящейся в состоянии выполнения, в установленное состояние.

Команда zonecfg -z имя_зоны используется для добавления или удаления свойств attr, bootargs, capped-memory, dataset, dedicated-cpu, device, fs, ip-type, limitpriv , net, rctl и scheduling-class. Ресурсы zonepath и inherit-pkg-dir не могут быть изменены.


Примечание –

Параметры, измененные с использованием команды zonecfg, не воздействуют на работающую зону. Для вступления изменений в силу зону необходимо перезагрузить.


Характеристики неглобальной зоны

Зона обеспечивает изоляцию практически на любом требуемом уровне гранулярности. Зона не требует выделенного ЦП, физического устройства или части физической памяти. Эти ресурсы могут быть мультиплексированы в ряде зон, работающих в одном домене или системе, или распределены по зонам с использованием функций управления ресурсами, доступных в операционной системе.

Каждая зона может обеспечивать настраиваемый набор служб. Для принудительной изоляции базовых процессов определенный процесс может распознавать или сообщать только о процессах, выполняемых в той же зоне. Базовое взаимодействие между зонами реализуется за счет сетевых подключений IP в каждой зоне. Приложение, выполняемое в одной зоне, не может видеть сетевой трафик другой зоны. Эта изоляция поддерживается даже в том случае, если соответствующие потоки пакетов передаются через один и тот же физический интерфейс.

Каждой зоне предоставляется часть иерархии файловой системы. Поскольку каждая зона ограничена поддеревом иерархии файловой системы, задачи в определенной зоне не могут обращаться к дисковым данным других задач в другой зоне.

Файлы, используемые службами имен, расположены в ракурсе собственной корневой файловой системы зоны. Таким образом, службы имен в различных зонах изолированы друг от друга и могут иметь разные настройки.

Использование функций управления ресурсами для неглобальных зон

При использовании функций управления ресурсами необходимо сбалансировать ограничения, задаваемые элементами управления ресурсами, с соответствующими ограничениями зон. Это позволяет создать более полную модель виртуальной машины, в которой обеспечивается всестороннее управление доступом к пространству имен, изоляцией в целях безопасности и использованием ресурсов.

Все специальные требования к использованию различных функций управления ресурсами с зонами рассматриваются в отдельных главах настоящего руководства, посвященных этим функциям.

Функции, предоставляемые неглобальными зонами

Неглобальные зоны предоставляют следующие функции.

Безопасность

После перевода процесса в зону, отличную от глобальной зоны, изменение зон в ходе процесса или любых последующих процессов невозможно.

В зоне можно запускать сетевые службы. Это позволяет избежать ущерба всей системе при компрометации какой-либо сетевой службы. Действия злоумышленника, воспользовавшегося сбоем в системе безопасности программного обеспечения в пределах зоны, ограничиваются набором операций, выполнение которых возможно в этой зоне. Полномочия, доступные в зоне, представляют собой подмножество полномочий, доступных в системе в целом.

Изоляция

Зоны обеспечивают развертывание нескольких приложений на одном компьютере, даже если эти приложения используются в доменах с различными уровнями надежности, требуют эксклюзивного доступа к глобальным ресурсам или приводят к возникновению трудностей, связанных с глобальными настройками. Например, несколько приложений, работающих в различных зонах с общим IP в одной системе, может быть связано с одним сетевым портом через особые IP-адреса, связанные с каждой зоной, или через групповой адрес. Кроме того, приложения не могут контролировать или перехватывать сетевой трафик других приложений и данные файловой системы, или обрабатывать операции.

Изоляция сети

При необходимости изоляции зоны по соображениям безопасности на IP-уровне в сети, например через подключение к VLAN или LAN, отличным от глобальной зоны и других неглобальных зон, этой зоне можно назначить эксклюзивный IP-адрес. Зону с эксклюзивным IP можно использовать для консолидации приложений, которые должны взаимодействовать в разных подсетях, относящихся к разным VLAN или LAN.

Зоны также могут быть сконфигурированы как зоны с общим IP. Эти зоны подключаются к тем же VLAN или LAN, что и глобальная зона, и совместно используют конфигурацию IP-маршрутизации с глобальной зоной. Зоны с общим IP имеют отдельные IP-адреса, но совместно используют другие компоненты IP-сети.

Виртуализация

Зоны обеспечивают виртуализированную среду, которая может использоваться для скрытия данных, например первичного IP-адреса и имени узла физических устройств и системы для приложений. Такая же прикладная среда может обеспечиваться на различных физических машинах. Виртуализированная среда обеспечивает раздельное управление каждой зоной. Действия, предпринимаемые администратором зоны в неглобальной зоне, не оказывают влияния на остальные компоненты системы.

Гранулярность

Зона может обеспечить изоляцию почти на любом уровне детализации. Для получения дополнительной информации см. Характеристики неглобальной зоны.

Среда

Зоны не изменяют среду для выполнения приложений, за исключением изменений в целях безопасности и изоляции. Зоны не представляют новый интерфейс API или ABI, на который должны портироваться приложения. Вместо этого зоны обеспечивают стандартные интерфейсы Solaris и прикладную среду с некоторыми ограничениями. Эти ограничения влияют, прежде всего, на приложения, в которых выполняются привилегированные операции.

В глобальной зоне приложения выполняются без изменений, вне зависимости от настройки дополнительных зон.

Создание зон в системе (карта задач)

В следующей таблице содержится обзор задач по первоначальному созданию зон в системе.

Задача 

Описание 

Инструкции 

Определение приложений, которые требуется выполнять в зонах 

Анализ приложений, используемых в системе: 

  • Определение приложений, критически важных для бизнес-целей.

  • Оценка требований системы к используемым приложениям.

При необходимости ознакомьтесь с бизнес-целями и с документацией по системе. 

Определение количества настраиваемых зон 

Оцените следующие характеристики: 

  • требования по рабочим характеристикам приложений, которые предполагается выполнять в зонах;

  • доступность рекомендуемого свободного дискового пространства в размере 100 Мб на устанавливаемую зону.

 

См. Анализ текущей настройки системы.

Определение того, будут ли в зоне использоваться пулы ресурсов для создания контейнера 

Если в системе также используются функции управления ресурсами, зоны должны соответствовать ограничениям управления ресурсами. Перед настройкой зон необходимо настроить пулы ресурсов. 

Начиная с версии Solaris 10 8/07, появилась возможность добавления элементов управления ресурсами и пулов для всей зоны с использованием свойств zonecfg .

См. Настройка зоны и Глава 13Создание и администрирование пулов ресурсов (задачи).

Выполнение задач предварительной настройки 

Определите имя и путь зоны. Определите для зоны совместное или эксклюзивное использование IP и получите IP-адреса или имя канала передачи данных. Определите требуемые файловые системы и устройства для каждой зоны. Определите класс планирования для зоны. Определите набор полномочий, ограничивающий процессы внутри зоны, если стандартного набора полномочий по умолчанию недостаточно. Следует отметить, что настройки zonecfg приводят к автоматическому добавлению полномочий. Например, ip-type=exclusive автоматически добавляет ряд полномочий, необходимых для настройки сетевых стеков.

Для получения информации об имени и пути зоны, типах IP, IP-адресах, файловых системах, устройствах, классах планирования и полномочиях см. Глава 17Настройка неглобальной зоны (обзор) и Анализ текущей настройки системы. Список стандартных полномочий и полномочий, которые можно настроить в неглобальной зоне, приведены в Полномочия в неглобальных зонах. Для получения информации о доступности функции IP см. Сетевые подключения в неглобальных зонах с общим IP и Solaris 10 8/07: Сетевые подключения в неглобальных зонах с эксклюзивным IP.

Разработка конфигураций 

Настройте неглобальные зоны. 

См. Настройка, проверка и сохранение параметров зоны и справочную страницу zonecfg(1M).

Проверка и установка настроенных зон в роли глобального администратора 

Зоны должны быть проверены и установлены до регистрации. 

См. Глава 19Установка, остановка, клонирование и деинсталляция неглобальных зон (обзор) и Глава 20Установка, загрузка, остановка, деинсталляция и клонирование неглобальных зон (задачи).

Зарегистрируйтесь в каждой неглобальной зоне в качестве глобального администратора с помощью команды zlogin с параметром -C или поместите файл sysidcfg в каталог зоны /etc.

 

См. Глава 21Регистрация в неглобальной зоне (обзор) и Глава 22Регистрация в неглобальных зонах (задачи).

Начальная загрузка неглобальной зоны в роли глобального администратора 

Загрузите каждую зону для ее перевода в состояние выполнения. 

См. Глава 19Установка, остановка, клонирование и деинсталляция неглобальных зон (обзор) и Глава 20Установка, загрузка, остановка, деинсталляция и клонирование неглобальных зон (задачи).

Подготовка новой зоны к продуктивному использованию 

Создайте учетные записи пользователей, добавьте дополнительное программное обеспечение и настройте конфигурацию зоны. 

См. документацию по настройке новой системы. В этом руководстве рассматриваются особые соображения, относящиеся к среде зон.