Panduan migrasi pesaing
Migrasi dari NGINX ke Webship tanpa pemotongan secara buta.
Peta blok pelayan, lokasi, huluan, pemeriksaan kesihatan, had masa, dan fail TLS ke Webship TOML yang ketat dengan pemotongan pertama tepi.
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.
upstream app {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server {
listen 443 ssl http2;
server_name app.example.com;
location / { proxy_pass http://app; }
}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 = 30000Peta 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 semasa | Sasaran konfigurasi Webship |
|---|---|
listen | listen + [reverse_proxy.protocols] |
server_name + location | [[reverse_proxy.routes]] |
proxy_pass / upstream | [[reverse_proxy.upstreams]] |
proxy_*_timeout | [[reverse_proxy.policies]] |
ssl_certificate + ssl_certificate_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
Perilaku pemerhatian inventori
Rekod pendengar, domain, laluan, upstream, sijil, penulisan semula, pengesahan, peraturan cache, probe kesihatan, had, dan integrasi operasi.
- 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
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
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
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