← Todos los guías de migración

Guía de migración de competidor

Migrar de HAProxy a Webship sin un corte ciego.

Mueva los frontends HTTP, backends, comprobaciones de estado, balanceo, tiempos de espera y manejo de certificados a Webship mientras se conserva una ruta rápida de reversión.

Se aplica a Webship 1.1.0haproxy.cfg

Define el límite de migración antes de cambiar el tráfico.

Comienza trasladando solo el comportamiento que Webship puede reproducir y validar. Deja la autenticación de aplicaciones, el descubrimiento de servicios, los scripts y las reglas de caché especializadas en el origen existente hasta que sus reemplazos pasen pruebas similares a producción.

Traduzca primero la ruta de producción más pequeña.

El fragmento de origen identifica el concepto de migración; el fragmento Webship muestra la forma de destino. Reemplace los dominios de ejemplo, direcciones, certificados, límites y rutas de salud con valores validados para su entorno.

Configuración representativa de 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 equivalente
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

Mapear conceptos, no sintaxis.

Las directivas técnicas no siempre coinciden uno a uno. Usa esta tabla para localizar el área de configuración equivalente de Webship, luego valida la configuración efectiva y el comportamiento en tiempo de ejecución.

Concepto o directiva actualObjetivo de configuración de 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

Use un corte reversible de cinco pasos.

Mantenga el antiguo listener listo hasta que Webship haya pasado los controles de corrección, capacidad, seguridad, observabilidad y reversión con tráfico representativo.

  1. 1

    Comportamiento observable del inventario

    Registre listeners, dominios, rutas, upstreams, certificados, reescrituras, autenticación, reglas de caché, sondeos de salud, límites e integraciones operativas.

  2. 2

    Traducir un límite

    Mover un host o ruta a TOML estrictamente. Conservar los módulos específicos del proveedor y la lógica de la aplicación detrás de Webship hasta que se prueben reemplazos separados.

  3. 3

    Validar sin conexión y localmente

    Ejecutar --check-config y --print-effective-config, inspeccionar el resultado redactado, comprobar la salud localmente y usar TLS sobre TCP y UDP cuando HTTP/3 esté habilitado.

  4. 4

    Tráfico real canario

    Envíe un pequeño fragmento de tráfico observable a Webship. Compare códigos de estado, encabezados, cuerpos, latencia, salud de upstream, comportamiento de la caché, registros y decisiones de seguridad.

  5. 5

    Promocionar con reversión lista

    Aumentar el tráfico en las etapas medidas. Mantener el objetivo previo saludable y con enrutamiento inmediato hasta que la ventana de observación acordada y las puertas de carga pasen.

Valide primero. Haga la reversión mediante el enrutamiento, no editando en vivo.

Valide el archivo del candidato, inspeccione la configuración efectiva redactada y examine el escuchador privado antes de cambiar el tráfico. Conserve el binario antiguo, la configuración, el escuchador y el objetivo DNS o del equilibrador de carga hasta que se cierre la ventana de observación.

/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