Start with describe
Is anything actually reaching it?
- Generated hostname works, custom one does not → a hostname problem, below.
- Neither works → the load balancer or its origin, further below.
No traffic in the logs is not a diagnosis. A load balancer nobody has called looks exactly like one that is broken. If nothing is arriving, send a request yourself and look again.
A hostname that does not work
describe shows four steps per custom hostname. Work on the first one that is not done and ignore the rest — each gates the next.
Two states that look like failures and are not:
- Datum does not manage the domain’s DNS. Reported as such, set deliberately. It means “create a CNAME yourself”, not “something went wrong”. Nothing is pending.
- The generated hostname reports nothing about its DNS record. No status is published for it at all, so its absence tells you nothing either way.
An origin that cannot be reached
If the generated hostname does not serve either, the problem is between the load balancer and your origin.
The response flags in
-o wide are the most useful field when nothing else explains it — they say whether the connection to your origin failed, timed out, or found nothing healthy.
For a network service origin, check the service exists and declares the port name you used. --port takes a name like http, never a number, and Datum will not invent a service that does not exist.
A change that was accepted and never took effect
This one is easy to miss. If a load balancer reports as waiting to be published, read the message rather than waiting. A message saying it cannot be published means Datum has decided it cannot use these settings at all — the load balancer keeps serving whatever it published last, and waiting will never clear it. To read the message, rundatumctl alb describe my-app. It names the setting that Datum can’t use. Fix that setting, and Datum publishes the change.
Nothing reports a fault and it still does not work
In rough order of likelihood:- Nothing points at it. No CNAME, no custom hostname attached. Common, and invisible in status.
- It was created moments ago. The edge is still converging. Retry the request rather than reading status again.
- The origin is still starting. A new Compute Instance can report
Availablea minute or two before the app inside it listens. The load balancer returns503until it does. - The origin is refusing connections. The logs show it; status does not.
- Traffic protection is blocking real requests.
Enforceat a high sensitivity will do this.
It works from one place and not another
Each client reaches the Datum location nearest to it, and Envoy in that location serves the request. If a load balancer behaves differently for users in different regions:- Find which location you reach. Visit edge.datum.net from the affected network. It shows the Datum location your traffic arrives at.
- Check whether a change is still rolling out. Each location applies a change on its own schedule. If you changed the load balancer moments ago, wait briefly and try again.
- For a Compute origin, check where your Instances run. Envoy prefers an Instance in its own location. If that location has no healthy Instance, Envoy sends the request to the nearest location that has one, which adds latency for users near the empty location. Run
datumctl compute workloads describe WORKLOAD_NAMEto see the health of the Instances in each location. See Placement and scaling. - For a public origin, test it from that region. Envoy connects to a public origin over the internet from the location that received the request. An origin that blocks or rate-limits some regions or IP ranges can fail from one location and work from another.