Разместите документы 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-трафик на стороне бэкэнда закрытым; зашифруйте промежуточный узел на стороне бэкэнда отдельно, если он проходит через недоверенную сеть.

  1. Проверьте каждый сервер документов на прокси-сервере. Запустите команду curl -i http://10.0.10.21/healthcheckи, если она присутствует, curl -i http://10.0.10.22/healthcheckвыполните команду. Обычно конечная точка проверки работоспособности возвращает HTTP 200 с телом true. Перед настройкой балансировки нагрузки проверьте маршрутизацию, брандмауэры или состояние серверов, если что-то из этого не работает.
  2. Подтвердите фиксированный секретный ключ JWT. Сервер документов и его коннектор должны согласовать секретный ключ токена. Для установок Docker ONLYOFFICE описывает JWT_SECRETпеременную среды; начиная с версии Docs 7.2, использование автоматически сгенерированного секрета может привести к сбоям интеграции после создания или перезапуска. В поддерживаемых многоузловых развертываниях согласуйте секреты между узлами в соответствии с архитектурой поставщика.
Проверка терминала по адресу http://10.0.10.21/healthcheck показывает HTTP 200 с значением true в теле ответа.
Запрос на проверку работоспособности бэкэнда возвращает HTTP 200 и значение true перед добавлением сервера в HAProxy.

Эти проверки соответствуют рекомендациям поставщика по установке Docker и инструкциям по настройке JWT . Не следует отключать JWT только для того, чтобы обойти ошибку прокси-сервера.

Как настроить HTTPS и перенаправить правильные заголовки?

Шаг 1: Подготовка сертификата

Получите доверенный сертификат, охватывающий docs.example.com. В этом примере для Linux HAProxy считывает PEM-файл, содержащий цепочку сертификатов, за которой следует закрытый ключ. Если сертификаты уже существуют в другом месте, замените эти пути. Ограничьте доступ к объединенному PEM-файлу и организуйте его пересборку при обновлении сертификата.

sudo install -d -m 700 /etc/haproxy/certs
sudo sh -c 'umask 077; cat /etc/letsencrypt/live/docs.example.com/fullchain.pem /etc/letsencrypt/live/docs.example.com/privkey.pem > /etc/haproxy/certs/docs.example.com.pem'
В терминале Ubuntu отображается каталог сертификатов, PEM-файл docs.example.com и ограниченные права доступа к файлам.
Сертификат и закрытый ключ размещаются в защищенном PEM-файле для HTTPS-сервера.

Шаг 2: Добавьте фронтенд и бэкенд.

Создайте резервную копию существующих настроек /etc/haproxy/haproxy.cfgи адаптируйте следующие разделы, вместо того чтобы слепо заменять специфические для дистрибутива параметры логирования или настройки служб. Это примерная конфигурация для современных версий HAProxy. Она принимает только HTTP-запросы для перенаправления, завершает HTTPS-соединение на порту 443, перенаправляет публичный хост и схему, а также отслеживает состояние приложения.

global
    log /dev/log local0

defaults
    mode http
    log global
    option httplog
    option forwardfor
    timeout connect 5s
    timeout client 60s
    timeout server 60s
    timeout tunnel 1h

frontend docs_http
    bind :80
    http-request redirect scheme https code 301

frontend docs_https
    bind :443 ssl crt /etc/haproxy/certs/docs.example.com.pem
    http-request set-header X-Forwarded-Proto https
    http-request set-header X-Forwarded-Host %[req.hdr(Host)]
    default_backend docs_nodes

backend docs_nodes
    option http-server-close
    balance roundrobin
    cookie SERVERID insert indirect nocache
    option httpchk GET /healthcheck
    http-check expect string true
    server docs1 10.0.10.21:80 check cookie docs1
    server docs2 10.0.10.22:80 check cookie docs2
Редактор конфигурации HAProxy отображает TLS-интерфейс и два частных адреса бэкэнда Document Server.
В конфигурации 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: Проверка перед переключением трафика.

Перед перезагрузкой проверьте синтаксис. Ненулевой код завершения означает, что перед продолжением необходимо устранить указанную ошибку конфигурации или сертификата:

