Discourse High Availability

Has anyone played with a HAProxy/nginx/etc?

I could have sworn there was a how-to guide for a way to do distributed hosting, either via Docker or via multiple instances of Discourse all hitting a single high availability database server, but I can’t seem to find a guide for it.

Any thoughts? I’m currently serving a small single Discourse site, but am interested in learning as much as I can about scaling and load balancing of Discourse.

Found it, less than fifteen minutes after I posted. I’ll put any info on snags or clarifications that might be helpful into the conversation here.

The documentation is very fragmented. I’m going to attempt to pull it all together here.

Any chance I could get some input from @nx2zdk or @jspdng?

Info on avoiding port exposure:

Load balancing with nginx:

Enabling http2 on Debian:

Offline page setup:

Я не смог найти более точных ответов в других местах.

Я понял, что установка Discourse в режиме standalone рекомендуется за её простоту и надёжность в стандартных средах. Однако для обеспечения высокой доступности (HA) некоторые предлагают расширять режим standalone до нескольких контейнеров (29413), другие же рекомендуют полностью переработать архитектуру, разделив компоненты на отдельные развёртывания.

  1. Вопрос 1: Поскольку высокая доступность (HA) подразумевает дублирование сервисов (веб-серверов и баз данных) с надёжным переключением при сбоях, предлагает ли Discourse решение, при котором и веб-сервисы, и базы данных реплицируются внутри контейнеров?

  2. Вопрос 2: Для веб-сервисов необходим балансировщик нагрузки для обеспечения равномерного распределения трафика между экземплярами. Какие рекомендации дают эксперты Discourse и сообщество?

  3. Вопрос 3: Для обеспечения HA в случае контейнеризированной базы данных, какой способ управления репликацией PostgreSQL считается наиболее предпочтительным?

  4. Вопрос 4: Тот же вопрос касается Redis.

Существует множество способов обработки отказа PostgreSQL. Вы можете использовать любой из них.

Хостинг CDCD использует HA-proxy, насколько мне известно. Вы можете использовать любой балансировщик нагрузки и (в основном) использовать /srv/status как индикатор готовности.