Panduan migrasi pesaing
Migrasi dari Apache HTTP Server ke Webship tanpa pemotongan secara buta.
Terjemahkan VirtualHost, ProxyPass, TLS, timeout, dan tingkah laku upstream ke dalam Webship TOML yang ketat, kemudian bersihkan pendengar tepi Apache secara terkawal.
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.
<VirtualHost *:443>
ServerName app.example.com
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>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 + VirtualHost | listen + [reverse_proxy.protocols] |
ServerName + ProxyPass path | [[reverse_proxy.routes]] |
ProxyPass target | [[reverse_proxy.upstreams]] |
ProxyPass timeout | [[reverse_proxy.policies]] |
SSLCertificateFile + SSLCertificateKeyFile | [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