Привет, ребята.
Как развернуть вторичный/резервный Discourse?
Я думал, что это довольно распространённая тема, но не смог ничего по этому поводу найти.
Такой резервный Discourse, очевидно, по моему замыслу и при попытке настроить его именно так, должен работать на узле-слейве/узлах только для чтения, с доступом только для чтения как к Redis, так и к pgSQL. Однако Discourse не запускается с ошибкой:
Redis::CommandError: ERR Error running script (call to f_bcec1d9b3bbcfb089dc0b7316771be9f011872b6): @user_script:8: @user_script: 8: -READONLY You can’t write against a read only replica.
даже при установке DISCOURSE_SKIP_BOOTSTRAP=yes
Как вы это делаете? Всё это в контексте контейнеров — возможно ли иметь такой резервный Discourse — тем способом, который я пытаюсь использовать, или любым другим подходом — например, настроить отказоустойчивую (HA) конфигурацию?
Если вы хотите обеспечить высокую доступность (HA), то нужно настроить репликацию PostgreSQL, а возможно, и Redis, хотя для Redis не составит труда просто запустить новый экземпляр.
В других местах есть руководства по настройке репликации PostgreSQL. Либо вы можете поручить это RDS.
Насколько я понимаю, не существует официальных технологий, не являющихся сторонними, для реализации многомастерской архитектуры PostgreSQL, и это в ещё большей степени относится к Redis.
Действительно ли невозможно указать Discourse о такой среде и попросить его не обращать на это внимания или игнорировать это?
Если это невозможно, и @devel прочитает это, то я предлагаю — думаю, многие оценят — «улучшить» Discourse таким образом, чтобы он выполнял все необходимые проверки, но не завершал работу с ошибкой, а запускался и работал в такой среде с данными только для чтения.