← Semua panduan pemindahan

Panduan migrasi pesaing

Migrasi dari HAProxy ke Webship tanpa pemotongan secara buta.

Pindahkan frontend HTTP, backend, pemeriksaan kesihatan, pengimbangan, had masa, dan pengendalian sijil ke dalam Webship sambil mengekalkan laluan rollback yang pantas.

Berlaku kepada Webship 1.1.0haproxy.cfg

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 HAProxy
frontend https
  bind :443 ssl crt /etc/haproxy/app.pem
  default_backend app
backend app
  balance roundrobin
  server app1 127.0.0.1:8080 check
  server app2 127.0.0.1:8081 check
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
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

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