Umieść dokumenty ONLYOFFICE w HAProxy bez przerywania edycji

Uruchom ONLYOFFICE Docs za pomocą HAProxy, kończąc HTTPS na serwerze proxy, przekazując oryginalny host i schemat oraz zezwalając na długotrwałe połączenia WebSocket. Zacznij od jednego sprawnego serwera dokumentów; dodawaj kolejne zaplecza tylko wtedy, gdy wdrożenie ONLYOFFICE jest skonfigurowane do obsługi wielu węzłów, a nie tylko dlatego, że HAProxy może dystrybuować żądania.

Czy HAProxy może zrównoważyć obciążenie dwóch niezależnych serwerów dokumentów?

HAProxy może dystrybuować żądania HTTP między węzłami, ale to nie czyni z dwóch niezależnych instalacji ONLYOFFICE skoordynowanego klastra edycyjnego. Sesja edytora ma trwałe połączenia i stan aplikacji. Oficjalny przykład ONLYOFFICE w trybie aktywny-aktywny korzysta z kontroli stanu zaplecza i trwałego pliku cookie; są to mechanizmy routingu, a nie zamienniki usług współdzielonych i architektury na poziomie aplikacji wymagane przez daną edycję.

W przypadku konwencjonalnej instalacji na jednym serwerze należy używać tylko docs1poniższego zaplecza. W przypadku dwóch węzłów należy najpierw sprawdzić architekturę klastra, obsługiwaną edycję, współużytkowane zależności, zgodność wersji oraz konfigurację JWT w dokumentacji wdrożenia ONLYOFFICE lub pomocy technicznej dostawcy. Przykładowe adresy — 10.0.10.21i 10.0.10.22— to przykładowe prywatne adresy IP, a nie wykryte hosty.

Co musi działać zanim zaczniesz edytować HAProxy?

Nazwa publiczna docs.example.compowinna być rozwiązana na punkt końcowy HAProxy. HAProxy wymaga portów TCP 80 i 443 dla ruchu przychodzącego oraz dostępu do każdego serwera dokumentów w sieci prywatnej na porcie 80. Aplikacja do zarządzania dokumentami musi również mieć dostęp do publicznego adresu Docs, a ONLYOFFICE musi mieć możliwość pobierania dokumentów i wysyłania wywołań zwrotnych do aplikacji. Zachowaj prywatność protokołu HTTP w zapleczu; szyfruj przeskok w zapleczu osobno, jeśli przechodzi on przez niezaufaną sieć.

  1. Sprawdź każdy serwer dokumentów z hosta proxy. Uruchom curl -i http://10.0.10.21/healthchecki, jeśli jest obecny, curl -i http://10.0.10.22/healthcheck. Punkt końcowy stanu operacyjnego zazwyczaj zwraca HTTP 200 z treścią true. Sprawdź routing, zapory sieciowe lub stan serwera przed skonfigurowaniem równoważenia, jeśli którykolwiek z nich zawiedzie.
  2. Potwierdź stały sekret JWT. Serwer dokumentów i jego łącznik muszą być zgodne co do sekretu tokena. W przypadku instalacji Dockera, ONLYOFFICE dokumentuje JWT_SECRETzmienną środowiskową; od wersji Docs 7.2, poleganie na automatycznie generowanym kluczu tajnym może powodować błędy integracji po odtworzeniu lub ponownym uruchomieniu. W obsługiwanych wdrożeniach wielowęzłowych, należy wyrównać klucze tajne między węzłami zgodnie z architekturą dostawcy.
Terminal sprawdza http://10.0.10.21/healthcheck i wyświetla w treści odpowiedzi HTTP 200 z wartością true.
Żądanie kontroli stanu zaplecza zwraca kod HTTP 200 i wartość true przed dodaniem serwera do HAProxy.

Te kontrole są zgodne z instrukcjami dostawcy dotyczącymi instalacji Dockera i konfiguracji JWT . Nie należy wyłączać JWT tylko po to, aby obejść błąd serwera proxy.

Jak skonfigurować protokół HTTPS i przekazywać prawidłowe nagłówki?

Krok 1: Przygotuj certyfikat

Uzyskaj zaufany certyfikat obejmujący docs.example.com. W tym przykładzie dla Linuksa, HAProxy odczytuje plik PEM zawierający łańcuch certyfikatów, a następnie klucz prywatny. Jeśli certyfikaty istnieją już gdzie indziej, zastąp je ścieżkami. Ogranicz dostęp do połączonego pliku PEM i zorganizuj jego odbudowę po odnowieniu certyfikatu.

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'
Terminal Ubuntu pokazujący katalog certyfikatów, plik PEM docs.example.com i ograniczone uprawnienia pliku.
Certyfikat i klucz prywatny umieszczane są w chronionym pliku PEM dla programu nasłuchującego HTTPS.

