2.5 KiB
2.5 KiB
Service Discovery — Env-Based Approach
Problem with internal.zlh DNS
Service-to-service calls in the API and agent currently use internal.zlh FQDNs
(e.g. zpack-velocity.internal.zlh:8081). This introduces:
- DNS resolution overhead on every call
- Silent failure if Technitium is down or slow
- Hard-to-diagnose timing issues during provisioning
- An extra dependency in the critical path for container creation
The provisioning + DB consistency issues may be partly caused by DNS resolution delays or failures during rapid create/delete cycles.
Recommended Approach — Env File
Replace internal.zlh FQDNs in service-to-service calls with env vars backed by IPs.
Each VM reads from its own .env or services.env file.
Example services.env
ZPACK_API_URL=http://10.60.0.18:4000
ZLH_ARTIFACTS_URL=http://10.60.0.17
ZPACK_VELOCITY_URL=http://10.70.0.10:8081
ZLH_PBS_URL=http://10.60.0.24
ZLH_MONITOR_URL=http://10.60.0.25
ZLH_DNS_URL=http://10.60.0.14
Benefits
- Zero DNS resolution — direct IP, always predictable
- No dependency on Technitium for service calls
- If IPs ever change, update one env file per VM — no DNS record changes needed
- Easier to debug — no DNS layer to troubleshoot
- Faster provisioning — no resolution delay in the critical path
Scope
Services that need to change:
| Service | Current | Change to |
|---|---|---|
| zpack-api | zpack-velocity.internal.zlh:8081 |
ZPACK_VELOCITY_URL env var |
| zpack-api | zlh-artifacts.internal.zlh |
ZLH_ARTIFACTS_URL env var |
| zpack-portal | zpack-api.internal.zlh |
ZPACK_API_URL env var (server-side only) |
| zlh-agent | artifact server FQDN | ZLH_ARTIFACTS_URL env var |
What internal.zlh is still useful for
- Human navigation: SSH, browser access to admin tools, Proxmox
- Non-critical paths where DNS resolution timing doesn't matter
- Documentation and reference
internal.zlh should NOT be used in:
- Provisioning hot path
- Agent → artifact server calls
- API → Velocity calls
- Any call that happens during container create/delete
Current IPs (Detroit host)
See INFRASTRUCTURE.md for full IP table. Key service IPs:
| Service | IP |
|---|---|
| zpack-api | 10.60.0.18:4000 |
| zpack-portal | 10.60.0.19 |
| zlh-artifacts | 10.60.0.17 |
| zpack-velocity | 10.70.0.10:8081 |
| zlh-dns (Technitium) | 10.60.0.14 |
| zlh-proxy (Caddy) | 10.60.0.16 |
| zpack-proxy (Traefik) | 10.70.0.11 |
| zlh-monitor | 10.60.0.25 |
| zlh-back (PBS) | 10.60.0.24 |