apisix

官网

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

指南

Apache APISIX 是 Apache 软件基金会下的顶级项目,由 API7.ai 开发并捐赠。它是一个具有动态、实时、高性能等特点的云原生 API 网关。

你可以使用 APISIX 网关作为所有业务的流量入口,它提供了动态路由、动态上游、动态证书、A/B 测试、灰度发布(金丝雀发布)、蓝绿部署、限速、防攻击、收集指标、监控报警、可观测、服务治理等功能。

本教程使用脚本在本地环境快速安装 Apache APISIX,并且通过管理 API 来验证是否安装成功。

下载安装启动

docker方式:
git clone https://github.com/apache/apisix-docker.git
cd apisix-docker/example
m1:docker-compose -p docker-apisix -f docker-compose-arm64.yml up -d
x86:docker-compose -p docker-apisix up -d

apisix客户端访问:
127.0.0.1:9000
用户密码:admin admin

创建上游(站点)

curl "http://127.0.0.1:9180/apisix/admin/upstreams/test2" -H "X-API-KEY:edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{	
  "desc":"描述",
  "name":"test2",
  "type": "roundrobin",
  "nodes": {
    "192.168.1.3:8888": 1,
    "192.168.1.3:8889": 1
  }
}'

负载均衡

token

apisix_config/config.yaml中

admin_key:
- name: "admin"
key: edd1c9f034335f136f87ad84b625c8f1
role: admin                 # admin: manage all configuration data

- name: "viewer"
key: 4054f7cf07e344346cd3f287985e76a2
role: viewer

配置

手动写站点:
curl -i "http://127.0.0.1:9180/apisix/admin/routes" -H "X-API-KEY:edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
  "id":"base",
  "methods":["GET"],
  "host":"test.com",
  "uri": "/base/*",
  "plugins":{
    "proxy-rewrite":{
      "regex_uri":[
        "/base/(.*)",
        "/$1"
      ]
    }
  },
  "upstream" : {
    "type": "roundrobin",
    "nodes": {
      "192.168.1.3:8888": 1,
      "192.168.1.3:8889": 2
    }
  }
}'



//解释:
methods:请求的方法
host:域名,客户端必须经过这个域名的请求才转发
uri:匹配路由
plugins:插件,如/base/user转发为/user
upstream:站点(可以直接使用站点,叫上游)
	roundrobin:轮训
	nodes:服务端ip和开放的端口
"192.168.1.12:8888": 1, :代表权重 1
"192.168.1.12:8889": 2 :代表权重 2

配置 2--配置站点,配置日志插件,路由变更插件

自动配置站点:
curl -i "http://127.0.0.1:9180/apisix/admin/routes" -H "X-API-KEY:edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
  "id":"base",
  "name": "base",
  "methods":["GET"],
  "host":"test.com",
  "uri": "/base/*",
  "plugins":{
    "proxy-rewrite":{
      "regex_uri":[
        "/base/(.*)",
        "/$1"
      ]
    },
    "http-logger": {
      "uri": "http://192.168.1.3"
    }
  },
  "upstream_id": "482609054468801230",
  "labels": {
    "API_VERSION": "v1"
  }
}'

![image-20231013155332350](/Users/jeff/Library/Application Support/typora-user-images/image-20231013155332350.png)

限速插件

curl -i "http://127.0.0.1:9180/apisix/admin/routes/base" -H "X-API-KEY:edd1c9f034335f136f87ad84b625c8f1" -X PATCH -d '
{
  "plugins": {
    "limit-count": {
        "count": 2,
        "time_window": 10,
        "rejected_code": 503
     }
  }
}'

//解释:
"/base":配置的路径

插件列表官网

https://apisix.apache.org/zh/docs/apisix/plugins/limit-req/

启动prometheus插件

curl http://127.0.0.1:9180/apisix/admin/routes/1  \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
  "uri": "/base/*",
  "plugins": {
    "prometheus": {}
  },
  "upstream_id": "482609054468801230"
}'
posted @ 2023-10-13 18:05  Jeff的技术栈  阅读(86)  评论(0编辑  收藏  举报
回顶部