APISIX的安装和使用

本文介绍了ApacheAPISIX的软件架构,详细阐述了插件加载流程,包括安装方法和docker部署,重点讲解了apisixdashboard的使用以及如何配置路由和JAVA插件开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

软件架构

Apache APISIX是一个动态、实时、高性能的云原生API网关。它构建于NGINX+ngx_lua的技术基础之上,充分利用了LuaJIT所提供的强大性能。
在这里插入图片描述
APISIX主要分为两个部分:

  1. APISIX核心:包括Lua插件、多语言插件运行时(Plugin Runner)、Wasm插件运行时等;
  2. 功能丰富的各种内置插件:包括可观测性、安全、流量控制等。
    APISIX在其核心中,提供了路由匹配、负载均衡、服务发现、API管理等重要功能,以及配置管理等基础性模块。除此之外,APISIX插件运行时也包含其中,提供原生Lua插件的运行框架和多语言插件的运行框架,以及实验性的Wasm插件运行时等。APISIX多语言插件运行时提供多种开发语言的支持,比如Golang、Java、Python、JS等。

APISIX目前也内置了各类插件,覆盖了API网关的各种领域,如认证鉴权、安全、可观测性、流量管理、多协议接入等。

插件加载流程

在这里插入图片描述

安装APISIX

在这里我采用docker的方式安装APISIX.
使用此方法安装APISIX,需要安装Docker和Docker Compose。
首先下载apisix-docker仓库,命令如下

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

然后,使用docker-compose启用APISIX,命令为

docker-compose -p docker-apisix up -d

因为我们在安装APISIX时选择了Docker安装,那么etcd会自动安装。APISIX使用etcd作为配置中心进行保存和同步配置。
此时访问http://ip:9000可以访问APISIX的控制台,如图所示
在这里插入图片描述
输入账号admin,密码admin登录到apisix dashboard系统。

apisix dashboard介绍

在这里插入图片描述
上图是Dashboard平台的一个全景,它的功能简单紧凑,下面介绍每个菜单的功能;

  • 仪表盘:监测网关请求数据、ETCD数据等,同时还支持自定义监控对象的数据;
  • 路由:路由(Route)是请求的入口点,它定义了客户端请求与服务之间的匹配规则。路由可以与服务(Service)、上游(upstream)关联,一个服务可对应一组路由,一个路由可对应一个上游对象(一组后端服务节点),因此,每个匹配到路由的请求将被网关代理到路由绑定的上游服务中。
  • 服务:服务由路由中公共的插件配置、上游目标信息组合而成。服务与路由、上游关联,一个服务可对应一组上游节点,可被多条路由绑定。
  • 上游:上游列表包含了已经创建的上游服务(即后端服务),可以对上游服务的多个目标节点进行负载均衡和健康检查。
  • 插件:APISIX内置了多个插件,在这里可以为路由配置相应的插件实现高级功能。
  • 证书:证书被网关用于处理加密请求,它将与SNI关联,并与路由中主机名绑定。

配置路由

配置仪表板