Krok 2: Dodaj front-end i back-end

Zamiast bezmyślnie zastępować ustawienia logowania lub usługi specyficzne dla dystrybucji, utwórz kopię zapasową istniejących /etc/haproxy/haproxy.cfgi dostosuj poniższe sekcje. To przykładowa konfiguracja dla nowoczesnych wersji HAProxy. Akceptuje ona tylko HTTP do przekierowania, kończy HTTPS na porcie 443, przekazuje publiczny host i schemat oraz monitoruje punkt końcowy kondycji aplikacji.

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
Edytor konfiguracji HAProxy wyświetlający front-end TLS i dwa prywatne adresy back-endu Document Server.
Konfiguracja HAProxy oddziela publiczny program nasłuchujący TLS od wewnętrznych zapleczy serwera dokumentów; należy użyć pełnych dyrektyw pokazanych powyżej.

Usuń docs2wiersz, chyba że drugi węzeł jest rzeczywiście gotowy. Plik cookie trwałości pomaga kolejnym żądaniom HTTP powrócić do wybranego węzła. HAProxy obsługuje aktualizację HTTP WebSocket bez specjalnego przepisywania adresu URL; timeout tunnel 1hpozwala, aby bezczynne, zaktualizowane połączenia pozostawały otwarte dłużej niż zwykłe żądania. Dokumentacja HAProxy WebSocket wyjaśnia to zachowanie.

Ustawienie X-Forwarded-Protojest httpstutaj poprawne, ponieważ ten front-end kończy publiczny protokół HTTPS. Nie należy ufać dowolnemu schematowi przekierowania ani hostowi dostarczonemu przez klienta na krawędzi dostępu do Internetu. Dokumentacja serwera proxy ONLYOFFICE wyraźnie wymaga X-Forwarded-Protoi X-Forwarded-Hostzachowuje zewnętrzny kontekst adresu URL.

Jak należy przeładować i przetestować moduł równoważenia obciążenia?

Krok 3: Zweryfikuj przed przełączeniem ruchu

Sprawdź składnię przed ponownym załadowaniem. Kod wyjścia różny od zera oznacza, że ​​przed kontynuacją należy rozwiązać zgłoszony błąd konfiguracji lub certyfikatu:

sudo haproxy -c -f /etc/haproxy/haproxy.cfg
sudo systemctl reload haproxy
curl -i https://docs.example.com/healthcheck
Terminal wyświetlający polecenie weryfikacji konfiguracji HAProxy i komunikat o prawidłowej konfiguracji.
Przed ponownym załadowaniem usługi sprawdź poprawność pliku haproxy.cfg; pomyślna walidacja składni nie zastępuje edycji testów.

Publiczna odpowiedź na kontrolę stanu powinna wskazywać HTTP 200 oraz trueinformację, że zaplecze jest sprawne. HAProxy używa dyrektyw option httpchki http-check expectdo usuwania wadliwych węzłów z rotacji nowych żądań; patrz odnośnik do kontroli stanu . Pozytywny wynik kontroli nie dowodzi, że edycja dokumentów lub dostarczanie wywołań zwrotnych działa.

Krok 4: Potwierdź edycję, WebSockets i zapisanie

Otwórz dokument za pośrednictwem zintegrowanej aplikacji, takiej jak system zarządzania dokumentami połączony z ONLYOFFICE Docs. W narzędziach programistycznych przeglądarki użyj panelu Sieć, aby sprawdzić połączenie WebSocket: uzgadnianie aktualizacji powinno zakończyć się pomyślnie, zazwyczaj ze statusem HTTP 101 Switching Protocols. Wprowadź niewielką edycję, zamknij edytor, ponownie otwórz dokument i upewnij się, że zmiana została zapisana. Aby zapewnić prawidłowe wdrożenie dwuwęzłowe, przetestuj również drugiego współpracownika i zaplanowane opróżnienie pojedynczego węzła podczas przerwy konserwacyjnej.

