2017-02-01 6 views
0

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

В чем разница между наличием 1 контейнера с nginx и 500 виртуальными хостами и 500 контейнеров, каждый из которых основан на изображении nginx (каждый с разными конфигурациями)?

Похоже, что, возможно, более поздний случай (500 контейнеров) будет иметь требования к памяти контейнера, умноженного на 500. Но, возможно, докер более умный, чем это (кажется, aufs может как-то обмениваться памятью)?

В основном интересно, как настроить систему для размещения множества экземпляров Wordpress с низким трафиком. Можно ли создать новый контейнер для каждого экземпляра (nginx + php)?

объем памяти

ответ

3

Приложение зависит от нескольких факторов:

  1. Ядро
  2. ядра ресурсов (файловых кэшей, сетевые буферы и т.д.)
  3. кода прикладной программы (в том числе загруженных библиотек)
  4. Статические данные прикладной программы
  5. Данные эксплуатационного применения (просмотры WordPress, записи пользователей и т. Д.)

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

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

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

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

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

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

+0

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

Смежные вопросы