Centos7 Docker安装APISIX

news2024/11/15 3:40:09

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 架构图

在这里插入图片描述

2 快速安装

2.1 前提条件

在开始使用 APISIX 之前,请确保你已经安装以下应用:Docker 和 Docker Compose。
参考博客:
Centos7上安装Docker
https://blog.csdn.net/weixin_44917045/article/details/128749333

Centos7上安装docker-compose
https://blog.csdn.net/weixin_44917045/article/details/128752105

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
在这里插入图片描述
使用rz上传指令上传apisix-docker.zip文件至/usr/local/apisix-docker目录中并解压。
在这里插入图片描述

2.2.2 docker-compose启动apisix

切换目录至/usr/local/apisix-docker/example,执行指令docker-compose -p docker-apisix up -d
在这里插入图片描述
在这里插入图片描述
注意:请确保其他系统进程没有占用 9080、9180、9443 和 2379 端口。

使用docker ps查看apisix相关容器运行情况。
在这里插入图片描述
发现apisix容器状态处于一直重启状态,使用docker logs apisix查看容器运行日志,报错如下:
在这里插入图片描述

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中安装apisix就安装成功了!

2.2.3 访问apisix dashboard

在浏览器上访问http://192.168.131.44:9000即可访问apisix dashboard。
apisix提供了强大的AdminAPI和Dashboard供用户使用,用户可以通过AdminAPI提供的相关指令来创建路由和上游服务,并将路由和上游服务进行绑定。当一个请求到达apisix时,apisix会将请求转发到指定的上游服务中。
为了操作简单,我们这里使用的是在Dashboard中创建路由和服务。
在这里插入图片描述

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 &

在这里插入图片描述
在这里插入图片描述

第二个服务

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

在这里插入图片描述
在这里插入图片描述

3.2 创建服务

服务由路由中公共的插件配置、上游目标信息组合而成。服务与路由、上游关联,一个服务可对应一组上游节点、可被多条路由绑定。
创建一个名为test-service的服务,负载均衡算法为带权轮询,目标服务为192.168.44.131:8002、192.168.44.131:8003
在这里插入图片描述
在这里插入图片描述

3.3 创建路由

路由(Route)是请求的入口点,它定义了客户端请求与服务之间的匹配规则。路由可以与服务(Service)、上游(Upstream)关联,一个服务可对应一组路由,一个路由可以对应一个上游对象(一组后端服务节点),因此,每个匹配到路由的请求将被网关代理到路由绑定的上游服务中。
创建一个名为test-route的路由,绑定的服务为test-service,暂时先不绑定上游服务。路由可以配置上游服务、插件等信息。为了简单测试,我们暂时不进行配置。
在这里插入图片描述
在这里插入图片描述

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。
在这里插入图片描述在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/177050.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kubernetes:分享一个很简洁的 k8s 管理工具 Skooner

写在前面 博文内容为 Skooner 简单介绍包括下载安装导入集群基本功能使用Skooner 的 sa 使用的当前命名空间默认的 sa不会显示创建 sa ,当然可以单独创建理解不足小伙伴帮忙指正 我所渴求的,無非是將心中脫穎語出的本性付諸生活,為何竟如此艱難呢 -----…

Spring_FrameWork_10(MyBatisPlus)

