内容提要
APISIX 是基于 OpenResty 的高性能 API 网关,支持负载均衡、熔断等功能。本文介绍如何用 Docker 启动 etcd、Dashboard、Prometheus 等服务,并通过 Admin API 以 RESTful 方式管理路由和上游,包括创建、查询、删除路由,配置 limit-count 流控插件,也可使用 Dashboard 图形化管理。
延伸解读
Docker Compose 一键启动的七个服务
文章通过 apisix-docker 仓库的 example 目录,用 docker-compose 一次性启动了七个容器,包括 etcd、apisix、apisix-dashboard、prometheus、grafana 以及两个测试服务 web1 和 web2。这种编排方式省去了手动安装和配置各组件的步骤,适合快速搭建本地测试环境。读者可以借此理解 APISIX 运行所依赖的核心组件及其角色。
Admin API 的 RESTful 设计与管理方式
APISIX 的 Admin API 采用 RESTful 风格,路由资源的地址为 /apisix/admin/routes/{id},支持 GET、PUT、POST、DELETE 等方法。文章演示了通过 curl 命令携带 X-API-KEY 完成路由的创建、查询和删除。这种设计让管理操作可以直接通过 HTTP 请求完成,便于脚本化和自动化,同时也要求调用方妥善保管 API Key。
上游与插件配置的复用思路
文章展示了两种复用机制:一是将服务定义为独立的上游(Upstream),路由通过 upstream_id 引用;二是将插件配置定义为 plugin_config,路由通过 plugin_config_id 引用。这样多个路由可以共享同一份上游或插件设置,减少重复配置。对于需要统一流控或认证策略的场景,这种抽象能降低维护成本。
limit-count 流控插件的实际效果
文章以 limit-count 插件为例,配置为每个远程地址每 10 秒最多请求两次,超出后返回 503。测试中连续请求两次后第三次即被拒绝,等待一段时间后恢复。这直观展示了 APISIX 的流控能力,也提醒读者注意 rejected_code 和 key 等参数会影响限流行为,实际使用时应根据业务需求调整阈值和统计维度。
Q&A
APISIX 是什么?它有哪些主要功能?
APISIX 是一款基于 OpenResty 的动态、实时、高性能 API 网关,提供了负载均衡、服务熔断等丰富的功能。
如何快速启动 APISIX 及其相关服务?
可以通过 apisix-docker 仓库提供的 docker-compose 配置快速启动。具体步骤:克隆仓库 git clone git@github.com:apache/apisix-docker.git,进入 example 目录,执行 docker-compose up。这会启动 7 个容器:etcd(配置中心)、grafana(展示 Prometheus 指标)、apisix-dashboard(管理控制台)、web1 和 web2(测试服务)、prometheus(采集 APISIX 指标)以及 APISIX 本体。
APISIX 的 Admin API 如何管理路由?
APISIX 的 Admin API 采用 RESTful 风格,路由资源地址为 /apisix/admin/routes/{id}。操作包括:GET /apisix/admin/routes 获取路由列表,GET /apisix/admin/routes/{id} 获取指定路由,PUT /apisix/admin/routes/{id} 根据指定 id 创建路由,POST /apisix/admin/routes 创建路由(id 自动生成),DELETE /apisix/admin/routes/{id} 删除指定路由。请求时需在 Header 中携带 X-API-KEY。
如何在 APISIX 中配置 limit-count 流控插件?
可以在创建或更新路由时,在 plugins 字段中添加 limit-count 配置。例如:"plugins": { "limit-count": { "count": 2, "time_window": 10, "rejected_code": 503, "key": "remote_addr" } }。这表示每个远程地址每 10 秒最多请求 2 次,超出则返回 503 错误。也可以先创建 plugin_configs 资源,再在路由中通过 plugin_config_id 引用。
APISIX 中的上游(Upstream)是什么?如何创建和使用?
上游(Upstream)用于定义后端服务资源,方便在路由中引用。可以通过 Admin API 创建上游,例如:PUT /apisix/admin/upstreams/1,请求体包含 "type": "roundrobin", "nodes": { "web1:80": 1 }。创建后,在路由中通过 upstream_id 字段引用该上游,如 "upstream_id": "1"。
如何使用 APISIX Dashboard 管理路由?
APISIX Dashboard 提供图形化管理界面。浏览器访问 http://127.0.0.1:9000,默认用户名和密码均为 admin。登录后可以新建路由,依次设置路由名称、path、method 以及上游信息,创建完成后可在路由列表查看,访问效果与使用 Admin API 创建的一致。