高可用安装
本文档介绍了如何从以下几个方面配置 API7 网关的高可用性:
- 控制面(Control plane)
- API7 控制板(API7 Dashboard)
- DP Manager
- 数据面(Data plane)
- API7 网关(API7 Gateway)
未涵盖:
- PostgreSQL
- Prometheus
前置条件
- 完成准备高可用环境。
- 安装 PostgreSQL(版本 15)和 Prometheus(可选,版本 2.48)。
控制面
API7 控制板是控制面的主要组件,它是一个 Web GUI,负责处理业务逻辑。API7 控制板是一个无状态服务,所有数据信息都存储在 PostgreSQL 中。
为了确保高可用性,你需要一个包含多个控制面节点的控制面集群。此外,在所有控制面节点前部署负载均衡器(load balancer)至关重要。如果某个节点发生故障,负载均衡器可以将其从池中移除,确保不会将流量发送到不可用的节点。
对于所有控制面节点,请执行以下操作:
- 将控制面安装包复制到主机。你可以从准备高可用环境中获取合适的安装包。
- 配置
dashboard-config.yaml以修改数据库地址:
server:
listen:
host: "0.0.0.0"
port: 17080
database:
dsn: "postgres://$user:$password@$postgresql_address:$postgresql_port/api7ee"
- 启动 API7 控制板:
docker run -d -p 17080:17080 -v ./dashboard-config.yaml:/app/conf/config.yaml api7/api7-ee-3-integrated:v3.2.16.3
- 配置
dp-manager-config.yaml以修改数据库地址:
server:
listen:
host: "0.0.0.0"
port: 17900
database:
dsn: "postgres://$user:$password@$postgresql_address:$postgresql_port/api7ee"
- 启动 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
数据面
API7 网关负责接收来自客户端的流量并将其转发到上游 ,因此一个数据面节点也可以称为一个网关实例。API7 网关是一个无状态组件,所有配置信息都存储在 PostgreSQL 中。因此,你可以部署多个节点来提高数据面的高可用性。
添加网关组
为了确保高可用性,你需要一个包含多个数据面节点的数据面集群。数据面集群也可以称为网关组。请参考添加网关组获取操作说明。
健康检查
在数据面节点前部署负载均衡器并启用健康检查对于保持高可用性和确保流量不会路由到不健康的节点至关重要。
- 配置
gateway_conf/config.yaml为监听接口添加status块:
apisix:
status:
ip: 0.0.0.0
port: 7085
- 设置负载均衡器定期调用健康检查接口。根据你的具体需求和应用程序的预期响应时间确定适当的健康检查频率。常见的做法是将健康检查设置为每 30 秒探测一次。
curl "http://127.0.0.1:7085/status" -v
如果数据面健康,你应该看到以下 200 OK 响应:
* 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