Docker на Amazon EC2

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

3
23.12.2016, 03:43
2 ответа

Версии Amazon Linux используют device mapper в качестве драйвера хранилища Docker. Device mapper использует многоуровневые блочные устройства копирования-записи для контейнеров. Когда данные не записываются, дисковое пространство практически не используется. По мере записи страниц в файловую систему, она будет выделять данные из device mapper и начнет использовать дисковое пространство.

По умолчанию размер диска для device mapper составляет 10 ГБ, поэтому при работе с 6 образами вам может потребоваться 60 ГБ, если все страницы записываются. Маловероятно, что все страницы записываются, но экземпляр EC2 по умолчанию имеет только 8 ГБ, чего недостаточно.

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

NGINX поддерживает кэш на /tmp/cache, и в него постоянно производится запись. Если файловая система продолжает использовать различные блоки, то она будет продолжать выделять блоки, пока все 10 ГБ не будут отображены в диспетчере устройств. Есть несколько решений этой проблемы:

  1. Используйте устройство отображения устройства, которое достаточно велико, чтобы вместить все блоки.
  2. Используйте меньший базовый размер (ищите dm.basesize), чтобы убедиться, что образы не могут достичь 10 ГБ.
  3. Перейдите на дистрибутив, использующий хранилище AUFS.

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

1
27.01.2020, 21:18

По умолчанию докер хранит свои данные в папке / var / lib / docker . Этот путь также находится в корневом разделе?

Кроме того, по умолчанию при создании экземпляра EC2 корневые тома обычно имеют небольшой размер (около 4 ГБ). Весьма вероятно, что ваш корневой раздел также является тем местом, где хранятся ваши образы докеров, а ваш корневой раздел слишком мал.

Так что увеличьте размер корневого раздела. Или подключите новый том EBS, смонтируйте его в удобном месте, например / var / lib / docker , и скажите докеру использовать этот новый том EBS для хранения образов.

Если вы хотите изменить каталог, в котором docker хранит свои образы, не по умолчанию / var / lib / docker , тогда используйте параметр -g при запуске демона docker.

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

3
27.01.2020, 21:18

Теги

Похожие вопросы