Я пытался запустить Discourse внутри LXD на Ubuntu Server на Raspberry Pi 4 с USB SSD, но процесс просто зависал и завершался по тайм-ауту во время пересборки. Зависания случались раньше и были более выраженными при использовании пула хранилища btrfs на основе loopback-устройства, а позже — при использовании пула zfs на основе loopback. Потребление памяти оставалось стабильным около 1 ГБ с пиками до 3 ГБ. При зависании SSH и утилита top оставались отзывчивыми, но вся активность использования системы падала до ничтожного уровня, что указывало на то, что процесс перестал отвечать.
В настоящее время документация LXD рекомендует просто установить параметр security.nesting в строковое значение true для включения поддержки Docker, что я и сделал. Однако в документации LXD также есть страница с рекомендациями по конфигурации для production, где перечислено около 20 настроек, которые необходимо изменить, но я их не пробовал.
В итоге я отказался от попытки запустить Discourse в LXD и просто запустил его через Docker на той же машине.
Детали моих попыток здесь:
Странно, что нижеприведённое руководство по запуску Docker в LXD рекомендует использовать btrfs, несмотря на то, что документация LXD не рекомендует его. Кроме того, в нём, по-видимому, не используется отдельный раздел для btrfs (хотя там устанавливаются дополнительные настройки, устанавливаются другие пакеты вместо docker.io, и том btrfs подключается только к Docker). Поэтому я задаюсь вопросом, почему у меня возникли такие проблемы:
@vmsman, не могли бы вы поделиться более подробной информацией о вашей настройке LXD, например, о профилях, пулах хранилища и любых системных настройках, которые потребовали изменения, так как, судя по всему, у вас самая успешная конфигурация на данный момент:
Что касается LXD, у меня возникают следующие вопросы:
- Помогут ли разделы вместо loopback-файлов для пулов хранилища решить проблемы с производительностью и устранить зависания?
- Поможет ли использование MicroCloud или кластера LXD, либо использование Ceph в качестве пула хранилища?
В целом, несмотря на то, что мне не удалось запустить Discourse в LXD, я очень впечатлён LXD и его простотой использования. Ранее я месяцами боролся с HashiCorp, поскольку HashiCorp, похоже, интересует только корпоративное использование. В то время как LXD просто работает, а сообщество достаточно поддерживающее, что позволяет небольшим командам и независимым разработчикам добиваться прогресса.