← Semua panduan migrasi

Panduan migrasi pesaing

Migrasikan dari OpenResty ke Webship tanpa cutover buta.

Pindahkan perilaku standar tepi NGINX ke dalam Webship sambil mengisolasi logika aplikasi Lua untuk keputusan eksplisit mempertahankan atau menulis ulang.

Berlaku untuk Webship 1.1.0nginx.conf + Lua

Tentukan batas migrasi sebelum mengubah lalu lintas.

Mulailah dengan memindahkan hanya perilaku yang dapat direproduksi dan divalidasi Webship. Biarkan autentikasi aplikasi, penemuan layanan, skrip, dan aturan cache khusus tetap di asal yang ada sampai penggantiannya lulus pengujian mirip produksi.

Terjemahkan jalur produksi terkecil terlebih dahulu.

Fragmen sumber mengidentifikasi konsep migrasi; fragmen Webship menunjukkan bentuk target. Ganti domain contoh, alamat, sertifikat, batas, dan path kesehatan dengan nilai yang telah divalidasi untuk lingkungan Anda.

Konfigurasi perwakilan OpenResty
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;
  }
}
Webship TOML yang 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.

Petunjuk teknis tidak selalu cocok satu per satu. Gunakan tabel ini untuk menemukan area konfigurasi Webship yang setara, lalu validasi konfigurasi efektif dan perilaku runtime.

Konsep atau arahan saat iniTarget 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 cutover lima langkah yang dapat dibalik.

Pertahankan pendengar lama siap sampai Webship telah melewati gerbang korektansi, kapasitas, keamanan, observabilitas, dan pemulihan pada lalu lintas representatif.

  1. 1

    Perilaku observasi inventaris

    Catat listener, domain, rute, upstream, sertifikat, rewrite, autentikasi, aturan cache, probe kesehatan, batasan, dan integrasi operasional.

  2. 2

    Terjemahkan satu batas

    Pindahkan satu host atau rute ke TOML yang ketat. Pertahankan modul spesifik vendor dan logika aplikasi di belakang Webship hingga pengganti terpisah terbukti.

  3. 3

    Validasi secara offline dan lokal

    Jalankan --check-config dan --print-effective-config, periksa hasil yang disunting, periksa kesehatan secara lokal, dan jalankan TLS melalui TCP dan UDP ketika HTTP/3 diaktifkan.

  4. 4

    Lalu lintas nyata canary

    Kirim irisan lalu lintas kecil yang dapat diamati ke Webship. Bandingkan kode status, header, isi, latensi, kesehatan upstream, perilaku cache, log, dan keputusan keamanan.

  5. 5

    Promosikan dengan rollback siap

    Tingkatkan lalu lintas pada tahap yang diukur. Pertahankan target sebelumnya dalam kondisi sehat dan segera dapat dirutekan hingga jendela observasi yang disepakati dan pintu beban terpenuhi.

Validasi terlebih dahulu. Kembalikan dengan routing, bukan dengan mengedit langsung.

Validasi file kandidat, periksa konfigurasi efektif yang disunting, dan uji pendengar pribadi sebelum mengubah lalu lintas. Pertahankan file biner lama, konfigurasi, pendengar, serta target DNS atau load-balancer sampai jendela observasi 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