高可用
本文将指导你如何部署具备高可用性的 API7 Enterprise。我们将以构建一个最小可用的高可用性架构为例进行演示,包括数据面(Data Plane)的高可用、控制面(Control Plane)的高可用和etcd集群的高可用。
部署架构
用以下组件建立一个高可用架构(最小可用版)。

- 数据面(Data Plane)的高可用是必要的。当数据面上发生一些可预见的故障时,应该保证业务 API 不中断。我们强烈建议部署两个以上的数据面实例以防止单点故障。
- etcd 的高可用是必要的,因为 etcd 存储着重要的数据和配置。根据 etcd Raft 协议,最小的 etcd 集群需要至少三个节点。
- 控制面(Control Plane)的高可用是可选的。当控制面发生故障时,你将无法修改 API 网关的配置,但它不会影响已在运行的业务 API 请求。因此,如果需要控制成本且可接受风险,可以只部署一个控制面实例。
准备节点
我们通常需要至少七个节点(三个 etcd 节点+两个数据面节点+两个控制面节点)来完成高可用架构,但本文示例中我们只用了五个节点,通过将 etcd 集群和API7-Dashboard 部署在同一个节点上来减少节点总数。在生产实践中,你可以根据你的预算来选择是否混部以节约节点,或增加更多节点提供更好的保障。
对于每个节点,我们的最低配置要求如下。
| 主机名 | 部署组件 | 开放端口 | 节点规格 | 操作系统 | Docker版本 |
|---|---|---|---|---|---|
| api7-highavailability1 | etcd、API7-Dashboard | 9000、2379、2380 | 2C4G | Centos 7.6及以上 | 20.10.7及以上 |
| api7-highavailability2 | etcd、API7-Dashboard | 9000、2379、2380 | 2C4G | Centos 7.6及以上 | 20.10.7及以上 |
| api7-highavailability3 | etcd | 2379、2380 | 2C4G | Centos 7.6及以上 | 20.10.7及以上 |
| api7-highavailability4 | API7-Gateway | 80、443、9091 | 2C4G | Centos 7.6及以上 | 20.10.7及以上 |
| api7-highavailability5 | API7-Gateway | 80、443、9091 | 2C4G | Centos 7.6及以上 | 20.10.7及以上 |
关于操作系统和Docker版本选择
Docker 使用20.10.7及以上,已知它与 3.10.0-327(CentOS 7.2)及以下版本不兼容。建议使用 3.10.0-927(CentOS 7.6)或更高版本。可以执行以下命令检查当前内核版本号。
$ uname -a
Linux api7-highavailability1 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 x86_64 GNU/Linux
可以用以下命令升级内核版本:
yum update -y kernel
安全配置
在每个节点上配置 SELinux 和防火墙服务(firewalld 或 iptables),以允许对端口的访问。
开放端口
- API7-Gateway :
- 80: HTTP 访问。
- 443: HTTPs 访问。
- 9091: 连接 Prometheus 监控。
- API7-Dashboard:
- 9000: API7 Enterprise 控制台入口。
- etcd:
- 2379:对外提供数据和配置的端口。
- 2380:集群环境下用于 Peer 通讯的端口。