title: 快速入门指南 keywords:
import Tabs from ‘@theme/Tabs’; import TabItem from ‘@theme/TabItem’;
本文将为你介绍 Apache APISIX 的概念、功能以及如何使用 APISIX。
通过本文你可以了解到以下内容:
Apache APISIX 是 Apache 软件基金会下的云原生 API 网关,它兼具动态、实时、高性能等特点,提供了负载均衡、动态上游、灰度发布(金丝雀发布)、服务熔断、身份认证、可观测性等丰富的流量管理功能。我们可以使用 Apache APISIX 来处理传统的南北向流量,也可以处理服务间的东西向流量。同时,它也支持作为 K8s Ingress Controller 来使用。
下图为 Apache APISIX 的架构:
下表是本文涉及到的 APISIX 的主要概念和组件:
概念/组件 | 描述 |
---|---|
Route | 通过路由定义规则来匹配客户端请求,根据匹配结果加载并执行相应的插件,最后把请求转发给到指定的上游应用。 |
Upstream | 上游的作用是按照配置规则对服务节点进行负载均衡,它的地址信息可以直接配置到路由或服务上。 |
Admin API | 用户可以通过 Admin API 控制 APISIX 实例。 |
在开始使用 APISIX 之前,请确保你已经安装以下应用:
请求内容:
请求 URL 由以下参数构成:
HTTP
协议。80
端口。httpbin.org
。/get
。foo1
和 foo2
。运行以下命令,发送请求:
curl --location --request GET "http://httpbin.org/get?foo1=bar1&foo2=bar2"
响应内容:
{ "args": { "foo1": "bar1", "foo2": "bar2" }, "headers": { "Accept": "*/*", "Host": "httpbin.org", "User-Agent": "curl/7.29.0", "X-Amzn-Trace-Id": "Root=1-6088fe84-24f39487166cce1f0e41efc9" }, "origin": "58.152.81.42", "url": "http://httpbin.org/get?foo1=bar1&foo2=bar2" }
我们将使用 Docker 安装 APISIX 并启用 Admin API。
首先,通过 git
命令克隆 apisix-docker 仓库:
git clone https://github.com/apache/apisix-docker.git cd apisix-docker/example
现在你可以通过 docker-compose
启动 APISIX。
<Tabs groupId=“cpu-arch” defaultValue=“x86” values={[ {label: ‘x86’, value: ‘x86’}, {label: ‘ARM/M1’, value: ‘arm’}, ]}>
docker-compose -p docker-apisix up -d
docker-compose -p docker-apisix -f docker-compose-arm64.yml up -d
:::note
你也可以参考 APISIX 安装指南了解不同的安装方法。
:::
:::info IMPORTANT
请确保其他系统进程没有占用 9080、9180、9443 和 2379 端口。
在基于 UNIX 的系统中,可以使用以下命令来终止指定监听端口的运行:
sudo fuser -k 9443/tcp
如果 Docker 容器不能正常运行,你可以通过以下命令检查日志进行问题诊断:
docker logs -f --tail $<container_id>
:::
安装完成后,你可以在运行 Docker 的宿主机上执行 curl
命令访问 Admin API,根据返回数据判断 APISIX 是否成功启动。
# 注意:请在运行 Docker 的宿主机上执行 curl 命令。 curl "http://127.0.0.1:9180/apisix/admin/services/" -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'
如果返回数据如下所示,则表示 APISIX 成功启动:
{ "count":0, "node":{ "key":"/apisix/services", "nodes":[], "dir":true } }
完成上述步骤后,你就已经拥有了一个正在运行的 APISIX 的实例了,现在你可以从之后的小节中学习如何创建路由以及了解 APISIX Dashboard 的操作。
APISIX 提供了强大的 Admin API 和 Dashboard 供用户使用。在下述示例中,我们将使用 Admin API 创建一个 Route 并与 Upstream 绑定,当一个请求到达 APISIX 时,APISIX 会将请求转发到指定的上游服务中。
以下示例代码中,我们将为路由配置匹配规则,以便 APISIX 可以将请求转发到对应的上游服务:
curl "http://127.0.0.1:9180/apisix/admin/routes/1" -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d ' { "methods": ["GET"], "host": "example.com", "uri": "/anything/*", "upstream": { "type": "roundrobin", "nodes": { "httpbin.org:80": 1 } } }'
该配置意味着,当请求满足下述的所有规则时,请求将被转发到上游服务(httpbin.org:80
):
GET
。host
字段,且它的值为 example.com
。/anything/*
,*
意味着任意的子路径,例如 /anything/foo?arg=10
。当路由创建完成后,可以通过以下命令访问上游服务:
curl -i -X GET "http://127.0.0.1:9080/anything/foo?arg=10" -H "Host: example.com"
该请求将被 APISIX 转发到 http://httpbin.org:80/anything/foo?arg=10
。
你可以通过以下命令创建一个上游,并在路由中使用它,而不是直接将其配置在路由中:
curl "http://127.0.0.1:9180/apisix/admin/upstreams/1" -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d ' { "type": "roundrobin", "nodes": { "httpbin.org:80": 1 } }'
该上游配置与上一节配置在路由中的上游相同。同样使用了 roundrobin
作为负载均衡机制,并设置了 httpbin.org:80
为上游服务。为了将该上游绑定到路由,此处需要把 upstream_id
设置为 "1"
。更多字段信息,请参考 Admin API。
上游服务创建完成后,可以通过以下命令绑定到指定路由:
curl "http://127.0.0.1:9180/apisix/admin/routes/1" -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d ' { "uri": "/get", "host": "httpbin.org", "upstream_id": "1" }'
我们已经创建了路由与上游服务,现在可以通过以下命令访问上游服务:
curl -i -X GET "http://127.0.0.1:9080/get?foo1=bar1&foo2=bar2" -H "Host: httpbin.org"
该请求将被 APISIX 转发到 http://httpbin.org:80/anything/foo?arg=10
。
你还可以使用 APISIX Dashboard 创建和配置类似于上述步骤中所创建的路由。
如果你已经完成上述操作步骤,就可以通过 localhost:9000
访问 APISIX Dashboard。
单击侧边栏中的 Route
,可以查看已经配置的路由列表。你也可以看到在上述步骤中使用 Admin API 创建的路由。
你也可以通过单击 Create
按钮并按照提示创建新路由:
新创建的路由将被添加到路由列表中:
想要了解更多关于 APISIX Dashboard 的信息,请参考 APISIX Dashboard 文档。
完成上述步骤后,APISIX 就可以正常运行了。如果想利用 APISIX 实现身份验证、安全性、限流限速和可观测性等功能,可通过添加插件实现。各类插件的详细信息请参考插件市场。
如果你在使用当中遇到困难,可以通过 APISIX 社区频道或者在 GitHub 上提交一个 issue 寻求帮助。