# Multiple Availability Zones Deployment of API7 Gateway

Deploying API7 Gateway across multiple availability zones (AZs) provides high availability and protects your API services against the failure of an entire AZ. This page details the multi-AZ deployment pattern and its configuration.

## Multi-AZ Architecture[​](#multi-az-architecture "Direct link to Multi-AZ Architecture")

In a multi-AZ deployment, the Control Plane and Data Plane components are distributed across different AZs within the same region.

* **Control Plane**: Typically deployed in a single primary AZ, but can be scaled to multiple AZs if your infrastructure supports it.
* **Data Plane**: Deployed in multiple AZs (e.g., AZ-a, AZ-b, AZ-c) to ensure continuous traffic handling if one AZ becomes unavailable.
* **Load Balancer**: A cross-AZ load balancer distributes incoming traffic to all healthy DP nodes across all AZs.

## Multi-AZ Deployment Pattern[​](#multi-az-deployment-pattern "Direct link to Multi-AZ Deployment Pattern")

A typical multi-AZ deployment involves the following components:

* **Region**: A specific geographic area (e.g., `us-east-1`).
* **Availability Zones**: Independent failure domains within the region (e.g., `us-east-1a`, `us-east-1b`).
* **Cross-AZ Networking**: Low-latency, high-bandwidth networking connects the CP and DP nodes across AZs.

### Failure Domain Isolation[​](#failure-domain-isolation "Direct link to Failure Domain Isolation")

By distributing DP nodes across multiple AZs, you isolate your failure domains. If an AZ experiences an outage (e.g., due to power failure or network issues), the load balancer will stop sending traffic to the DP nodes in that AZ and redistribute it to the healthy nodes in the remaining AZs.

## Configuration for Multi-AZ[​](#configuration-for-multi-az "Direct link to Configuration for Multi-AZ")

### Data Plane Nodes[​](#data-plane-nodes "Direct link to Data Plane Nodes")

Deploy the same Data Plane configuration to every node in every AZ. List one DP Manager endpoint per AZ in `deployment.etcd.host` so that each DP node can fail over to a Control Plane in another AZ if its local one becomes unreachable:

config.yaml

```
deployment:

  role: traditional

  role_traditional:

    config_provider: etcd

  etcd:

    host:

      - "https://dp-manager.az-a.internal:7943"

      - "https://dp-manager.az-b.internal:7943"

      - "https://dp-manager.az-c.internal:7943"

    prefix: /apisix

    timeout: 30
```

Each entry must point to a DP Manager TLS listener (default port `7943`). The DP iterates the list on startup and reconnects to the next entry whenever the current one becomes unhealthy. For the full set of supported fields, see the [Data Plane configuration reference](https://docs.api7.ai/api7-gateway/configure-and-manage/configure-data-plane.md).

### Load Balancer[​](#load-balancer "Direct link to Load Balancer")

Configure your load balancer to perform cross-AZ health checks and load balancing.

* **Health Checks**: Use the DP status API (port 7085, endpoints `/status` or `/status/ready`) for health monitoring.
* **Cross-AZ Load Balancing**: Enable cross-AZ load balancing to distribute traffic evenly across all AZs.

## Next Steps[​](#next-steps "Direct link to Next Steps")

* [Multi-Region Deployment](https://docs.api7.ai/api7-gateway/configure-and-manage/deployment-scenarios/multi-region-deployment.md)
* [Scaling Data Plane](https://docs.api7.ai/api7-gateway/configure-and-manage/scale-data-plane.md)
* [High Availability for Data Plane](https://docs.api7.ai/api7-gateway/configure-and-manage/high-availability-data-plane.md)
