Главная
» Как сделать
»
Разместите документы ONLYOFFICE за HAProxy, не нарушая режим редактирования.
Разместите документы ONLYOFFICE за HAProxy, не нарушая режим редактирования.
Запустите ONLYOFFICE Docs за HAProxy, завершая HTTPS-соединение на прокси-сервере, перенаправляя исходный хост и схему, а также разрешая длительные соединения WebSocket. Начните с одного работоспособного Document Server; добавляйте больше бэкэндов только тогда, когда ваша система ONLYOFFICE будет настроена для поддержки многоузловой работы, а не просто потому, что HAProxy может распределять запросы.
Может ли HAProxy распределять нагрузку между двумя независимыми серверами документов?
HAProxy может распределять HTTP-запросы между узлами, но это не превращает две автономные установки ONLYOFFICE в скоординированный кластер для редактирования. Сеанс редактирования имеет постоянные соединения и состояние приложения. В официальном примере ONLYOFFICE active-active используются проверки работоспособности бэкэнда и постоянный cookie-файл; это механизмы маршрутизации, а не замена общим службам и архитектуре на уровне приложений, которые требуются для вашей версии.
Для стандартной установки на одном сервере используйте только docs1описанный ниже бэкэнд. Для двух узлов сначала подтвердите архитектуру кластера, поддерживаемую версию, общие зависимости, совместимость версий и конфигурацию JWT в документации по развертыванию ONLYOFFICE или в службе поддержки поставщика. Примеры адресов — 10.0.10.21и 10.0.10.22— являются иллюстративными частными IP-адресами, а не обнаруженными хостами.
Что должно работать, прежде чем вы начнете редактировать HAProxy?
Публичное имя docs.example.comдолжно разрешаться в вашу конечную точку HAProxy. HAProxy необходимы входящие TCP-порты 80 и 443, а также доступ к каждому серверу документов через частную сеть на порту 80. Ваше приложение для управления документами также должно иметь возможность обращаться к публичному адресу Docs, а ONLYOFFICE должен иметь возможность получать документы и отправлять обратные вызовы в приложение. Держите HTTP-трафик на стороне бэкэнда закрытым; зашифруйте промежуточный узел на стороне бэкэнда отдельно, если он проходит через недоверенную сеть.
Проверьте каждый сервер документов на прокси-сервере. Запустите команду curl -i http://10.0.10.21/healthcheckи, если она присутствует, curl -i http://10.0.10.22/healthcheckвыполните команду. Обычно конечная точка проверки работоспособности возвращает HTTP 200 с телом true. Перед настройкой балансировки нагрузки проверьте маршрутизацию, брандмауэры или состояние серверов, если что-то из этого не работает.
Подтвердите фиксированный секретный ключ JWT. Сервер документов и его коннектор должны согласовать секретный ключ токена. Для установок Docker ONLYOFFICE описывает JWT_SECRETпеременную среды; начиная с версии Docs 7.2, использование автоматически сгенерированного секрета может привести к сбоям интеграции после создания или перезапуска. В поддерживаемых многоузловых развертываниях согласуйте секреты между узлами в соответствии с архитектурой поставщика.
Запрос на проверку работоспособности бэкэнда возвращает HTTP 200 и значение true перед добавлением сервера в HAProxy.
Как настроить HTTPS и перенаправить правильные заголовки?
Шаг 1: Подготовка сертификата
Получите доверенный сертификат, охватывающий docs.example.com. В этом примере для Linux HAProxy считывает PEM-файл, содержащий цепочку сертификатов, за которой следует закрытый ключ. Если сертификаты уже существуют в другом месте, замените эти пути. Ограничьте доступ к объединенному PEM-файлу и организуйте его пересборку при обновлении сертификата.
Сертификат и закрытый ключ размещаются в защищенном PEM-файле для HTTPS-сервера.
Шаг 2: Добавьте фронтенд и бэкенд.
Создайте резервную копию существующих настроек /etc/haproxy/haproxy.cfgи адаптируйте следующие разделы, вместо того чтобы слепо заменять специфические для дистрибутива параметры логирования или настройки служб. Это примерная конфигурация для современных версий HAProxy. Она принимает только HTTP-запросы для перенаправления, завершает HTTPS-соединение на порту 443, перенаправляет публичный хост и схему, а также отслеживает состояние приложения.
В конфигурации HAProxy публичный TLS-сервер отделен от внутренних бэкэндов Document Server; используйте полные директивы, показанные выше.
Удалите эту docs2строку, если второй узел действительно не готов. Постоянный cookie помогает последующим HTTP-запросам возвращаться к выбранному узлу. HAProxy обрабатывает обновление HTTP WebSocket без специальной перезаписи URL; timeout tunnel 1hпозволяет неактивным обновленным соединениям оставаться открытыми дольше, чем обычным запросам. Документация HAProxy WebSocket объясняет это поведение.
Здесь указание значения X-Forwarded-Protoявляется httpsправильным, поскольку этот интерфейс завершает публичный HTTPS-трафик. Не доверяйте произвольной схеме переадресации, предоставляемой клиентом, или хосту на границе сети, обращенной к Интернету. В документации к прокси-серверу ONLYOFFICE прямо указано, что X-Forwarded-Protoнеобходимо X-Forwarded-Hostсохранять контекст внешнего URL-адреса.
Как следует перезагрузить и протестировать балансировщик нагрузки?
Шаг 3: Проверка перед переключением трафика.
Перед перезагрузкой проверьте синтаксис. Ненулевой код завершения означает, что перед продолжением необходимо устранить указанную ошибку конфигурации или сертификата:
Перед перезагрузкой сервиса проверьте файл haproxy.cfg; успешная проверка синтаксиса не заменяет редактирование тестов.
В ответе на публичную проверку работоспособности должен отображаться HTTP 200, trueкогда бэкэнд работает корректно. HAProxy использует директивы option httpchkи http-check expectдля удаления неисправных узлов из ротации новых запросов; см. его справочник по проверке работоспособности . Прохождение проверки не доказывает работоспособность редактирования документов или доставки обратных вызовов.
Шаг 4: Подтвердите редактирование, подключение WebSockets и сохранение.
Откройте документ через интегрированное приложение, например, систему управления документами, подключенную к ONLYOFFICE Docs. В инструментах разработчика браузера используйте панель «Сеть», чтобы проверить соединение WebSocket: подтверждение соединения должно пройти успешно, обычно со статусом HTTP 101 Switching Protocols. Внесите небольшие изменения, закройте редактор, снова откройте документ и убедитесь, что изменения сохранены. Для корректной работы двух узлов также протестируйте второй узел и запланированное отключение одного узла во время планового технического обслуживания.
Если проверка работоспособности проходит успешно, но редактор зависает или отключается, проверьте предупреждения о смешанном содержимом, сбои WebSocket, несоответствия JWT и возможность доступа приложения к заявленному URL-адресу Docs. Если документ открывается, но не сохраняется, проверьте доступность обратного вызова от сервера документов к исходному приложению, а не изменяйте политику циклического распределения HAProxy. Прерванная активная сессия WebSocket может потребовать повторного подключения клиента; проверки работоспособности бэкэнда не гарантируют бесперебойного переключения при редактировании.
Окончательная проверка: должны пройти как проверку общедоступной точки доступа, так и реальный тест редактирования и повторного открытия. В ротации должны оставаться только проверенные и поддерживаемые узлы, необходимо убедиться, что обновление сертификата перезагружает правильный PEM-файл, и отслеживать журналы HAProxy на предмет повторных ответов 502/503 или неожиданных разрывов соединения WebSocket.