赞
踩
Apache APISIX 是一个动态、实时、高性能的 API 网关, 提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。
你可以把 Apache APISIX 当做流量入口,来处理所有的业务数据,包括动态路由、动态上游、动态证书、 A/B 测试、金丝雀发布(灰度发布)、蓝绿部署、限流限速、抵御恶意攻击、监控报警、服务可观测性、服务治理等。
全平台
云原生: 平台无关,没有供应商锁定,无论裸机还是 Kubernetes,APISIX 都可以运行。
支持 ARM64: 不用担心底层技术的锁定。
多协议
TCP/UDP 代理: 动态 TCP/UDP 代理。
Dubbo 代理: 动态代理 HTTP 请求到 Dubbo 后端。
动态 MQTT 代理: 支持用 client_id 对 MQTT 进行负载均衡,同时支持 MQTT 3.1.* 和 5.0 两个协议标准。
gRPC 代理:通过 APISIX 代理 gRPC 连接,并使用 APISIX 的大部分特性管理你的 gRPC 服务。
gRPC Web 代理:通过 APISIX 代理 gRPC Web 请求到上游 gRPC 服务。
gRPC 协议转换:支持协议的转换,这样客户端可以通过 HTTP/JSON 来访问你的 gRPC API。
Websocket 代理
Proxy Protocol
HTTP(S) 反向代理
SSL:动态加载 SSL 证书。
全动态能力
热更新和热插件: 无需重启服务,就可以持续更新配置和插件。
代理请求重写: 支持重写请求上游的host、uri、schema、enable_websocket、headers信息。
输出内容重写: 支持自定义修改返回内容的 status code、body、headers。
Serverless: 在 APISIX 的每一个阶段,你都可以添加并调用自己编写的函数。
动态负载均衡:动态支持有权重的 round-robin 负载平衡。
支持一致性 hash 的负载均衡:动态支持一致性 hash 的负载均衡。
健康检查:启用上游节点的健康检查,将在负载均衡期间自动过滤不健康的节点,以确保系统稳定性。
熔断器: 智能跟踪不健康上游服务。
代理镜像: 提供镜像客户端请求的能力。
流量拆分: 允许用户逐步控制各个上游之间的流量百分比。
精细化路由
支持全路径匹配和前缀匹配
支持使用 Nginx 所有内置变量做为路由的条件,所以你可以使用 cookie, args 等做为路由的条件,来实现灰度发布、A/B 测试等功能
支持各类操作符做为路由的判断条件,比如 {“arg_age”, “>”, 24}
支持自定义路由匹配函数
IPv6:支持使用 IPv6 格式匹配路由
支持路由的自动过期(TTL)
支持路由的优先级
支持批量 Http 请求
支持通过GraphQL属性过滤路由
安全防护
多种身份认证方式: key-auth, JWT, basic-auth, wolf-rbac, casbin, keycloak。
IP 黑白名单
Referer 黑白名单
IdP 支持: 支持外部的身份认证服务,比如 Auth0,Okta,Authing 等,用户可以借此来对接 Oauth2.0 等认证方式。
限制速率
限制请求数
限制并发
防御 ReDoS(正则表达式拒绝服务):内置策略,无需配置即可抵御 ReDoS。
CORS:为你的 API 启用 CORS。
URI 拦截器:根据 URI 拦截用户请求。
请求验证器。
CSRF:基于 Double Submit Cookie 的方式保护你的 API 远离 CSRF 攻击。
运维友好
OpenTracing 可观测性: 支持 Apache Skywalking 和 Zipkin。
对接外部服务发现:除了内置的 etcd 外,还支持 Consul 和 Nacos,以及 Eureka。
监控和指标: Prometheus
集群:APISIX 节点是无状态的,创建配置中心集群请参考 etcd Clustering Guide。
高可用:支持配置同一个集群内的多个 etcd 地址。
控制台: 操作 APISIX 集群。
版本控制:支持操作的多次回滚。
CLI: 使用命令行来启动、关闭和重启 APISIX。
单机模式: 支持从本地配置文件中加载路由规则,在 kubernetes(k8s) 等环境下更友好。
全局规则:允许对所有请求执行插件,比如黑白名单、限流限速等。
高性能:在单核上 QPS 可以达到 18k,同时延迟只有 0.2 毫秒。
故障注入
REST Admin API: 使用 REST Admin API 来控制 Apache APISIX,默认只允许 127.0.0.1 访问,你可以修改 conf/config.yaml 中的 allow_admin 字段,指定允许调用 Admin API 的 IP 列表。同时需要注意的是,Admin API 使用 key auth 来校验调用者身份,在部署前需要修改 conf/config.yaml 中的 admin_key 字段,来保证安全。
外部日志记录器:将访问日志导出到外部日志管理工具。(HTTP Logger、TCP Logger、Kafka Logger、UDP Logger、RocketMQ Logger、SkyWalking Logger、Alibaba Cloud Logging(SLS)、Google Cloud Logging、Splunk HEC Logging、File Logger)
Helm charts
高度可扩展
自定义插件: 允许挂载常见阶段,例如init, rewrite,access,balancer,header filter,body filter 和 log 阶段。
插件可以用 Java/Go/Python 编写
自定义负载均衡算法:可以在 balancer 阶段使用自定义负载均衡算法。
自定义路由: 支持用户自己实现路由算法。
多语言支持
Apache APISIX 是一个通过 RPC 和 Wasm 支持不同语言来进行插件开发的网关. Multi Language Support into Apache APISIX
RPC 是当前采用的开发方式。开发者可以使用他们需要的语言来进行 RPC 服务的开发,该 RPC 通过本地通讯来跟 APISIX 进行数据交换。到目前为止,APISIX 已支持Java, Golang, Python 和 Node.js。
Wasm 或 WebAssembly 是实验性的开发方式。 APISIX 能加载运行使用Proxy Wasm SDK编译的 Wasm 字节码。开发者仅需要使用该 SDK 编写代码,然后编译成 Wasm 字节码,即可运行在 APISIX 中的 Wasm 虚拟机中。
Serverless
Lua functions: 能在 APISIX 每个阶段调用 lua 函数.
Azure functions: 能无缝整合进 Azure Serverless Function 中。作为动态上游,能将特定的 URI 请求全部代理到微软 Azure 云中。
Apache OpenWhisk: 与Apache OpenWhisk集成。作为动态上游,能将特定的 URI 请求代理到你自己的 OpenWhisk 集群。
(1)安装 OpenResty 和 Apache APISIX 的 RPM 仓库
sudo yum install -y https://repos.apiseven.com/packages/centos/apache-apisix-repo-1.0-1.noarch.rpm
(2)安装etcd
ETCD_VER=v3.4.15
# choose either URL
GOOGLE_URL=https://storage.googleapis.com/etcd
GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
DOWNLOAD_URL=${GITHUB_URL}
rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
rm -rf /tmp/etcd-download-test && mkdir -p /home/project/apisix/etcd
curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /home/project/apisix/etcd --strip-components=1
rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
# install end and check etcd version
/home/project/apisix/etcd/etcd --version
/home/project/apisix/etcd/etcdctl version
etcd启动命令
./etcd
(3)安装apisix
# 查看仓库中最新的 apisix 软件包的信息
sudo yum info -y apisix
# 显示仓库中现有的 apisix 软件包
sudo yum --showduplicates list apisix
# 安装最新的 apisix 软件包
sudo yum install apisix
# 安装指定版本2.13.1-0.el7
sudo yum install apisix-2.13.1-0.el7
apisix 相关命令
# 运行以下命令初始化 NGINX 配置文件和 etcd. initialize NGINX config file and etcd
$ apisix init
# generate `nginx.conf` from `config.yaml` and test it
$ apisix test
# 启动 Apache APISIX. start Apache APISIX server
$ apisix start
# 其他命令
# 优雅停机 stop Apache APISIX server gracefully
$ apisix quit
# 强制停机 stop Apache APISIX server immediately
$ apisix stop
# 其他操作 more actions find by `help`
$ apisix help
(4)安装apisix-dashboard
安装dashboard
yum install -y https://github.com/apache/apisix-dashboard/releases/download/v2.13.1/apisix-dashboard-2.13.1-0.el7.x86_64.rpm
启动
systemctl start apisix-dashboard
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。