lombok mybatis:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplTestvoid selectById(){IPage page new Page(2,2);bookDao.selectPage(page,null);System.out.println("当前页码值:"page.getCurrent());System.out.println…

Java---微服务---Nacos集群搭建

Nacos集群搭建1.集群结构图2.搭建集群2.1.初始化数据库2.2.下载nacos2.3.配置Nacos2.4.启动2.5.nginx反向代理2.6.优化1.集群结构图 官方给出的Nacos集群图: 其中包含3个nacos节点,然后一个负载均衡器代理3个Nacos。这里负载均衡器可以使用nginx。 我们…

解锁Windows所有电源选项

20230123 By wdhuag 目录 参考: 查看当前选项: 警告!修改前,先使用Registry Workshop备份注册表,导出PowerSettings: 在PowerSettings里增加Attributes参数(十六进制、数值2)&a…

Shell脚本从入门到实战

Shell 文章目录Shellshell概述Shell脚本入门1. 脚本格式2. 第一个Shell脚本:helloworld3. 第二个Shell脚本:多命令处理Shell中的变量系统变量1. 常用系统变量2. 案例实操自定义变量1. 基本语法2. 变量定义规则特殊变量:$n特殊变量:$#特殊变量…

零基础学JavaWeb开发(二十二)之 springmvc入门到精通

一、SpringMVC概述 1、三层架构与MVC架构区别 1.1、三层架构 表示层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。 servlet层 业务逻辑层:对我们数据实现业务逻辑的封装 service层 数据访问层&#xf…

【Java|golang】2303. 计算应缴税款总额

给你一个下标从 0 开始的二维整数数组 brackets &#xff0c;其中 brackets[i] [upperi, percenti] &#xff0c;表示第 i 个税级的上限是 upperi &#xff0c;征收的税率为 percenti 。税级按上限 从低到高排序&#xff08;在满足 0 < i < brackets.length 的前提下&am…

【JavaScript】多态(Symbol),迭代器接口,getter/setter

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录多态symbol迭代器接口实现数组的迭代器方法练习Getter/Setter多态 我拿到一个对象&#xff0c;这…

【JavaScript】正则表达式详解

&#x1f4bb;【JavaScript】正则表达式&#x1f3e0;专栏&#xff1a;JavaScript &#x1f440;个人主页&#xff1a;繁星学编程&#x1f341; &#x1f9d1;个人简介&#xff1a;一个不断提高自我的平凡人&#x1f680; &#x1f50a;分享方向&#xff1a;目前主攻前端&#…

MySQL(五):事务简介、事务的特性、事务的概念及状态、支持事务的引擎

目录一、事务的起源二、事务的特性2.1 原子性(Atomicity)2.2 隔离性(Isolation)2.3 一致性(Consistency)2.4 持久性(Durability)三、事务的概念及状态四、支持事务的引擎一、事务的起源 事务源于日常生活中的业务&#xff0c;现有这样的一个场景&#xff0c;A账户有11元&#…

人工智能学习06--pytorch04--transforms

transforms主要对图片进行一些变换 transform该如何使用&#xff08;python&#xff09; 从transform中选择一个class&#xff0c;进行创建 依据创建的工具看需要什么&#xff08;如img&#xff09; 为什么需要tensor的数据类型 tensor数据类型&#xff1a;包装了神经网络…

opencv win10 4.7.0 源码编译 vs2019 cmake

下载opencv & opencv-contrib 4.7.0源码&#xff1b;注意下载地址https://github.com/opencv/opencv/releases https://github.com/opencv/opencv_contrib/releases/tag/4.7.0 版本要一模一样cmake输出文件夹为&#xff1a;opencv-4.7.0-build 遇到下载问题如下&#xf…

常见递归模式

常见递归模式递归模式遍历二叉树模式回溯模式子问题分解模式递归模式 常见递归模式&#xff1a; 遍历二叉树模式回溯模式子问题分解模式 遍历二叉树模式 只要涉及递归的问题&#xff0c;都是树的问题&#xff0c;或者说树的遍历。 void traverse(TreeNode root) { // 遍历…

混合背包问题

混合背包问题一、问题二、分析三、代码一、问题 二、分析 混合背包问题就是将我们之前讲过的01背包&#xff0c;完全背包&#xff0c;分组背包&#xff0c;多重背包问题等等中的任意几个混合在一起。因此想要解决这个问题&#xff0c;就需要对01背包&#xff0c;完全背包&…

PDF划词翻译软件

PDF划词翻译 一个简单的PDF划词翻译软件。 Github仓库地址&#xff1a;https://github.com/WCX1024979076/simple_pdf_translator Github下载地址&#xff1a; https://github.com/WCX1024979076/simple_pdf_translator/releases/tag/v0.1.0 Gitee仓库地址&#xff1a; htt…

ROS2机器人编程简述humble-第三章-COMPUTATION GRAPH .2

ROS2机器人编程简述humble-第三章-PERCEPTION AND ACTUATION MODELS .1避开障碍物计算图如何呢&#xff1f;该应用程序的计算图非常简单&#xff1a;订阅激光主题的节点向机器人发布速度命令。控制逻辑解释&#xff1a;输入的感知信息并产生控制命令&#xff08;输出&#xff0…

深度学习:DenseNet思想总结

深度学习&#xff1a;DenseNet思想总结前言DenseNetResNetDense connectionComposite functionPooling layersGrowth rateBottleneck layersCompressionImplementation Details总结前言 论文中提出的架构为了确保网络层之间的最大信息流&#xff0c;将所有层直接彼此连接。为了…

JUC面试(八)——阻塞队列

阻塞队列 队列&#xff0c;FIFO BlockingQueue 阻塞队列&#xff0c;排队拥堵&#xff0c;首先它是一个队列&#xff0c;而一个阻塞队列在数据结构中所起的作用大致如下图所示&#xff1a; 线程1往阻塞队列中添加元素&#xff0c;而线程2从阻塞队列中移除元素 当阻塞队列是空…

Java基础(程序流程控制)

程序流程控制1..顺序结构程序从上到下逐行执行&#xff0c;中间没有判断和跳转2.分支结构根据条件&#xff0c;选择性执行某段代码有if-else和switch-case两种分支需要注意根据相应的方法&#xff0c;来输入指定类型的值。如果不匹配则会异常&#xff1a;InputMisMatchExceptio…

结构型模式-桥接模式

1.概述 现在有一个需求&#xff0c;需要创建不同的图形&#xff0c;并且每个图形都有可能会有不同的颜色。我们可以利用继承的方式来设计类的关系&#xff1a; 我们可以发现有很多的类&#xff0c;假如我们再增加一个形状或再增加一种颜色&#xff0c;就需要创建更多的类。试…