Skip to main content

Version: 3.2.16.3

High Availability Installation

This document describes how to configure API7 Gateway High Availability in the following aspects:

  • Control plane
    • API7 Dashboard
    • DP Manager
  • Data plane
    • API7 Gateway

Not covered:

  • PostgreSQL
  • Prometheus

Prerequisites

  1. Finish Prepare for high availability.
  2. Install PostgreSQL(Version 15) and Prometheus (optional, Version 2.48).

Control Plane

API7 Dashboard is the major component of the control plane, which is a Web GUI and processes the business logic. API7 Dashboard is a stateless service, and all the data information is stored in PostgreSQL.

To ensure high availability, you require a control plane cluster that contains multiple control plane nodes. Additionally, it is essential to deploy a load balancer in front of all the control plane nodes. If a node fails, the load balancer can remove it from the pool, ensuring that traffic is not sent to unavailable nodes.

For all control plane nodes, do the following:

  1. Copy control plane package to the host machine. You can get the proper package from preparing for high availability.
  2. Configure dashboard-config.yaml to modify the database address:
server:
listen:
host: "0.0.0.0"
port: 17080

database:
dsn: "postgres://$user:$password@$postgresql_address:$postgresql_port/api7ee"
  1. Start API7 Dashboard:
docker run -d -p 17080:17080 -v ./dashboard-config.yaml:/app/conf/config.yaml api7/api7-ee-3-integrated:v3.2.16.3
  1. Configure dp-manager-config.yaml to modify the database address:
server:
listen:
host: "0.0.0.0"
port: 17900

database:
dsn: "postgres://$user:$password@$postgresql_address:$postgresql_port/api7ee"
  1. Start DP Manager:
docker run -d -p 17900:17900 -v ./dp-manager-config.yaml:/usr/local/api7/conf/config.yaml api7/api7-ee-dp-manager:v3.2.16.3

Data Plane

API7 Gateway charges for accepting traffic from the client and forwarding it to upstreams, so a data plane node can also be called a gateway instance. The API7 Gateway is a stateless component, and all configuration information is stored in PostgreSQL. Therefore, you can deploy multiple nodes to improve the high availability of the data plane.

Add Gateway Groups

To ensure high availability, you require a data plane cluster that contains multiple data plane nodes. The data plane cluster can also be called a Gateway Group. Refer to Add gateway groups for instruction.

Health Check

Deploying a load balancer in front of data plane nodes and enabling health checks is crucial for maintaining high availability and preventing traffic routing to unhealthy nodes.

  1. Configure gateway_conf/config.yaml to add status block for listening interface:
apisix:
status:
ip: 0.0.0.0
port: 7085
  1. Set the load balancer to all the health check interface at regular intervals. Determine the appropriate frequency for health checks based on your specific requirements and the expected response time of your applications. A common practice is to set health checks to probe every 30 seconds.
curl "http://127.0.0.1:7085/status" -v

If the data plane is healthy, you should see the following 200 OK response:

*   Trying 127.0.0.1:7085...
* Connected to 127.0.0.1 (127.0.0.1) port 7085 (#0)
> GET /status HTTP/1.1
> Host: 127.0.0.1:7085
> User-Agent: curl/7.74.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Server: openresty
< Date: Thu, 17 Oct 2024 06:27:38 GMT
< Content-Type: text/plain; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
<
* Connection #0 to host 127.0.0.1 left intact

API7.ai Logo

API Management for Modern Architectures with Edge, API Gateway, Kubernetes, and Service Mesh.

Product

API7 Cloud

SOC2 Type IIISO 27001HIPAAGDPRRed Herring

Copyright © APISEVEN Ltd. 2019 – 2024. Apache, Apache APISIX, APISIX, and associated open source project names are trademarks of the

Apache Software Foundation