1
S3-tallennustila
Luo kolme bucketia ja kaksi käyttäjää sivun S3 mukaisesti omalla S3-palvelullasi tai klusterin sisäisellä Garagella, ja vie neljä avainta Secretiin
overleaf-s3. Alla oleva konfiguraatio käyttää kyseisen sivun Garage-esimerkkiä.2
Konfiguraatio
Tämä ConfigMap korvaa tiedoston
30-config.yaml. Se lisää S3:n ja git-bridgen ja osoittaa OVERLEAF_SITE_URL-arvon kuormantasaajaan:60-config.yaml
3
Replikat
70-overleaf.yaml
- StatefulSet, ei Deployment. Jokainen replika saa pysyvän nimen (
overleaf-0,overleaf-1, …), johon kuormantasaajan eväste ja git-bridge viittaavat, jaOrderedReadykäynnistää ensinoverleaf-0:n yksinään, joten vain yksi replika ajaa tietokantamigraatiot. - Yksi replika solmua kohden. Jokainen replika käynnistää käännöksensä solmunsa Dockerin kautta ja säilyttää ne solmunsa hakemistossa
/srv/overleaf-ha. V1_HISTORY_URLreplikakohtaisesti. Jokainen replika jakaa historialinkit omalla nimellään, jotta git-bridge tavoittaa ne.
4
git-bridge
75-git-bridge.yaml
GIT_BRIDGE_HOST on kiinteä IP-osoite.5
Kuormantasaaja
HAProxy-konfiguraatio on Overleafin esimerkki viidellä muutoksella:
/project/<id>/mcp reititetään overleaf-0:lle kuten /git/ (katso MCP-palvelin), pelkkä HTTP portissa 8080 (image toimii ei-root-käyttäjänä, joka ei voi sitoa porttia 80 containerd:n alla), palvelimet löydetään klusterin DNS:n kautta (podien IP-osoitteet vaihtuvat jokaisella uudelleenkäynnistyksellä), DaemonSet, jotta jokainen solmu vastaa, sekä balance leastconn oletusarvon roundrobin sijaan (katso alla olevat kysymykset ja vastaukset).80-haproxy.yaml
externalTrafficPolicy: Local säilyttää käyttäjien IP-osoitteet otsakkeessa X-Forwarded-For.6
TLS
Päätä HTTPS HAProxyssa sivun TLS-välityspalvelin mukaisesti ja aseta sitten tiedostossa
60-config.yaml OVERLEAF_SITE_URL https://-osoitteeseen ja OVERLEAF_SECURE_COOKIE: "true".Mitä odottaa
Testasimme kolmea replikaa kolmella solmulla, joissa kussakin oli 2 vCPU:ta ja 4 Gt muistia, ja MongoDB, Redis, Garage, git-bridge ja HAProxy olivat samoilla solmuilla:- 12 käyttäjää käänsi 600-sivuista dokumenttia samanaikaisesti: kaikki 12 käänsivät ja noutivat PDF:nsä, 4 käyttäjää replikaa kohden; kierros kesti 8–18 sekuntia. Jokaisella solmulla oli vähintään 1,3 Gt muistia vapaana.
- Jokainen käyttäjä pysyy yhdellä replikalla (eväste
server-pro-ha), mukaan lukien PDF-lataus, jonka on tultava sen kääntäneeltä replikalta. Sama pätee HTTPS:n yli, mukaan lukien editorin WebSocket. - Kun replika pysähtyy, sen käyttäjät saavat virheitä noin 15–20 sekunnin ajan, kunnes HAProxy merkitsee sen alhaalla olevaksi; sitten he siirtyvät toiselle replikalle ja pysyvät kirjautuneina, koska istunnot ovat Redisissä.
Kysymyksiä ja vastauksia
Miksi balance leastconn?
Miksi balance leastconn?
Vastaus: Overleafin esimerkillä (
roundrobin, yksi HAProxy solmua kohden) 12 uutta käyttäjää jakautui testissämme kolmelle replikalle 8, 3 ja 1, ja kuormitetuin replika pani hitaimmat käyttäjät odottamaan 29 sekuntia. Asetuksella leastconn, joka suosii replikaa, jolla on vähiten avoimia yhteyksiä (jokainen editori pitää WebSocketin auki), sama testi antoi 4, 4 ja 4 sekä 18 sekuntia. Pysyvyys ei muutu: se perustuu evästeeseen.Voinko käyttää ingress-ohjaintani HAProxyn sijaan?
Voinko käyttää ingress-ohjaintani HAProxyn sijaan?
Vastaus: Kyllä, jos se reitittää evästeen perusteella pysyvälle replikalle, tukee WebSocketeja, sallii 10 minuutin pyyntöajat ja 50 Mt:n lataukset, pitää keep-alive-aikakatkaisunsa alle 65 sekunnissa, lähettää otsakkeet
X-Forwarded-For ja X-Forwarded-Proto sekä ohjaa /git/- ja /project/<id>/mcp-pyynnöt overleaf-0:lle. Reititä replikoiden omiin nimiin (overleaf-N.overleaf-hl), älä Serviceen, joka tasaa jokaisen pyynnön.Miten lisään neljännen replikan?
Miten lisään neljännen replikan?
Vastaus: Lisää solmu, jossa on Docker ja TeX Live -imaget, aseta
replicas: 4 tiedostoon 70-overleaf.yaml ja lisää HAProxy-konfiguraatioon rivi server overleaf-3 ... (ja kasvata config-hash-arvoa, jotta HAProxy käynnistyy uudelleen).
