Привет! Я работаю с несколькими коллегами над завершением разовой миграции нашего старого vBulletin 3 на Discourse. Теперь пора подумать о других аспектах миграции, одним из которых является то, что у нас есть аккаунт Cloudflare, обслуживающий наш форум.
Мы хотели бы сохранить его, если это возможно, так как на нашем форуме много «наблюдателей» (и около 1000 активных пользователей).
Единственная тема, которую я нашёл здесь с какой-то информацией, датируется 2015 годом, поэтому спрашиваю: есть ли какая-то «официальная» документация, которую я мог упустить, где описано, как правильно настроить Cloudflare для Discourse?
Во вторую очередь я хотел бы узнать, есть ли какой-то процесс, которому нужно следовать, чтобы:
Как именно обслуживает? Проще всего использовать режим DNS. Если вы готовы потратить немного дополнительного времени ради минимальной выгоды, есть несколько тем на эту тему. В основном, речь идет об отключении оптимизаций, которые нарушают работу Discourse. Если же ваша цель — снять часть нагрузки с сервера, то лучше использовать полноценную CDN, например bunny.net.
Полагаю, что статистика и поиск должны работать без проблем.
Возможно, немного недальновидно подразумевать, что Cloudflare не является «настоящим CDN»? Ведь он является им (и даже больше). Возможно, вы имели в виду «традиционный» CDN?
Настройка традиционного CDN потребует значительно больше времени и принесет примерно тот же результат.
Cloudflare может оказаться дешевле, поскольку бесплатной версии, скорее всего, хватит многим пользователям. Похоже, что постоянно появляется активная тема, где кто-то ломает свой сайт с помощью Cloudflare, и самый простой способ заставить его работать — отключить все оптимизации, чтобы это лишь увеличило задержку.
Если бы вы создали тему, описывающую, как настроить Cloudflare так, чтобы он обеспечивал те же преимущества, что и традиционный CDN, это было бы действительно очень полезно. Возможно, достаточно просто отключить Rocket Loader, но кажется, что точная настройка может быть подвижной целью (поскольку они постоянно обновляют и улучшают свой продукт).
Извините, я не хочу разжигать дискуссию о том, какой CDN лучше и т.д.
Я сам ещё не получил больше информации, но насколько я понимаю, форум в настоящее время использует платный тариф (так что, наверное, не бесплатный вариант), но даже в этом случае это уже не главное.
Простой вопрос → Что мне нужно сделать, чтобы настроить Cloudflare так, чтобы он не мешал Discourse?
После этого я с удовольствием разберусь, действительно ли это необходимо (то есть, какие преимущества и т.д.)
Также, если кто-то сможет дать мне ссылку или что-то ещё по двум другим второстепенным вопросам, это было бы замечательно
На следующей неделе я проведу несколько тестов в тестовой среде, так что пока ничего не окончательное!
Если ваш форум размещён на discourse.org или у любого другого провайдера, прежде чем что-либо настраивать с Cloudflare, лучше сначала проконсультироваться с ними. Обычно достаточно просто создать DNS-запись CNAME, указывающую на их серверы. У discourse.org уже есть настроенные CDN, так что вам не о чем беспокоиться.
Спасибо @pfaffman, он размещён самостоятельно. Как я уже говорил, он используется для текущего форума vBulletin, который просто отключится и будет заменён на Discourse, который будет отвечать с того же доменного имени.
Это зависит от того, какую роль (если вообще какую-либо) вы хотите, чтобы играл Cloudflare.
Если вы хотите использовать Cloudflare только как DNS-сервер, убедитесь, что для записи ‘A’ вашего форума отключён оранжевый облако.
Если вы хотите, чтобы трафик Discourse действительно проходил через сеть Cloudflare и вас устраивает дополнительная задержка, которую он добавляет, то как минимум создайте правило страницы для «Отключения оптимизации производительности» (Disable Performance) для всего домена форума. Ни одна из оптимизаций производительности Cloudflare не рекомендуется, и известно, что они могут нарушить работу сайтов.
Обратите внимание, что существует шаблон Cloudflare, который нужно добавить в ваш файл app.yml. Он передаст заголовок CF-Connecting-IP как IP-адрес клиента, чтобы вы не видели всех пользователей как исходящих с узла их сети.
Если вы не используете объектное хранилище и работаете с включённым оранжевым облаком, вы можете создать правило кэширования для пути к вашим активам.
Cloudflare использовался (и, по сути, до сих пор используется) для того, чтобы не перегружать реальный веб-сервер запросами.
Меня больше всего интересовало, как с учётом природы Discourse, ориентированной на обновления в реальном времени (я предполагаю, что это WebSocket, но не проверял), это могло стать проблемой в сочетании с таким механизмом, как кэширование Cloudflare и прочим. Поэтому я и спрашивал, есть ли какая-либо документация или есть ли у кого-то советы
Я ничего не знаю, и поэтому я то и дело теряюсь, но похоже, что вы ищете суть PHP, а получаете суть JavaScript-приложения, где всё, кроме получения реальных данных, происходит на устройстве пользователя.
Именно поэтому (и из-за моих ограниченных навыков) мои попытки поставить Varnish перед Discourse провалились с таким треском.
Конечно, вы можете раздавать статические файлы через CDN, но и только.
Верно, Cloudflare не может ничего сделать для снижения нагрузки на сервер приложений. Как одностраничное JavaScript-приложение, Discourse действительно не получает от этого пользы.
Более того, размещение Discourse за Cloudflare добавляет дополнительные сетевые переходы для каждого запроса между приложением в браузере и сервером, что приводит к незначительному увеличению времени отклика.
Вы храните загрузки на сервере или используете S3 или аналогичную альтернативу?
Я не очень хорошо разбираюсь в дизайне Discourse, но, учитывая, что Redis уже управляет кэшированием общих запросов, это объясняет, почему Cloudflare не является действительно необходимым.
Так, правильно ли я понимаю, что в целом использование Cloudflare перед установкой Discourse даёт мало или вообще никакой выгоды, а наоборот, может замедлить ответ из-за дополнительных сетевых переходов?
Единственной причиной использования Cloudflare для установки vBulletin 3 была перегрузка сервера количеством запросов. И (просто предполагаю) это могло быть связано с некачественной работой в дизайне кода vBulletin 3, если честно, потому что виртуальная машина, на которой она размещена, имеет 4 ядра и 8 ГБ ОЗУ только для самого приложения, а ещё одна виртуальная машина с такими же характеристиками — для базы данных.
Ни одно современное веб-приложение сегодня не нуждается в такой мощности.
Кстати, есть ли какие-либо справочные материалы, которые я могу изучить, чтобы оценить, какое аппаратное обеспечение потребуется для установки Discourse со средним показателем ~1000 активных пользователей и ~5–6000 наблюдателей?
Это не совсем так. Особенно при первой загрузке Cloudflare может ускорить загрузку статических JavaScript-ресурсов. И именно на это Google обращает внимание, чтобы определить, достаточно ли производительна ваша страница, чтобы избежать штрафа от поисковой системы. Преимущества более значительны, если у вас маркетинговый форум, привлекающий пользователей из поисковых систем, а недостатки проявляются сильнее, если у вас форум с активной, возвращающейся группой пользователей.
Нет, потому что это действительно зависит от того, насколько активны эти пользователи или посещают ли они сайт раз в день. Я видел, как группа из < 50 человек, обменивающихся большими фотографиями и использующих Discourse как чат в течение всего дня, заставляла очень производительное оборудование работать на пределе, в то время как я также видел форум с 10 000 пользователей, которые заходили раз в неделю, чтобы что-то написать, и более 30 миллионов (!) «подводных» пользователей, который работал на посредственном VPS.
Спасибо за прозрение и информацию, @RGJ. Думаю, я просто буду следить за ситуацией и посмотрим, как всё сложится. Надеюсь, это не потребует значительного увеличения требований по сравнению с предыдущим программным обеспечением