当前位置:   article > 正文

Apisix 简介和安装

apisix

1、Apisix简介

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 集群。

2、安装

(1)安装 OpenResty 和 Apache APISIX 的 RPM 仓库

sudo yum install -y https://repos.apiseven.com/packages/centos/apache-apisix-repo-1.0-1.noarch.rpm
  • 1

(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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

etcd启动命令

./etcd
  • 1

(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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

(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
  • 1

启动


systemctl start apisix-dashboard
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/214151?site
推荐阅读
相关标签
  

闽ICP备14008679号