APISIX 上手指南

  • Post author:
  • Post category:其他

浅浅介绍一下APISIX上手指南

目录

部署

基于 docker 和 docker-compose

Step 1: 创建上游服务(Upstream)

Step 2: 绑定路由与上游服务

Step 3: 验证访问

体验 Demo


部署

基于 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/

参考材料

快速入门指南 | Apache APISIX® — Cloud-Native API Gateway


版权声明:本文为chloeo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。