Pular para o conteúdo principal

API de Auto-Discovery

A API permite que backends se registrem e desregistrem automaticamente.

Endpoints

MétodoEndpointDescrição
GET/healthHealth check + versão + contagem de backends
POST/api/v1/registerRegistrar um novo backend
POST/api/v1/heartbeat/:idAtualizar heartbeat do backend
GET/api/v1/backendsListar todos os backends registrados
GET/api/v1/backends/:idObter detalhes de um backend específico
DELETE/api/v1/backends/:idDesregistrar um backend

Configuração

VariávelPadrãoDescrição
EDGEPROXY_API_ENABLEDfalseHabilitar API Auto-Discovery
EDGEPROXY_API_LISTEN_ADDR0.0.0.0:8081Endereço da API
EDGEPROXY_HEARTBEAT_TTL_SECS60TTL do heartbeat do backend

Exemplo de Registro

# Habilitar API
export EDGEPROXY_API_ENABLED=true
export EDGEPROXY_API_LISTEN_ADDR=0.0.0.0:8081
export EDGEPROXY_HEARTBEAT_TTL_SECS=60

# Registrar um backend
curl -X POST http://localhost:8081/api/v1/register \
-H "Content-Type: application/json" \
-d '{
"id": "backend-eu-1",
"app": "myapp",
"region": "eu",
"ip": "10.50.1.1",
"port": 8080,
"weight": 2,
"soft_limit": 100,
"hard_limit": 150
}'

# Enviar heartbeat (keep alive)
curl -X POST http://localhost:8081/api/v1/heartbeat/backend-eu-1

# Listar todos os backends
curl http://localhost:8081/api/v1/backends

Payload de Registro

{
"id": "backend-eu-1",
"app": "myapp",
"region": "eu",
"country": "DE",
"ip": "10.50.1.1",
"port": 8080,
"weight": 2,
"soft_limit": 100,
"hard_limit": 150
}
CampoObrigatórioPadrãoDescrição
idSim-Identificador único do backend
appSim-Nome da aplicação
regionSim-Código da região (sa, us, eu, ap)
countryNãoderivadoCódigo do país (ISO 3166-1)
ipSim-Endereço IP do backend
portSim-Porta do backend
weightNão2Peso no load balancing
soft_limitNão100Limite soft de conexões
hard_limitNão150Limite hard de conexões

Resposta do Health Check

curl http://localhost:8081/health
{
"status": "ok",
"version": "0.2.0",
"backends": 5,
"uptime_secs": 3600
}

Benefícios

  • Zero configuração: Backends apenas iniciam e se registram
  • Escala automática: Novas instâncias aparecem automaticamente
  • Graceful shutdown: Desregistro limpo
  • Health baseado em TTL: Não saudável = expirado = desregistrado