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"
}'
选择了IT,必定终身学习