К основному контенту

🇨🇮 Как ограничить ресурсы, которые может использовать контейнер LXD

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

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

Но почему?

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

Когда ограничения на LXD-контейнеры могут быть полезны

  • Предоставление службе и предоставление каждому клиенту экземпляр LXD. Например, это может быть большой сервер, и каждый веб-сайт клиента размещается в отдельном контейнере. Если веб-сайт получает внезапный всплеск трафика, это может замедлить другие контейнеры. С ограничениями замедлится только один контейнер, а остальные будут работать нормально.
  • В аналогичном сценарии вы можете легко продать различные тарифные планы. Один клиент может заплатить за сумму X ресурсов, а другой может заплатить за сумму Y. И вы можете легко настроить это с помощью нескольких простых команд.
  • Вы можете защитить себя от более простых форм атак типа «отказ в обслуживании». Когда один контейнер подвергается бомбардировке, он достигает пределов использования ресурсов. Другие контейнеры не будут затронуты.
  • У вас есть два контейнера, каждый из которых будет использовать 100% доступного процессорного времени. Однако вы хотите, чтобы один закончил работу быстрее, чем другой. Например, необходимо сделать видео для проекта, который вам нужен завтра. Вы можете назначить 90% процессорной мощности первому и 10% второму.

Конечно, у вас могут быть свои причины.

И если вы используете только один контейнер во всей системе, вам это может даже не понадобиться.

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

Потому что атака, ошибка или какая-либо другая форма неправильного поведения в одном экземпляре LXD может повлиять на всю систему и замедлить ее.

Чем больше у вас контейнеров, тем больше вероятность такого сценария.

Как установить ограничения ресурсов для контейнеров LXD

Для управления ресурсами, относящимися к дисковым операциям, необходимо установить ZFS.

sudo lxd init

Ограничить использование памяти

В приведенных ниже командах замените «container_name» на фактическое имя вашего контейнера.

Установить ограничение памяти так же просто, как ввести:

lxc config set container_name limits.memory 100MB

Введите «GB» вместо «MB», если вы хотите использовать гигабайты вместо мегабайтов.

Ограничить использование процессора

Если вы хотите ограничить количество ядер ЦП, которые может использовать контейнер, введите:

lxc config set container_name limits.cpu 2

Чтобы «закрепить» определенные ядра процессора, используйте:

lxc config set container_name limits.cpu 0-0

Это заставит контейнер использовать только первый процессор.

Чтобы использовать второй, вы должны набрать 1-1.

Чтобы использовать все ядра ЦП с первого по третье, вы должны набрать 0-3.

Другой тип ограничения — сколько процессорного времени может использовать контейнер.

lxc config set container_name limits.cpu.allowance 10ms/100ms

Это позволило бы контейнеру использовать только десять миллисекунд процессорного времени из каждых 100 миллисекунд, то есть около 10% одного ядра процессора.

Ограничить использование диска

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

Он уже существует по умолчанию, унаследованный от профиля LXD по умолчанию.

Но вы не можете изменять его настройки для каждого контейнера, пока не сделаете это.

lxc config device add container_name root disk pool=default path=/

Если вы назвали свой пул по-другому, замените «default» на имя вашего пула хранения.

Если вы забыли его имя, вы можете отобразить его с помощью:

lxc storage list

Чтобы ограничить дисковое пространство,которое экземпляр LXD может использовать:

lxc config device set container_name root size 7GB

К сожалению, ограничения ввода/вывода (скорость чтения/записи и IOPS) в настоящий момент не работают.

Ограничить использование сети

Как и с дисками, сначала необходимо добавить виртуальное сетевое устройство, которое вы можете настроить.

Найдите имя вашего сетевого моста, который соединяет ваши экземпляры LXD с внешним миром.

lxc network list

При необходимости замените «lxdbr0» (если в вашем случае мост назван по-другому).

Если вы не выбрали тип сети как мост (ответ по умолчанию), на этапах настройки «lxd init» вам, возможно, придется адаптировать приведенную ниже команду, чтобы отразить ваш выбор.

Например, вам также может потребоваться заменить «nictype» тем, что вы использовали для своей сети LXD.

lxc config device add container_name eth0 nic name=eth0 nictype=bridged parent=lxdbr0

