Home / AI & GenAI

AI & GenAIRunbookIntermediate

Runbook: model endpoint regional outage (Azure OpenAI, Bedrock, OCI GenAI)

A step-by-step runbook for when model calls fail in one region. Covers confirming the scope, switching the gateway to DR deployments, checking quota and quality in the DR region, user communication, and failing back.

Deepak Bhardwaj2 min read

Applies toApps using managed model endpoints through an AI gateway (APIM, LiteLLM, Kong) with deployments in two or more regions

Symptoms

  • A rise in 5xx errors, timeouts or 429s from one model backend.
  • Latency (time to first token) far above normal.
  • Provider status page or Service Health showing an incident in the region.

1. Confirm scope (5 minutes)

  • Which backends fail: one deployment, one model, one region, or everything?
  • Check the provider's status: Azure Service Health / Resource Health, the AWS Health Dashboard, the OCI status page.
  • Check it isn't you: expired credentials (401/403), quota exhausted by a runaway job (429 from your own traffic), a recent deployment or network change.
# quick probe through the gateway, bypassing caches
curl -s -o /dev/null -w "%{http_code} %{time_total}\n" -X POST "$GW/openai/deployments/chat-main/chat/completions?api-version=2024-10-21" \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"messages":[{"role":"user","content":"ping"}],"max_tokens":5}'

2. Shift traffic (if not already automatic)

If backend pools and circuit breakers are set up, traffic should already be moving. Check the per-backend request distribution. If not:

  • Remove or deprioritise the failing region's backends in the gateway (APIM backend pool priority, LiteLLM router config).
  • Bedrock: switch the model ID to a cross-region inference profile, or to the DR region client.
  • Self-hosted fallback: scale it up if it's part of the plan.

3. Check DR capacity

  • DR deployment quota (TPM) versus the current production load. Expect 429s in DR if it was sized only for spillover.
  • Throttle non-critical traffic: pause batch jobs, ingestion and evaluations; lower per-team limits in the gateway to protect user-facing apps.

4. Check quality

  • Same model and version in DR? If not, run a quick golden-set evaluation (10–20 queries).
  • Content filter policy the same in DR.

5. Communicate

  • Status update to users: "The assistant may be slower than usual." Mention if a backup model is in use.
  • Incident channel updates every 30 minutes.

6. Fail back

  • Provider reports the incident resolved, and probes are healthy for 30+ minutes.
  • Restore the original gateway priorities, gradually (a canary first).
  • Resume batch and ingestion jobs. Watch quota.

7. Post-incident review

  • Time to detect, time to shift traffic, and errors seen by users.
  • Was the DR quota enough? Were circuit breakers tuned right?
  • Update this runbook and the gateway configuration.

Tip

A synthetic probe every minute, per backend, through the gateway (with a tiny max_tokens) gives you a clear signal on which backend is failing, and costs almost nothing.