sudo haproxy -c -f /etc/haproxy/haproxy.cfg
sudo systemctl reload haproxy
curl -i https://docs.example.com/healthcheck
На экране терминала отображается команда проверки конфигурации HAProxy и сообщение о корректной конфигурации.
Перед перезагрузкой сервиса проверьте файл 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.

Оставить комментарий

Диагностика сбоев входа в SLES PAM без блокировки доступа.

Диагностика сбоев входа в SLES PAM без блокировки доступа.

Выявите причину сбоя PAM, указав службу, политику учетной записи или поставщика идентификации, а затем восстановите правильную конфигурацию SLES, сохранив при этом работоспособную сессию администратора.

Безопасная пересылка Syslog-сообщений SLES с использованием rsyslog и взаимного TLS.

Безопасная пересылка Syslog-сообщений SLES с использованием rsyslog и взаимного TLS.

Отправляйте системные журналы SLES на удаленный сборщик rsyslog по аутентифицированному TLS, с проверкой сертификатов, буферизацией сбоев и тестированием доставки.

Автоматизируйте согласованное резервное копирование Nextcloud с помощью Restic и Cron.

Автоматизируйте согласованное резервное копирование Nextcloud с помощью Restic и Cron.

Создавайте резервные копии файлов Nextcloud и MariaDB одновременно, планируйте создание зашифрованных снимков Restic с помощью cron и проверяйте восстановление, не рискуя работающим сервером.

Создание резервной копии и восстановление почтового ящика Zimbra CE с помощью экспорта TGZ.

Создание резервной копии и восстановление почтового ящика Zimbra CE с помощью экспорта TGZ.

Экспортируйте отдельный почтовый ящик Zimbra Community Edition, проверьте его резервную копию TGZ и восстановите отсутствующие элементы без перезаписи существующих писем.

Разрешите авторизованным пользователям создавать комнаты Jitsi с помощью входа через Keycloak.

Разрешите авторизованным пользователям создавать комнаты Jitsi с помощью входа через Keycloak.

Разрешите создавать комнаты Jitsi Meet только авторизованным пользователям, используя аутентификацию Keycloak и токены, при этом сохранив возможность присоединения гостей при необходимости.

Добавление шрифтов в ONLYOFFICE Document Server: Docker против Linux

Добавление шрифтов в ONLYOFFICE Document Server: Docker против Linux

Установите пользовательские шрифты в ONLYOFFICE Document Server, сравните постоянные Docker-контейнеры с прямыми копиями, перестройте список шрифтов и проверьте результат.

Синхронизация пользователей Active Directory с ONLYOFFICE DocSpace через LDAP

Синхронизация пользователей Active Directory с ONLYOFFICE DocSpace через LDAP

Подключите ONLYOFFICE DocSpace к Active Directory или OpenLDAP, безопасно импортируйте пользователей и группы, сопоставляйте поля учетных записей и планируйте надежную синхронизацию.

Разместите документы ONLYOFFICE за HAProxy, не нарушая режим редактирования.

Разместите документы ONLYOFFICE за HAProxy, не нарушая режим редактирования.

Настройте HTTPS-протокол HAProxy, заголовки переадресации, тайм-ауты WebSocket и проверки работоспособности для документов ONLYOFFICE, а затем проверьте редактирование и сохранение.

Установка и подписание пользовательских модулей ядра в режиме безопасной загрузки SLES 15.

Установка и подписание пользовательских модулей ядра в режиме безопасной загрузки SLES 15.

Загрузите пользовательский модуль ядра SLES 15, не отключая Secure Boot. Сопоставьте его с работающим ядром, подпишите файл .ko, зарегистрируйте ключ MOK и проверьте загрузку.

Загрузка Ubuntu Server в аварийный режим: пошаговое руководство по восстановлению.

Загрузка Ubuntu Server в аварийный режим: пошаговое руководство по восстановлению.

Безопасная диагностика аварийного режима Ubuntu Server. Чтение журналов загрузки, проверка монтирования корневого каталога и файла fstab, восстановление неисправного модуля, обработка ошибок файловой системы и проверка чистой перезагрузки.