Centos7 Docker安装APISIX

  • 1 基础介绍
  • 1.1 概念
  • 1.2 特性
  • 1.3 架构图
  • 2 快速安装
  • 2.1 前提条件
  • 2.2 安装步骤
  • 2.2.1 git命令克隆apisix-docker仓库
  • 2.2.2 docker-compose启动apisix
  • 2.2.3 访问apisix dashboard
  • 3 简单使用
  • 3.1 准备接口
  • 3.2 创建服务
  • 3.3 创建路由
  • 3.4 测试请求


1 基础介绍

1.1 概念

Apache APISIX 是 Apache 软件基金会下的云原生 API 网关,它兼具动态、实时、高性能等特点,提供了负载均衡、动态上游、灰度发布(金丝雀发布)、服务熔断、身份认证、可观测性等丰富的流量管理功能。我们可以使用 Apache APISIX 来处理传统的南北向流量,也可以处理服务间的东西向流量。同时,它也支持作为 K8s Ingress Controller 来使用。

1.2 特性

多平台支持: APISIX 提供了多平台解决方案,它不但支持裸机运行,也支持在 Kubernetes 中使用,还支持与 AWS Lambda、Azure Function、Lua 函数和 Apache OpenWhisk 等云服务集成。
全动态能力: APISIX 支持热加载,这意味着你不需要重启服务就可以更新 APISIX 的配置。
精细化路由: APISIX 支持使用 NGINX 内置变量做为路由的匹配条件,你可以自定义匹配函数来过滤请求,匹配路由。
运维友好: APISIX 支持与以下工具和平台集成:HashiCorp Vault、Zipkin、Apache SkyWalking、Consul、Nacos、Eureka。通过 APISIX Dashboard,运维人员可以通过友好且直观的 UI 配置 APISIX。
多语言插件支持: APISIX 支持多种开发语言进行插件开发,开发人员可以选择擅长语言的 SDK 开发自定义插件。

1.3 架构图

docker openssl库安装 opensips docker_Docker

2 快速安装

2.1 前提条件

在开始使用 APISIX 之前,请确保你已经安装以下应用:Docker 和 Docker Compose。
参考博客:
Centos7上安装Docker

Centos7上安装docker-compose

2.2 安装步骤

我们将使用 Docker 安装 APISIX 并启用 Admin API。

2.2.1 git命令克隆apisix-docker仓库

在win10电脑上使用git克隆apisix-docker仓库,并压缩为apisix-docker.zip压缩文件。

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

docker openssl库安装 opensips docker_Docker_02


使用rz上传指令上传apisix-docker.zip文件至/usr/local/apisix-docker目录中并解压。

docker openssl库安装 opensips docker_docker openssl库安装_03

2.2.2 docker-compose启动apisix

切换目录至/usr/local/apisix-docker/example,执行指令docker-compose -p docker-apisix up -d

docker openssl库安装 opensips docker_Apache_04


docker openssl库安装 opensips docker_Apache_05


注意:请确保其他系统进程没有占用 9080、9180、9443 和 2379 端口。使用docker ps查看apisix相关容器运行情况。

docker openssl库安装 opensips docker_apisix_06


发现apisix容器状态处于一直重启状态,使用docker logs apisix查看容器运行日志,报错如下:

docker openssl库安装 opensips docker_Docker_07

nginx: [alert] could not open error log file: open() "/usr/local/apisix/logs/error.log" failed (13: Permission denied)

解决办法:
具体的解决方法不确定,我是升级了docker版本,授予example文件夹权限,再重新启动就好了。
请参考github上提供的解决办法:https://github.com/apache/apisix-docker/issues/325

授予example文件夹权限
chmod -R 777 /usr/local/apisix-docker/example/ 升级docker版本至20.10.18,docker版本不易过低。

重新启动apisix,相关容器运行正常。

docker openssl库安装 opensips docker_Docker_08


至此,在docker中安装apisix就安装成功了!

2.2.3 访问apisix dashboard

在浏览器上访问http://192.168.131.44:9000即可访问apisix dashboard。

apisix提供了强大的AdminAPI和Dashboard供用户使用,用户可以通过AdminAPI提供的相关指令来创建路由和上游服务,并将路由和上游服务进行绑定。当一个请求到达apisix时,apisix会将请求转发到指定的上游服务中。

为了操作简单,我们这里使用的是在Dashboard中创建路由和服务。

docker openssl库安装 opensips docker_docker_09

3 简单使用

3.1 准备接口

为了方便测试,我们创建一个SpringBoot项目,提供一个/user/test接口,对项目按照8002和8003端口进行打包,/user/test接口返回的内容做了区分。

第一个服务

nohup java -jar /home/images/api/backend-1.0-SNAPSHOT.jar \
--server.port=8002 \
2>&1 > /home/images/api/nohup.log &

docker openssl库安装 opensips docker_docker openssl库安装_10


docker openssl库安装 opensips docker_apisix_11

第二个服务

nohup java -jar /home/images/api2/backend-1.0-SNAPSHOT.jar \
--server.port=8003 \
2>&1 > /home/images/api2/nohup.log &

docker openssl库安装 opensips docker_docker_12


docker openssl库安装 opensips docker_docker openssl库安装_13

3.2 创建服务

服务由路由中公共的插件配置、上游目标信息组合而成。服务与路由、上游关联,一个服务可对应一组上游节点、可被多条路由绑定。

创建一个名为test-service的服务,负载均衡算法为带权轮询,目标服务为192.168.44.131:8002、192.168.44.131:8003

docker openssl库安装 opensips docker_docker openssl库安装_14


docker openssl库安装 opensips docker_Docker_15

3.3 创建路由

路由(Route)是请求的入口点,它定义了客户端请求与服务之间的匹配规则。路由可以与服务(Service)、上游(Upstream)关联,一个服务可对应一组路由,一个路由可以对应一个上游对象(一组后端服务节点),因此,每个匹配到路由的请求将被网关代理到路由绑定的上游服务中。

创建一个名为test-route的路由,绑定的服务为test-service,暂时先不绑定上游服务。路由可以配置上游服务、插件等信息。为了简单测试,我们暂时不进行配置。

docker openssl库安装 opensips docker_docker_16


docker openssl库安装 opensips docker_docker_17

3.4 测试请求

当路由创建完成后,可以通过以下命令访问上游服务。http://192.168.44.131:9080/user/test,该请求将被 APISIX 转发到http://192.168.44.131:8002/user/test和http://192.168.44.131:8003/user/test。

docker openssl库安装 opensips docker_Docker_18

docker openssl库安装 opensips docker_Docker_19