Ограничить использование сети
ть что такое LXD и как с ним начать , если вы не знакомы с платформой.В большинстве случаев вы будете использовать несколько контейнеров в одной системе, чтобы разделить большое целое на более мелкие компоненты. Имеет смысл ограничить количество ресурсов, которые может использовать каждый компонент. Но почему? Очевидно, что количество причин так же безгранично, как и сценарии, для которых можно использовать контейнеры.
Когда ограничения на контейнеры LXD могут быть полезны
- Предоставление услуги и предоставление каждому клиенту экземпляра LXD. Например, это может быть большой сервер, и вы размещаете каждый веб-сайт клиента в отдельном контейнере. Если веб-сайт получает внезапный всплеск трафика, это может замедлить работу других экземпляров. С лимитами тормозить будет только один контейнер, оста
Contents
Когда ограничения на контейнеры LXD могут быть полезны
ию вы можете легко продавать разные планы обслуживания. Один клиент может заплатить за X количество ресурсов, а другой может заплатить за Y количество. И вы можете легко настроить это с помощью нескольких простых команд. - Вы можете защитить себя от более простых форм атак типа «отказ в обслуживании». Когда один контейнер подвергается бомбардировке, он достигает предела использования ресурсов. Остальные контейнеры не будут затронуты.
- У вас есть два контейнера, каждый из которых будет использовать 100 % доступного процессорного времени. Однако вы хотите, чтобы один завершил работу быстрее, чем другой. Например, можно визуализировать видео для проекта, который понадобится вам завтра. Вы можете назначить 90% процессорного времени первому и 10% второму.
Конечно, у вас могут быть свои причины. А если вы используете только один контейнер во всей системе, вам это может даже не понадобиться. Но если вы используете несколько контейнеров, вам почти всегда нужно устанавливать какие-то ограничения. Потому что атака, ошибка или какая-либо другая форма неправильного поведения в одном экземпляре LXD может повлиять на всю систему и замедлить ее работу. Чем больше у вас контейнеров, тем больше увеличивается вероятность такого сценария.
Как установить ограничения ресурсов для контейнеров LXD
Для управления ресурсами, связанными с дисковыми операциями, потребуется установка ZFS. Если вы следовали учебник здесь , значит, он уже установлен. В противном случае установите утилиты ZFS, как указано в руководстве, а затем повторно запустите команду ниже. Когда вас спросят, какое хранилище использовать, выберите ZFS.
sudo lxd init
Ограничить использование памяти
В приведенных ниже командах замените «container_name» на фактическое имя вашего контейнера. Установить ограничение памяти так же просто, как ввести:
lxc config set container_name limits.memory 100MB
Введите «ГБ» вместо «МБ», если вы хотите использовать гигабайты вместо мегабайт.
Ограничить использование ЦП
Если вы хотите ограничить количество ядер ЦП, которые может использовать контейнер, введите:
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
е существует по умолчанию, унаследованный от профиля 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 с внешним миром. При необходимости замените «lxdbr0» (если в вашем случае мост назван по-другому). Если вы не выбрали тип сети как мостовой (ответ по умолчанию), на этапах настройки «lxd init» вам, возможно, придется адаптировать приведенную ниже команду в соответсОграничить использование памяти
пользование сети
lxc network list
Ограничить использование ЦП
возможно, придется заменить «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.