首次配置Dashboard,第一次启动Dashboard仪表板为空,需要配置Grafana地址(http://127.0.0.1:3000)更改Dashboard,如果Dashboard地址改变了,系统设置中更改。

  1. 查看APISIX数据
    在这里插入图片描述
  2. 配置路由
  • 路由route:通过路由定义规则来匹配客户端请求,根据匹配结果加载并执行相应的插件,最后把 请求转发到指定的上游应用。
  • 服务Service:是某类API的抽象(一组路由的抽象),通常与上游服务抽象是一一对应的,但与路由之间,通常是1:N的关系。
  1. 配置简单网关
    项目资源
前端访问地址后端服务访问地址网关访问地址
192.168.1.100192.168.1.101:5000192.168.1.102:9080

【配置上游】
在Dashboard首页点击 上游菜单,点击创建,打开上游配置页面

  • 名称:通常是机房+服务器命名
  • 目标节点:用户服务的地址和端口号
  • 其他默认即可,点击下一步提交
    在这里插入图片描述
    【配置服务】
    在Dashboard首页点击服务菜单,点击创建,打开服务配置页面
  • 名称:通常以后端一个微服务为单位,一个微服务对应一个服务配置
  • 上游节点:选择配置好的上游节点。
    在这里插入图片描述
    【配置路由】
    在Dashboard首页点击路由菜单,点击创建,打开路由配置页面
    名称:路由名称
  • 标签:将一个服务下的多个路由分为一组,方便管理
  • 绑定服务:选择上面创建的用户模块服务,路由:服务=N:1
  • 路径:路由转发到服务的规则
    在这里插入图片描述
    当前面的网关都配置好了,在项目前端代码修改配置的axios请求后端地址,将它修改为请求网关地址192.168.1.102:9080
    打开浏览器访问前端的项目,点击登录,此时前端将请求发送到网关192.168.1.102:9080,网关根据配置的路由规则讲请求转发到后端服务192.168.1.101:5000。

基本使用

已经启动了两个Nginx测试服务web1和web2,接下来我们将通过apisix的路由功能来访问他们。
1、首先我们需要创建上游(Upstream),上游相当于虚拟主机的概念,可以对真实的服务提供负载均衡的功能。
在这里插入图片描述
2、创建web1和 web2的上游,设置号名称、负载均衡算法和目标节点信息。
在这里插入图片描述

3、再创建web1的路由(Route),路由可以用于匹配客户端的请求,然后转发到上游。
在这里插入图片描述

4、接下来通过apisix网管下面访问web1和web2服务。
在这里插入图片描述

进阶使用

Apisix通过启用插件,可以实现一系列丰富的功能。
【身份认证】
使用JWT来进行身份认证是一种非常流行的方式,这种方式在apisix中也是支持的,可以通过启用jwt-auth插件来实现。

  • 首先我们需要创建一个消费者对象(Consumer),创建成功后消费者列表显示如下:
    在这里插入图片描述
  • 之后在创建一个路由,路由访问路径匹配/auth/*,只需使用jwt-auth插件即可;

访问接口获取生成好的JWT Token,需要添加两个参数,key为JWT插件中配置的key,payload为JWT中存储的自定义负载数据,JWT Token生成地址:http://ip:9080/apisix/pligin/jwt/sign
在这里插入图片描述

  • 不添加JWT Token访问路由接口,会返回401,接口地址:http://ip:9080/auth/
    在这里插入图片描述

  • 在请求头Authorization中添加JWT Token后即可正常访问
    在这里插入图片描述

JAVA插件开发

通讯:apisix-java-plugin-runner和APISIX使用Unix Domain Socket进行进程间通信,因此需要部署在同一个实例中。
Apisix-java-plugin-runner由APISIX管理。APISIX在启动时启动apisix-java-plugin-runner,

创建Java插件项目

1、从github上获取demo(tzssangglass/java-plugin-runner-demo-1 (github.com))
2、改造demo
将java插件示例demo拉去下来之后,我妈找到 DemoFilter.java文件,在这个文件中可以修改过滤器的名称,为了方便测试,其它的文件暂时不需要修改。后期等过滤器调通后,可以在过滤器中编写代码来实现自己的业务需求。过滤器名称为AuthFilter,后面在apisix路由配置中

快速部署

1、重新制作apisix镜像
2、修改/apisix-docker/example/apisix_conf/config.yaml
3、修改/apisix-docker/example/docker-compose.yml
4、重新启动apisix网关

apisix网关路由配置插件

1、ext-plugin-pre-req
2、ext-plugin-post-resp
2.4.4验证java插件是否生效
发起apisix网关请求,请求匹配到具体的路由,路由中配置了拦截器,切换目录至/usr/local/apisix-docker/example/apisix_log,执行指令tail -200f error.log,查看是否打印插件中的日志信息,打印了代表插件执行成功。

### Apisix 安装部署教程 #### 使用 Docker 部署 Apache APISIX 对于希望快速上手并测试 APISIX 功能的开发者来说,Docker 是一种便捷的选择。只需几条命令即可完成环境搭建[^5]。 ```bash docker pull apache/apisix:latest docker run -it --rm \ --name apisix \ -p 9080:9080 \ -p 9443:9443 \ apache/apisix:latest ``` 上述命令会拉取最新版的官方镜像,并启动容器,在本地映射 HTTP HTTPS 端口用于访问 API 网关服务。 #### Kubernetes 上使用 Helm Chart 部署 为了实现更灵活高效的资源管理调度,推荐在生产环境中采用基于 Kubernetes 的部署方式。Helm 图表简化了复杂应用程序的一键式安装过程,允许用户自定义参数来适应不同场景需求。 ```yaml # values.yaml 示例片段 replicaCount: 2 image: repository: apache/apisix tag: "latest" service: type: LoadBalancer port: 9080 configProvider: type: etcd endpoints: - http://etcd.default.svc.cluster.local:2379 ``` 执行如下指令以应用配置文件: ```bash helm repo add apache https://apache.github.io/incubator-apisix-helm-chart helm install my-release apache/apisix -f values.yaml ``` 这将依据指定设置自动创建所需的服务实例及相关组件,极大地方便运维人员的操作维护工作。 #### 关于配置中心的选择 默认情况下,APISIX 将依赖 Etcd 来存储路由规则其他动态数据。Etcd 凭借其出色的性能表现以及广泛的社区支持成为首选方案之一;不过根据实际业务特点也可以考虑其他替代品如 Consul 或 Nacos 等[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值