Как увеличивается масштаб при добавлении нового контейнера в хост? - PullRequest
0 голосов
/ 23 декабря 2018

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

может объяснить масштаб сценария 1

: контейнер выполняет все ресурсы (оставляя ресурсы для хоста os)

против

Сценарий 2: масштаб запуска двух контейнеров, работающих на одном хосте (где контейнер использует половину ресурсов, использованных в предыдущем случае)

если масштаб больше в сценарии 2, то может ли кто-нибудь объяснить, как увеличился масштаб, если два контейнера, даже если общие ресурсы одинаковы?

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

насколько масштаб увеличился, если два контейнера, даже через общие ресурсы, одинаковы?

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

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

0 голосов
/ 23 декабря 2018

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

Нормальная рабочая нагрузка Требуется 4 ядра, 16 ГБ памяти.

Максимальная рабочая нагрузка Требуется 8 ядер, 32 ГБ памяти.Предполагая, что всплеск активности (максимальная рабочая нагрузка) происходит только 2 часа в день.

Случай 1 - Когда приложение не контейнеризовано Приложение должно зарезервировать 8 ядер и 32 ГБ памяти дляон работает так, чтобы справиться с максимальной рабочей нагрузкой с ожидаемой производительностью.Но 4 ядра и 16 ГБ памяти будут потрачены впустую на 22 часа в день.

Случай 2 - Когда приложение упаковано в контейнер Предположим, что контейнер с 4 ядрами и 16ГБ памяти создается.Тогда остальные ресурсы, 4 ядра и 16 ГБ памяти будут доступны для других приложений в кластере, и другой контейнер той же конфигурации будет порожден для этого приложения только на 2 часа в день, когда требуется максимальная рабочая нагрузка.

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

Что, если на одной машине нет всех ресурсов, необходимых для приложения? В таких случаях, если приложениеКонтейнер / ресурсы могут быть выделены из нескольких машин в кластере.

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

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

...