Fara beint í efni

Vefþrepið á Cloudflare Workers

Keyrðu skert vefþrep Quire á Cloudflare Workers.

Skoða sem Markdown

Hönnunin er í docs/architecture/23-ops.md kafla 6. Workers keyra skert vefþrep. Eigindajafnræði á Workers er utan gildissviðs (PRD kafli 12): því sem þetta markumhverfi getur ekki er hafnað þegar það ræsir, með nafni.

Staðan í þessari útgáfu

Uppsetningin er til staðar (apps/web/wrangler.jsonc, cloudflare-module Nitro-forstillingin, Hyperdrive-brúin og ræsingarathuganirnar). Worker þarf S3-samhæfða geymslu fyrir R2 (QUIRE_STORAGE_DRIVER=s3), rauntímarekil þvert á beiðnir (QUIRE_REALTIME_DRIVER=durable_objects eða centrifugo), sameiginlegt skyndiminni (QUIRE_CACHE_DRIVER=postgres eða valkey) og tölvupóstveitu yfir HTTP. Án þeirra neitar Workerinn að ræsa og annállinn nefnir hverja stillingu. Durable Objects-rekillinn er biðlari rauntíma- Workersins í apps/realtime-worker (einn Durable Object á hverja rás fyrir útvarp, viðveru og sögu, einn á hverja manneskju fyrir aftengingar); settu hann upp með, eins og hér að neðan, eða notaðu Centrifugo.

Hlutarnir

Hlutur Á Cloudflare
web Worker með nodejs_compat
Postgres Ytri, náð í gegnum Hyperdrive: HYPERDRIVE fyrir forritshlutverkið, REPORT_HYPERDRIVE fyrir skýrsluhlutverkið á sama líkamlega gagnagrunni. Vefþrepið afritar hvorn tengistreng í DATABASE_URL og QUIRE_REPORT_DATABASE_URL þegar það ræsir
Skrár R2, í gegnum S3-forritaskil þess (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); FILES-bindingin tengir fötu
Bakgrunnsverk pg-boss yfir Hyperdrive þegar verkið verður að setja í biðröð með skrifum. Með QUIRE_QUEUE_DRIVER=cloudflare á fylgdarvinnsluvélinni fara léttu verkin (óraðaðar tilkynningar og vefkrókasendingar) í gegnum Cloudflare Queues í staðinn, svo Postgres er ekki kannað fyrir þau. Fylgdarvinnsluvélin keyrir bæði
Rauntími Rauntíma-Workerinn, apps/realtime-worker, með Durable Objects
worker, scheduler, collab, content, ClamAV, Gotenberg, ffmpeg Fylgdarhýsill fyrir gáma. Worker getur ekki keyrt þau
Rekjanleiki Workers-virðisaukning, kveikt í wrangler.jsonc

REPORT_HYPERDRIVE gefur skýrsluhlutverkið fyrir líkamlega gagnagrunninn sem HYPERDRIVE nefnir. Þetta markumhverfi þjónar ekki leigjendum sem eru festir við viðbótargagnagrunna, eins og lýst er hér að neðan.

Hvað þetta markumhverfi getur ekki

Hafnað við ræsingu, með öll vandamál talin upp í einu:

  • Enginn SMTP. Notaðu HTTP-veitu í QUIRE_EMAIL_PROVIDER_CONFIG.
  • Enginn staðbundinn diskur. QUIRE_STORAGE_DRIVER verður að nefna hlutageymslu.
  • Enginn rauntími eða skyndiminni í ferli. Workers deila engu minni milli beiðna, svo QUIRE_REALTIME_DRIVER=inprocess og QUIRE_CACHE_DRIVER=memory er hafnað.
  • Enginn ClamAV, Gotenberg eða ffmpeg í Workernum. CLAMAV_URL, GOTENBERG_URL og FFMPEG_PATH stillt á Workernum er hafnað; stilltu þau á fylgdarvinnsluvélinni í staðinn.
  • Engar stofnanir með sér gagnagrunn. Hyperdrive-bindingar Workers eru fastar við útgáfu, svo stofnun með eigin gagnagrunn fær skýra síðu um að þjónustan sé „ótiltæk hér“. Þjónaðu henni frá Compose eða Vercel.

Og eitt sem er ekki hafnað en verður að vita: forvinnsla og stigvaxandi endurmyndun virka ekki á Workers, hvað sem skjöl rammapsins segja. Hver leið er mynduð við hverja beiðni.

Á þessu markumhverfi skaltu halda viðskiptum stuttum og aldrei halda einu þvert á netkall: Hyperdrive endur stillir setulotur þegar tenging fer aftur í púllarann, svo leigjendasamhengið er stillt við hvert viðskipti.

Uppsetning

  1. Stofnaðu tilföngin:
    bun run --bun wrangler hyperdrive create quire-app --connection-string="postgres://quire_app:...@db.example.com:5432/quire"
    bun run --bun wrangler hyperdrive create quire-report --connection-string="postgres://quire_report:...@db.example.com:5432/quire"
    bun run --bun wrangler r2 bucket create quire-files
    bun run --bun wrangler queues create quire-jobs
    Settu Hyperdrive-auðkenninu tvö í apps/web/wrangler.jsonc.
  2. Stilltu leyndarmálin, eitt í einu með bun run --bun wrangler secret put <NAME> frá apps/web: QUIRE_SECRET_KEY, QUIRE_MASTER_KEY, QUIRE_EMAIL_PROVIDER_CONFIG, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, QUIRE_COLLAB_SIGNING_KEY, QUIRE_REALTIME_WORKER_SECRET. Einföld stillingar (QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET, QUIRE_COLLAB_URL) fara í vars.
  3. Byggðu og settu út frá apps/web:
    NITRO_PRESET=cloudflare-module bun run build
    bun run --bun wrangler deploy
  4. Settu út rauntíma-Workerinn, með QUIRE_REALTIME_WORKER_SECRET vefþrepsins og táknleyndarmál þess sem QUIRE_REALTIME_TOKEN_SECRET (vefþrepið undirritar rauntímatákn með eigin QUIRE_REALTIME_TOKEN_SECRET, eða með QUIRE_SECRET_KEY þegar það er óstillt, svo notaðu hvort það notar), og stilltu QUIRE_REALTIME_WORKER_URL á vefþrepinu á vistfang þess:
    cd apps/realtime-worker
    bun run --bun wrangler secret put QUIRE_REALTIME_WORKER_SECRET
    bun run --bun wrangler secret put QUIRE_REALTIME_TOKEN_SECRET
    bun run --bun wrangler deploy
  5. Fyrir létt verk á Cloudflare Queues skaltu stofna eina biðröð fyrir hverja létta biðröð og stilla þetta á fylgdarvinnsluvélinni (API-tákn með lestri og skrifum í Queues):
    bun run --bun wrangler queues create quire-events-notifications
    bun run --bun wrangler queues create quire-events-notifications-dead
    bun run --bun wrangler queues create quire-events-webhooks
    bun run --bun wrangler queues create quire-events-webhooks-dead
    QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_QUEUES_TOKEN og QUIRE_QUEUE_PREFIX ef ekki quire-.
  6. Keyrðu fylgdarhýsilinn eins og í Vercel-leiðbeiningunum, skrefi 3. Flutningar keyra þar, fyrir hverja Worker-útgáfu.

Hafnaðri uppsetningu sést í bun run --bun wrangler tail sem „The web tier did not start on cloudflare“, fylgt eftir með hverri stillingu til að breyta.

Yfirlit

Sláðu inn til að leita…

↑↓ fletta↵ veljaEsc loka