Заранее спасибо.
Я планирую развернуть Discourse с высокой доступностью в производственной среде. Ниже приведён мой план настройки и некоторые условия окружения.
Настройка с тремя серверами приложений и двумя серверами базы данных PostgreSQL. Один сервер PG всегда работает в режиме записи, а другой — только для чтения.
Эти три сервера приложений будут подключаться к одному и тому же серверу базы данных.
Каждый экземпляр базы данных должен обслуживать только операции чтения или только операции записи соответственно.
Производственные серверы не имеют подключения к интернету, но я могу загружать образы из Docker Hub.
У нас есть собственный сервер GitLab.
Возможно ли создать образ Docker и развернуть его на нескольких серверах?
Пожалуйста, помогите с настройкой этой конфигурации. Если есть какие-либо ссылки или предложения, напишите мне в личные сообщения.
После выполнения команды ./launcher bootstrap appгде-то вам нужно будет сохранить полученный образ контейнера (обычно это делается путем отправки его в реестр), а затем загрузить и запустить его на ваших трех серверах приложений.
Вам также понадобится центральный сервер Redis (и, возможно, его реплики). Кроме того, у вас отсутствует балансировщик нагрузки для распределения запросов между этими различными серверами приложений.
В моей рабочей среде у меня нет доступа к интернету, поэтому я планирую выполнить загрузку на машине с доступом в интернет, а затем перенести полученный образ загрузки на производственные серверы. Однако при этом на производственной виртуальной машине контейнер не запускается, потому что сервер Unicorn ожидает наличие родительского процесса с определённым ID, из-за чего он не работает.
Пожалуйста, помогите мне разобраться: нужно ли мне скопировать каталог /var/discourse, в котором была выполнена загрузка, на производственный сервер?
Вы используете внешние PostgreSQL, Redis и Object Storage? Это ожидаемо при настройке высокой доступности (HA), и ваши производственные серверы, а также серверы сборки должны иметь доступ к этим внешним сервисам.
Просто тестирую сценарий: запуск процесса инициализации на одном сервере и запуск контейнерного образа после инициализации на другом сервере в режиме автономной работы.
Как вы планируете работать с несколькими серверами приложений и загрузками пользователей? Общий сетевой диск между всеми серверами? Это может сработать, но наше официальное решение для этого — объектное хранилище с использованием API S3.