Jeśli publiczna kontrola poprawności działania działa, ale edytor się zawiesza lub rozłącza, sprawdź ostrzeżenia dotyczące mieszanej zawartości, błędy WebSocket, niezgodności JWT oraz to, czy aplikacja dokumentu może dotrzeć do reklamowanego adresu URL Dokumentów. Jeśli dokument otwiera się, ale nie zapisuje, sprawdź dostępność wywołania zwrotnego z Serwera Dokumentów do aplikacji źródłowej, zamiast zmieniać zasadę działania mechanizmu round-robin w HAProxy. Przerwana aktywna sesja WebSocket może nadal wymagać ponownego połączenia klienta; kontrole poprawności działania zaplecza nie gwarantują bezproblemowego przejścia w tryb failover edycji.

Weryfikacja końcowa: zarówno test punktu końcowego zdrowia publicznego, jak i rzeczywisty test edycji i ponownego otwarcia powinny zakończyć się pomyślnie. Należy zachować w rotacji tylko zweryfikowane, obsługiwane węzły, potwierdzić, że odnowienie certyfikatu ponownie ładuje prawidłowy PEM, oraz monitorować logi HAProxy pod kątem powtarzających się odpowiedzi 502/503 lub nieoczekiwanych rozłączeń WebSocket.

Zostaw komentarz

Ustaw publiczny adres URL NextCloud, aby mógł się do siebie dodzwonić

Napraw ostrzeżenie Nextcloud o brakującym adresie wychodzącym, ustawiając jego kanoniczny adres URL i sprawdzając routing DNS, HTTPS i odwrotnego serwera proxy na samym serwerze.

Konfigurowanie buforowania Nextcloud Redis w systemie Ubuntu 24.04

Konfigurowanie buforowania Nextcloud Redis w systemie Ubuntu 24.04

Skonfiguruj APCu i Redis przez lokalne gniazdo Unix na potrzeby buforowania i blokowania plików w usłudze Nextcloud, wraz z instrukcjami dla bieżących i starszych wersji usługi Nextcloud.

Uruchom automatycznie Nextcloud Cron za pomocą timera Systemd

Sprawdź tryb cron Nextcloud, napraw usługę systemd i timer oraz zweryfikuj, czy zadania w tle są uruchamiane po uruchomieniu i co pięć minut.

Usuń ostrzeżenie o blokowaniu plików w NextCloud za pomocą Redis

Włącz niezawodne blokowanie plików Nextcloud, wybierz odpowiedni serwer Redis lub Valkey i sprawdź, czy ostrzeżenie zostanie usunięte bez ryzyka równoczesnych zmian w plikach.

Co jest potrzebne, aby uzyskać ocenę bezpieczeństwa Nextcloud A+

Co jest potrzebne, aby uzyskać ocenę bezpieczeństwa Nextcloud A+

Napraw typowe błędy skanowania Nextcloud dzięki bieżącym aktualizacjom, protokołom HTTPS i HSTS, precyzyjnemu zaufaniu do odwrotnego serwera proxy i sprawdzeniu względem serwera publicznego.

Włącz szyfrowanie po stronie serwera Nextcloud z mierzalnym wpływem

Skonfiguruj Nextcloud SSE dla pamięci masowej, która tego wymaga, chroń klucze szyfrujące i zmierz wpływ transferu i procesora przed zaszyfrowaniem istniejących plików.

Dodaj wyszukiwanie pełnotekstowe Elasticsearch do NextCloud

Połącz wyszukiwarkę plików Nextcloud z Elasticsearch, zindeksuj zawartość dokumentów i wybierz konfigurację odpowiadającą Twoim potrzebom w zakresie serwera i bezpieczeństwa.

Ustaw niezawodną politykę wygasania dla usuniętych plików w usłudze NextCloud

Ustaw niezawodną politykę wygasania dla usuniętych plików w usłudze NextCloud

Skonfiguruj Nextcloud tak, aby usuwał usunięte pliki po upływie określonego czasu przechowywania, niezawodnie planował zadania w tle i unikał poleceń, które usuwają śmieci każdego użytkownika.

Ostrzeżenie o braku indeksów bazy danych NextCloud

Ostrzeżenie o braku indeksów bazy danych NextCloud

Wykonaj bezpieczną naprawę OCC w Nextcloud, przejrzyj zmiany w bazie danych i sprawdź, dlaczego ostrzeżenie może nadal się pojawiać.

Zwiększ limit przesyłania danych do sieci w NextCloud powyżej 2 GB

Zwiększ limit przesyłania danych do sieci w NextCloud powyżej 2 GB

Zezwól na przesyłanie większych plików przez przeglądarkę Nextcloud, dostosowując ustawienia PHP, Nginx lub Apache, tymczasowego miejsca przechowywania i limitu czasu — i sprawdź, który limit blokuje plik.