浅浅介绍一下APISIX上手指南
目录
部署
基于 docker 和 docker-compose
基于 Docker 是最简单的(centos7)
Step 1: 安装 docker 和 docker-compose:yum install docker, docker-compose。安装完成后,启动 docker:systemctl start docker
Step 2: 安装 APISIX,要下载各种镜像,需要一点时间
1.#将 Apache APISIX 的 Docker 镜像下载到本地 git clone https://github.com/apache/apisix-docker.git
2.#将当前的目录切换到 apisix-docker/example 路径下 cd apisix-docker/example
3.#运行 docker-compose 命令,安装 Apache APISIX docker-compose -p docker-apisix up -d
4.#停止 docker-compose -p docker-apisix down
Step 3: 测试安装是否成功
#注意:请在运行 Docker 的宿主机上执行 curl 命令。 curl "http://127.0.0.1:9080/apisix/admin/services/" -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'
#正常的结果返回{"node":{"key":"/apisix/services","nodes":{},"dir":true},"count":0,"action":"get"}
#20220309 域名已配置 curl "https://open.datastory.com.cn/api/apisix/admin/services/" -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'
#返回结果{"action":"get","node":{"dir":true,"nodes":{},"key":"/apisix/services"},"count":0}
注:在 fs-platform-vm-open1 机器上需要先执行 setenforce 0,不然容器会没有权限
创建路由并验证
初步理解
我们可以创建一个 Route 并与上游服务(通常也被称为 Upstream 或后端服务)绑定,当一个 请求(Request) 到达 Apache APISIX 时,Apache APISIX 就会明白这个请求应该转发到哪个上游服务中。
curl "http://127.0.0.1:9080/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 这个上游服务:
- 请求的 HTTP 方法为 GET。
- 请求头包含 host 字段,且它的值为example.com。
- 请求路径匹配 /anything/, 意味着任意的子路径,例如 /anything/foo?arg=10。
当这条路由创建后,我们可以使用 Apache APISIX 对外暴露的地址去访问上游服务: 'curl -i -X GET "http://127.0.0.1:9080/anything/foo?arg=10" -H "Host: example.com"
这将会被 Apache APISIX 转发到 http://httpbin.org:80/anything/foo?arg=10,我们会得到如下返回
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 425
Connection: keep-alive
Date: Wed, 02 Mar 2022 02:41:58 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Server: APISIX/2.12.1
{
“args”: {
“arg”: “10”
},
“data”: “”,
“files”: {},
“form”: {},
“headers”: {
“Accept”: “/ “,
“Host”: “example.com”,
“User-Agent”: “curl/7.29.0”,
“X-Amzn-Trace-Id”: “Root=1-621ed976-1b49edd305dcba1b31e46292”,
“X-Forwarded-Host”: “example.com”
},
“json”: null,
“method”: “GET”,
“origin”: “172.19.0.1, 120.24.170.254”,
“url”: “http://example.com/anything/foo?arg=10″
}
接下来我们可以把上面的步骤做一个细节拆分
Step 1: 创建上游服务(Upstream)
读完上一节,我们知道必须为 Route 设置 Upstream。只需执行下面的命令即可创建一个上游服务:
curl “http://127.0.0.1:9080/apisix/admin/upstreams/1″ -H “X-API-KEY: edd1c9f034335f136f87ad84b625c8f1” -X PUT -d ‘
{
“type”: “roundrobin”,
“nodes”: {
“httpbin.org:80”: 1
}
}’
我们使用 roundrobin 作为负载均衡机制,并将 httpbin.org:80 设置为我们的上游服务,其 ID 为 1。更多字段信息,请参阅 Admin API | Apache APISIX® — Cloud-Native API Gateway
Step 2: 绑定路由与上游服务
我们刚刚创建了一个上游服务,现在让我们为它绑定一个路由!
curl “http://127.0.0.1:9080/apisix/admin/routes/1″ -H “X-API-KEY: edd1c9f034335f136f87ad84b625c8f1” -X PUT -d ‘
{
“uri”: “/get”,
“host”: “httpbin.org”,
“upstream_id”: “1”
}’
Step 3: 验证访问
有了路由和上游服务,就可以进行验证了,具体命令如下:
curl -i -X GET “http://127.0.0.1:9080/get?foo1=bar1&foo2=bar2″ -H “Host: httpbin.org”
可以正常得到返回
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 370
Connection: keep-alive
Date: Wed, 02 Mar 2022 02:46:20 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Server: APISIX/2.12.1
{
“args”: {
“foo1”: “bar1”,
“foo2”: “bar2”
},
“headers”: {
“Accept”: “/ “,
“Host”: “httpbin.org”,
“User-Agent”: “curl/7.29.0”,
“X-Amzn-Trace-Id”: “Root=1-621eda7c-61e2dd02597493356eb99f29”,
“X-Forwarded-Host”: “httpbin.org”
},
“origin”: “172.19.0.1, 120.24.170.254”,
“url”: “http://httpbin.org/get?foo1=bar1&foo2=bar2″
}
体验 Demo
需要配置代理,参考 跳板机代理使用文档 – 基础平台产品 – DataStory
api 地址 https://open.datastory.com.cn/api/
demo 路由地址 https://open.datastory.com.cn/api/get?foo1=bar1 & foo2=bar2
dashboard demo http://192.168.70.101:9000/
参考材料