← Lahat ng gabay sa paglilipat

Gabay sa paglilipat ng kakumpitensya

Ilipat mula sa OpenResty patungo sa Webship nang walang biglaang cutover.

Ilipat ang karaniwang pag-uugali ng NGINX edge sa Webship habang hinihiwalay ang Lua application logic para sa isang malinaw na desisyon kung panatilihin o isusulat muli.

Nalalapat sa Webship 1.1.0nginx.conf + Lua

Tukuyin ang hangganan ng migrasyon bago baguhin ang trapiko.

Magsimula sa paglilipat lamang ng pag-uugali na kayang ulitin at beripikahin ng Webship. Iwanan ang authentication ng aplikasyon, service discovery, scripts, at espesyal na mga patakaran ng cache sa kasalukuyang origin hanggang sa maipasa ng kanilang kapalit ang mga pagsusulit na katulad ng production.

Isalin muna ang pinakamaliit na path ng produksyon.

Tinutukoy ng source fragment ang konsepto ng migration; ipinapakita ng Webship fragment ang target shape. Palitan ang example domains, addresses, certificates, limits, at health paths ng mga halagang napatunayan para sa iyong kapaligiran.

Kinatawan na OpenResty na pagsasaayos
server {
  listen 443 ssl;
  server_name app.example.com;
  location / {
    access_by_lua_file /etc/openresty/auth.lua;
    proxy_pass http://127.0.0.1:8080;
  }
}
Katumbas na Webship TOML
listen = "0.0.0.0:443"
workers = 4

[reverse_proxy]
enabled = true
connect_timeout_ms = 2000
max_retries = 0

[reverse_proxy.protocols]
h1 = true
h2 = true
h3 = true

[reverse_proxy.tls]
cert = "/etc/letsencrypt/live/app.example.com/fullchain.pem"
key = "/etc/letsencrypt/live/app.example.com/privkey.pem"

[[reverse_proxy.routes]]
domain = "app.example.com"
path_prefix = "/"
upstreams = ["127.0.0.1:8080", "127.0.0.1:8081"]
load_balancing = "weighted-peak-ewma"

[[reverse_proxy.upstreams]]
address = "127.0.0.1:8080"
protocol = "http1"
health_check_path = "/health"
health_check_interval_ms = 5000
health_check_timeout_ms = 1000

[[reverse_proxy.upstreams]]
address = "127.0.0.1:8081"
protocol = "http1"
health_check_path = "/health"
health_check_interval_ms = 5000
health_check_timeout_ms = 1000

[[reverse_proxy.policies]]
name = "default"
hosts = []
path_prefixes = ["/"]
methods = []
max_body_bytes = 1048576
total_timeout_ms = 30000

Ima-map ang mga konsepto, hindi ang sintaks.

Hindi palaging tumutugma ang mga teknikal na direktiba nang isa-sa-isa. Gamitin ang talahanayan na ito upang hanapin ang katumbas na Webship na lugar ng konfigurasyon, pagkatapos ay i-validate ang epektibong konfigurasyon at pag-uugali sa runtime.

Kasalukuyang konsepto o direktibaTarget na konfigurasyon ng Webship
listener / frontendlisten + [reverse_proxy.protocols]
host + path matcher[[reverse_proxy.routes]]
backend / cluster / service[[reverse_proxy.upstreams]]
health probe[[reverse_proxy.upstreams]].health_check_*
request limits and timeouts[[reverse_proxy.policies]]
certificate and private key[reverse_proxy.tls] / [[sites]] cert + key

Gumamit ng reversible na limang-hakbang na cutover.

Panatilihing handa ang lumang tagapakinig hanggang sa makapasa si Webship sa mga gate ng correctness, kapasidad, seguridad, obserbabilidad, at rollback sa kinatawang trapiko.

  1. 1

    Nakikitang asal sa imbentaryo

    Irekord ang mga listener, domain, ruta, upstreams, sertipiko, rewrite, pagpapatunay, mga patakaran sa cache, health probe, limitasyon, at mga operasyonal na integrasyon.

  2. 2

    Isalin ang isang hangganan

    Ilipat ang isang host o ruta sa mahigpit na TOML. Panatilihin ang mga module at lohika ng aplikasyon na tukoy sa vendor sa likod ng Webship hanggang sa mapatunayan ang hiwalay na kapalit.

  3. 3

    I-validate offline at lokal

    Patakbuhin ang --check-config at --print-effective-config, suriin ang na-redact na resulta, subukin ang kalusugan nang lokal, at gamitin ang TLS sa parehong TCP at UDP kapag naka-enable ang HTTP/3.

  4. 4

    Tunay na trapiko ng Canary

    Magpadala ng maliit, nakikitang bahagi ng trapiko sa Webship. Ihambing ang mga status code, header, katawan, latency, kalusugan ng upstream, gawi ng cache, mga log, at mga desisyon sa seguridad.

  5. 5

    Isulong na may handang rollback

    Dagdagan ang trapiko sa mga nasusukat na yugto. Panatilihing malusog at agad na maipa-ruta ang nakaraang target hanggang sa makalusot sa napagkasunduang bintana ng obserbasyon at mga load gate.

Suriin muna. Mag-roll back sa pamamagitan ng routing, hindi sa pag-edit ng live.

Suriin ang kandidato na file, inspeksyunin ang na-redact na epektibong configuration, at imbestigahan ang pribadong listener bago baguhin ang trapiko. Panatilihin ang lumang binary, configuration, listener, at DNS o target ng load-balancer hanggang sa magsara ang observation window.

/usr/local/bin/webship --check-config --config /etc/webship/production.toml
/usr/local/bin/webship --print-effective-config --config /etc/webship/production.toml
curl --http3-only --insecure https://127.0.0.1:443/health