APISIX 的使用

APISIX 的使用

💡 原文中文,约7000字,阅读约需17分钟。
📝

内容提要

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 创建的一致。

🏷️

标签

➡️

继续阅读