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

Zautomatyzuj spójne kopie zapasowe Nextcloud za pomocą Restic i Cron

Zautomatyzuj spójne kopie zapasowe Nextcloud za pomocą Restic i Cron

Twórz kopie zapasowe plików Nextcloud i MariaDB, planuj zaszyfrowane migawki Restic za pomocą cron i weryfikuj odzyskiwanie bez narażania serwera na ryzyko.

Tworzenie kopii zapasowej i przywracanie skrzynki pocztowej Zimbra CE za pomocą eksportów TGZ

Tworzenie kopii zapasowej i przywracanie skrzynki pocztowej Zimbra CE za pomocą eksportów TGZ

Eksportuj pojedynczą skrzynkę pocztową Zimbra Community Edition, sprawdzaj poprawność kopii zapasowej TGZ i przywracaj brakujące elementy bez nadpisywania istniejącej poczty.

Umożliw zatwierdzonym użytkownikom tworzenie pokoi Jitsi z logowaniem przez Keycloak

Umożliw zatwierdzonym użytkownikom tworzenie pokoi Jitsi z logowaniem przez Keycloak

Zezwalaj tylko zatwierdzonym kontom na otwieranie pokoi Jitsi Meet przy użyciu Keycloak i uwierzytelniania tokenem, jednocześnie zapewniając możliwość dołączania gościom, gdy będzie to potrzebne.

Synchronizuj użytkowników usługi Active Directory z usługą ONLYOFFICE DocSpace za pośrednictwem protokołu LDAP

Synchronizuj użytkowników usługi Active Directory z usługą ONLYOFFICE DocSpace za pośrednictwem protokołu LDAP

Połącz ONLYOFFICE DocSpace z usługą Active Directory lub OpenLDAP, bezpiecznie importuj użytkowników i grupy, mapuj pola kont i planuj niezawodną synchronizację.

Dodawanie czcionek do serwera dokumentów ONLYOFFICE: Docker kontra Linux

Dodawanie czcionek do serwera dokumentów ONLYOFFICE: Docker kontra Linux

Zainstaluj niestandardowe czcionki w serwerze dokumentów ONLYOFFICE, porównaj trwałe instalacje Docker z kopiami bezpośrednimi, utwórz ponownie listę czcionek i zweryfikuj wynik.

Debian 12 na serwerze VPS z małą ilością pamięci RAM: Jak ograniczyć awarie MySQL spowodowane brakiem pamięci (OOM)

Debian 12 na serwerze VPS z małą ilością pamięci RAM: Jak ograniczyć awarie MySQL spowodowane brakiem pamięci (OOM)

Diagnozuj błędy OOM MySQL w systemie Debian 12, sprawdzaj limity pamięci VPS, konfiguruj wymianę oraz dostosowuj pamięć i współbieżność bazy danych, nie obiecując przy tym uniwersalnego rozwiązania.

Umieść dokumenty ONLYOFFICE w HAProxy bez przerywania edycji

Umieść dokumenty ONLYOFFICE w HAProxy bez przerywania edycji

Skonfiguruj protokół HAProxy HTTPS, przekazywanie nagłówków, limity czasu WebSocket i kontrole kondycji dla dokumentów ONLYOFFICE, a następnie zweryfikuj edycję i zapisy.

Instalacja i podpisywanie niestandardowych modułów jądra w bezpiecznym rozruchu SLES 15

Instalacja i podpisywanie niestandardowych modułów jądra w bezpiecznym rozruchu SLES 15

Załaduj niestandardowy moduł jądra SLES 15 bez wyłączania funkcji Secure Boot. Dopasuj uruchomiony moduł jądra, podpisz plik .ko, zarejestruj klucz MOK i zweryfikuj ładowanie.

Bezpieczne przekazywanie dziennika systemowego SLES za pomocą rsyslog i wzajemnego protokołu TLS

Bezpieczne przekazywanie dziennika systemowego SLES za pomocą rsyslog i wzajemnego protokołu TLS

Wysyłaj logi systemu SLES do zdalnego kolektora rsyslog za pośrednictwem uwierzytelnionego protokołu TLS, z kontrolą certyfikatów, buforowaniem przerw i testami dostarczania.

Uruchamianie systemu Ubuntu Server w trybie awaryjnym: przewodnik ratunkowy krok po kroku

Uruchamianie systemu Ubuntu Server w trybie awaryjnym: przewodnik ratunkowy krok po kroku

Bezpieczna diagnostyka trybu awaryjnego Ubuntu Server. Odczytaj logi rozruchu, sprawdź montowania roota i fstab, napraw uszkodzoną jednostkę, obsłuż błędy systemu plików i zweryfikuj czysty restart.