Verificaciones de Salud
Zeabur realiza automáticamente verificaciones de salud en cada servicio para asegurar que los despliegues estén listos antes de recibir tráfico. Esto permite despliegues sin tiempo de inactividad — si un nuevo despliegue falla su verificación de salud, la versión anterior continúa sirviendo solicitudes.
Cómo Funcionan las Verificaciones de Salud
Cuando despliegas un servicio, Zeabur sondea el puerto de escucha del servicio para verificar que esté aceptando conexiones. Un despliegue solo se considera listo una vez que la verificación de salud pasa. Hasta entonces, el despliegue anterior permanece activo y continúa manejando el tráfico.
Esto significa:
- Verificación de salud exitosa — El tráfico se dirige al nuevo despliegue, y el despliegue anterior se termina.
- Verificación de salud fallida — El nuevo despliegue se marca como fallido, y el despliegue anterior permanece activo. No ocurre tiempo de inactividad.
Para servicios con volúmenes adjuntos, Zeabur usa una estrategia de despliegue Recrear en lugar de actualizaciones continuas. Esto significa que el despliegue anterior se detiene antes de que comience el nuevo, resultando en un breve período de inactividad durante el despliegue. Esto es necesario para evitar conflictos de datos por dos instancias accediendo al mismo volumen simultáneamente.
Comportamiento Predeterminado
Por defecto, Zeabur verifica si el puerto expuesto de tu servicio está aceptando conexiones TCP. Para la mayoría de las aplicaciones web, esto es suficiente — una vez que tu servidor HTTP comienza a escuchar, la verificación de salud pasa.
La configuración predeterminada es:
| Parámetro | Valor Predeterminado |
|---|---|
| Tipo de verificación | Sonda de puerto TCP |
| Intervalo | 10 segundos |
| Tiempo de espera | 5 segundos |
| Umbral de fallo | 3 fallos consecutivos |
Ruta Personalizada de Verificación de Salud
Para una verificación de salud más precisa, puedes configurar una ruta HTTP personalizada de verificación de salud. Esto es útil cuando tu aplicación necesita tiempo adicional de inicio (por ejemplo, para calentar cachés o establecer conexiones de base de datos) antes de estar realmente lista para servir tráfico.
Para configurar una ruta personalizada de verificación de salud:
- Abre tu servicio en el panel de Zeabur.
- Ve a Configuración.
- En la sección Verificación de Salud, ingresa tu ruta personalizada (ej.,
/healthzo/api/health).
Tu aplicación debe devolver un código de estado HTTP 2xx en esa ruta cuando esté lista para recibir tráfico.
// Ejemplo: endpoint de verificación de salud en Express.js
app.get('/healthz', (req, res) => {
// Realiza cualquier verificación de preparación aquí
res.status(200).json({ status: 'ok' })
})Solución de Problemas
Despliegue atascado en estado “Desplegando”
Si tu despliegue nunca pasa la verificación de salud, verifica que:
- Tu aplicación esté escuchando en el puerto correcto. Zeabur establece la variable de entorno
PORT— asegúrate de que tu aplicación se vincule a0.0.0.0:$PORT. - Tu aplicación se inicie dentro del período de tiempo de espera. Si la inicialización toma mucho tiempo, considera agregar un endpoint de salud ligero que responda inmediatamente.
- Si usas una ruta personalizada de verificación de salud, asegúrate de que el endpoint devuelva una respuesta HTTP
2xx.
Servicios con tiempos de inicio largos
Algunas aplicaciones (como servicios Java o aplicaciones que cargan modelos ML grandes) pueden necesitar tiempo adicional para inicializarse. En estos casos, configura un endpoint personalizado de verificación de salud que devuelva una respuesta exitosa solo después de que la aplicación esté completamente lista, en lugar de depender de la sonda TCP predeterminada.