# ALB Cross-Zone Load Balancing Cost

> Cross-zone load balancing on NLBs bills every gigabyte relayed between Availability Zones. ZopNight confirms cross_zone_enabled via DescribeLoadBalancerAttributes, but abstains from pricing savings today: Cost Explorer offers no per-load-balancer inter-AZ transfer figure, so no producer exists. After disabling, watch target health and p95 latency for 24 hours.

Source: https://zop.dev/integrations/aws/recommendations/alb-cross-zone-load-balancing-cost
Updated: 2026-08-19

---

## The cross-zone flag, and the missing cost signal

- Metadata cross_zone_enabled (bool; ELBv2 DescribeLoadBalancerAttributes → load_balancing.cross_zone.enabled) is the applicability gate, fail-closed. The prior cross_zone Tag read was dead (the LB discoverer never wrote it).
- Metadata inter_az_transfer_cost_usd (float, PRODUCER-GAP): the real billed inter-AZ data-transfer dollars attributable to this LB; the only defensible monetary basis.

## Why the rule abstains until inter-AZ dollars exist

when the producer lands, CurrentCostUSD = SavingsUSD = inter_az_transfer_cost_usd (the entire billed inter-AZ line item the disable-cross-zone lever targets, from CE intra-region DataTransfer-Regional-Bytes per LB), OptimizedCostUSD → 0, mirroring RC-178. The prior cost × 0.30 and the $0 "performance" advisory are both removed. PRODUCER-GAP: inter_az_transfer_cost_usd has no producer ([ProcessedBytes, as the load balancer publishes it](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html), is total LB throughput, not the inter-AZ portion; data_transfer.go now harvests the cross-AZ DataTransfer-Regional-Bytes axis, but only as its own account-grain signal, cross_az_transfer_cost_usd, consumed by RC-065, and CE still has no per-ELB resource granularity for it), so the rule abstains once cross-zone is confirmed enabled, until a real per-LB inter-AZ-transfer cost producer exists. (The GCP twin RC-123 has the identical anti-pattern, separate pass.)

## Turning cross-zone off without breaking AZ balance

1. Confirm targets are evenly distributed across AZs (uneven distribution still needs cross-zone)
2. NLB: Edit attributes → Cross-zone load balancing → Off (NLB [bills per-GB for cross-zone traffic](https://aws.amazon.com/elasticloadbalancing/pricing/))
3. ALB: cross-zone is on-by-default; review downstream cross-AZ EC2 data-transfer cost
4. Monitor target health distribution and p95 latency for 24h after the change