Наконец, установите ограничения на вход в сеть (скачивание) и/или выход (загрузка).

lxc config device set container_name eth0 limits.ingress 1Mbit
1 Мбит — это один мегабит (не мегабайт). Один байт содержит 8 битов, что означает, что загрузка будет ограничена до 1/8 = 0,125 Мбит/с, примерно 120 КБ. Итак, если вы хотите, чтобы он загружался со скоростью 1 МБ/с (мегабайт), умножьте его на 8 и установите ограничение на вход 8 Мбит. Для выхода используйте:
lxc config device set container_name eth0 limits.egress 1Mbit

Заключение

Это относится к наиболее часто используемым свойствам, связанным с ограничениями ресурсов.

Но есть гораздо больше переменных, которые вы можете установить с помощью lxc config device set и lxc config set.

Вы можете прочитать больше об этих настраиваемых свойствах контейнера на странице LXD GitHub.

Комментарии


Дистанционная компьтерная помощь, удаленная компьютерная помощь онлайн.

Популярные сообщения из этого блога

Лучшие плагины для OBS Studio

Open Broadcast Software или OBS - это свободное программное обеспечение с открытым исходным кодом для стриминга аудио и видео данных в сеть интернет. Программа полностью кроссплатформенная и может работать в Windows, Linux или MacOS. Это отличная альтернатива для таких программ, как Wirecast и XSplit. OBS использует для вещания стандартный протокол обмена сообщениями в реальном времени, а поэтому может транслировать данные в любой сервис, поддерживающий это, например, Yotube. Несмотря на широкие возможности OBS, программа поддерживает еще и множество плагинов. В этой статье мы рассмотрим лучшие плагины для OBS Studio, которые вы можете использовать. Содержание статьи: Лучшие плагины OBS Studio 1. Browser Source Plugin 2. Video Source Plugin 3. Simple Scene Switcher 4. DirectShow Audio Source 5. CLR Browser Source 6. OBS Remote 7. AMD Advanced Media Framework Encoder 8. Text Source Plugin Выводы Лучшие плагины OBS Studio Чтобы найти плагины OBS Studio для Video пользователям пр…

Лучшие аналоги Paint для Linux

Когда я работал в Windows, я часто использовал стандартную программу редактора изображений Windows - Paint. Не всегда нужен очень и многофункциональный инструмент вроде Photoshop или Gimp. Иногда, чтобы подправить ту или иную картинку, дорисовать на ней несколько фигур или вставить текст достаточно простого, легкого в освоении графического редактора вроде Paint. В Linux таких программ довольно много. В этой инструкции мы рассмотрим лучшие аналоги Paint для Linux. В этот список не будут включены такие программы, как Gimp и Krita, ведь это полнофункциональные графические редакторы, векторные редакторы, такие как Inkscape мы тоже рассматривать не будем. А теперь перейдем к списку. Содержание статьи: KolourPaint MyPaint Gnome Paint XPaint Pinta mtPaint GPaint Rassam-paint Выводы KolourPaint На первом месте в списке аналогов Piant для Linux будет KoloutPaint. Это стандартный графический редактор для окружения рабочего стола KDE. Он поддерживает множество форматов изображений PNG, J…

Подключение OneDrive в Linux

OneDrive (Ранее известный как SkyDrive) это популярное облачное хранилище файлов от Майкрософт. Сейчас OneDrive бесплатно предоставляет 7 гигабайт пространства новым пользователям. Как вы знаете OneDrive хорошо интегрирован с другими продуктами компании  Microsoft. В OneDrive Также есть официальный клиент который автоматически загружает ваши видео и фотографии с камеры в облако. Но к сожалению этот клиент недоступен для операционных систем семейства Linux. Но не все так плохо. Сообщество открытого программного обеспечения уже нашло решение. Это opedrive-d от Boilermaker. Запустившись как демон программа автоматически синхронизирует локальную папку с облаком OneDrive. Содержание статьи: Установка Onedrive-d в Linux Настройка Синхронизация локальной папки с OneDrive Установка Onedrive-d в Linux Несмотря на то что onedrive-d разрабатывается для Ubuntu/Debian, CentOs/Fedora/RHEL поддерживается тоже хорошо. Для установки достаточно набрать несколько команд: $ git clone https://gith…