← Semua panduan pemindahan

Panduan migrasi pesaing

Migrasi dari Varnish Cache ke Webship tanpa pemotongan secara buta.

Pindahkan penghalaan backend standard dan polisi cache terhad ke dalam Webship sambil menganggap tingkah laku VCL tersuai sebagai reka bentuk semula yang diukur, bukan sebagai penukaran cari-dan-ganti.

Berlaku kepada Webship 1.1.0VCL

Tentukan sempadan migrasi sebelum menukar trafik.

Mula dengan memindahkan hanya tingkah laku Webship yang boleh dihasilkan semula dan disahkan. Tinggalkan pengesahan aplikasi, penemuan perkhidmatan, skrip, dan peraturan cache khas pada asal yang sedia ada sehingga penggantinya lulus ujian yang serupa dengan pengeluaran.

Terjemahkan laluan pengeluaran terkecil terlebih dahulu.

Fragmen sumber mengenal pasti konsep migrasi; fragmen Webship menunjukkan bentuk sasaran. Gantikan domain contoh, alamat, sijil, had, dan laluan kesihatan dengan nilai yang disahkan untuk persekitaran anda.

Konfigurasi wakil Varnish Cache
vcl 4.1;
backend default {
  .host = "127.0.0.1";
  .port = "8080";
}
sub vcl_recv {
  if (req.http.host == "app.example.com") { return (hash); }
}
Webship TOML setara
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

Peta konsep, bukan sintaks.

Arahan teknikal tidak selalu sepadan satu-ke-satu. Gunakan jadual ini untuk mencari kawasan konfigurasi Webship yang setara, kemudian sahkan konfigurasi berkesan dan tingkah laku semasa runtime.

Konsep atau arahan semasaSasaran konfigurasi Webship
backend[[reverse_proxy.upstreams]]
vcl_recv host + URL logic[[reverse_proxy.routes]]
probe[[reverse_proxy.upstreams]].health_check_*
TTL and cache policy[reverse_proxy.cache]
request handling limits[[reverse_proxy.policies]]

Gunakan pemindahan lima langkah yang boleh diterbalikkan.

Pastikan pendengar lama sedia sehingga Webship telah melepasi pintu kebetulan, kapasiti, keselamatan, kebolehamatan, dan pemulangan pada trafik perwakilan.

  1. 1

    Perilaku pemerhatian inventori

    Rekod pendengar, domain, laluan, upstream, sijil, penulisan semula, pengesahan, peraturan cache, probe kesihatan, had, dan integrasi operasi.

  2. 2

    Terjemahkan satu sempadan

    Pindahkan satu hos atau laluan ke dalam TOML yang ketat. Kekalkan modul khusus vendor dan logik aplikasi di belakang Webship sehingga penggantian yang berasingan terbukti.

  3. 3

    Sahkan secara luar talian dan setempat

    Jalankan --check-config dan --print-effective-config, periksa keputusan yang telah disunting, uji kesihatan secara tempatan, dan gunakan TLS melalui kedua-dua TCP dan UDP apabila HTTP/3 diaktifkan.

  4. 4

    Trafik sebenar Canary

    Hantar sebahagian kecil trafik yang dapat diperhatikan ke Webship. Bandingkan kod status, header, badan, kelewatan, kesihatan upstream, kelakuan cache, log, dan keputusan keselamatan.

  5. 5

    Promosikan dengan siap untuk rollback

    Tingkatkan trafik dalam peringkat yang diukur. Kekalkan sasaran sebelumnya dalam keadaan baik dan segera boleh dialihkan sehingga tetingkap pemerhatian dan pintu beban yang dipersetujui tamat.

Sahkan dahulu. Kembali semula melalui laluan, bukan dengan menyunting secara langsung.

Sahkan fail calon, periksa konfigurasi berkesan yang telah disunting, dan selidiki pendengar peribadi sebelum menukar trafik. Kekalkan binari lama, konfigurasi, pendengar, serta sasaran DNS atau pengimbang beban sehingga tingkap pemerhatian ditutup.

/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