APISIX的安装和使用

软件架构

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,查看是否打印插件中的日志信息,打印了代表插件执行成功。

  • 23
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用Docker安装Apisix的步骤: 1. 首先,确保已经安装了Docker。如果没有安装,请参考[Docker官方文档](https://docs.docker.com/engine/install/)进行安装。 2. 打开终端或命令行界面,运行以下命令拉取Apisix镜像: ```shell docker pull apache/apisix ``` 3. 创建一个名为`apisix`的网络,用于Apisix容器和其他容器之间的通信: ```shell docker network create apisix ``` 4. 创建一个名为`apisix`的目录,用于存储Apisix的配置文件和日志: ```shell mkdir -p /usr/local/apisix ``` 5. 在`apisix`目录下创建一个名为`config.yaml`的配置文件,并将以下内容复制到文件中: ```yaml etcd: host: - "http://etcd:2379" ``` 6. 在`apisix`目录下创建一个名为`docker-compose.yaml`的文件,并将以下内容复制到文件中: ```yaml version: '3' services: etcd: image: quay.io/coreos/etcd:v3.4.13 command: etcd --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379 networks: - apisix apisix: image: apache/apisix volumes: - /usr/local/apisix:/usr/local/apisix environment: - ETCD_HOSTS=http://etcd:2379 ports: - "9080:9080" - "9443:9443" networks: - apisix networks: apisix: external: true ``` 7. 在终端或命令行界面中,进入`apisix`目录,并运行以下命令启动Apisix容器: ```shell docker-compose up -d ``` 8. 等待一段时间,Apisix容器将会启动并运行。可以通过访问`http://localhost:9080`或`https://localhost:9443`来验证Apisix是否成功安装

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值