apisix

APISIX

todo概念

安装

docker

$ git clone https://github.com/apache/apisix-docker.git
$ cd apisix-docker/example
$ docker-compose up 

本地wnmp

直接使用的集成环境phpstudy

terminal-wsl2

安装docker的时候必须要下载的

遇到的问题记录

wsl无法ping通windows,docker也无法ping通windows

原因:被windows防火墙拦截了

解决:防火墙开一个入出站规则(允许所有的协议和ip),也可以指定wsl网卡ip

apisix_第1张图片

还需要开启

apisix_第2张图片

概念

上游upstream

​ 同nginx,上游是对虚拟主机的抽象,即应用层服务或节点的抽象。

​ 上游的作用是按照配置规则对服务节点进行负载均衡,它的地址信息可以直接配置到路由或服务上。当多个路由或服务引用同一个上游时,可以通过创建上游对象,在路由或服务中使用上游的 ID 方式引用上游,减轻维护压力。

路由routes

​ APISIX 可以通过路由定义规则来匹配客户端请求,根据匹配结果加载并执行相应的插件,最后把请求转发给到指定的上游服务。路由中主要包含三部分内容:匹配规则、插件配置和上游信息。

服务

Service 也称为服务,是某类 API 的抽象(也可以理解为一组 Route 的抽象)。它通常与上游服务抽象是一一对应的,Route 与 Service 之间,通常是 N:1 的关系。

简单使用

创建upstream

创建id==1的upstream,会转发到windos的端口中

curl "http://127.0.0.1:9180/apisix/admin/upstreams/1" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
  "type": "roundrobin",
  "nodes": {
    "{windowsip}:{windowspoty}": 1
  }
}'
  • x-api-keyapisix/apisix_conf/config.yaml定义
  • type:调度方式
  • nodes:upstream的节点

创建routes

curl "http://127.0.0.1:9180/apisix/admin/routes/1" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
  "methods": ["GET"],
  "host": "",
  "uri": "/anything/*",
  "upstream_id": "1"
}'

测试路由

curl -i -X GET "http://127.0.0.1:9080/anything/index.html

保护API

  1. 限制请求速率
  2. 限制单位时间内的请求数
  3. 延迟请求
  4. 拒接客户端请求
  5. 限制响应数据的速率

apisix有3个参数可以限制

  • limit-conn: 插件主要用于限制客户端对服务的并发请求数。
  • limit-req:插件使用漏桶算法限制对用户服务的请求速率。
  • limit-count:插件主要用于在指定的时间范围内,限制每个客户端总请求个数。

example

60秒内,只允许访问2次

curl -i http://127.0.0.1:9180/apisix/admin/routes/1 \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri": "/index.html",
    "plugins": {
        "limit-count": {
            "count": 2,
            "time_window": 60,
            "rejected_code": 503,
            "key_type": "var",
            "key": "remote_addr"
        }
    },
  "upstream_id": "1"
    }
}'

日志

在 APISIX 中,日志可分为访问日志和错误日志。访问日志主要记录了每个请求的上下文信息,错误日志则是 APISIX 运行打印的日志信息,包括 NGINX 和插件相关的信息。APISIX 的日志存储在 ./apisix/logs/ 目录下。当然你可以通过一些 APISIX 的日志插件,将 APISIX 的日志发送到指定的日志服务中

http-logger插件

apisix会把日志数据以http请求发送,需要自己写服务端接口,把数据写入log文件

其他插件

指标

文档

https://apisix.apache.org/zh/docs/apisix/getting-started/

你可能感兴趣的:(linux,docker,运维)