当前位置: 首页 > news >正文

apisix 初体验

文章目录

  • 前言
  • 一、参考资料
  • 二、安装
    • 1.安装依赖
    • 2.安装apisix 2.5
    • 3.apisix dashboard
  • 三、小试牛刀
    • 3.1 上游(upstream)
    • 3.2 路由(route)
  • 四、遇到的问题


前言

APISIX 是一个微服务API网关,具有高性能、可扩展性等优点。它基于 nginx(openresty)和 Lua 实现功能,借鉴了Kong的思路,将Kong底层的关系型数据库(Postgres)替换成了NoSQL型的 etcd,这使得 APISIX 相较于 Kong 在性能上有了很大提升,在启用各类插件的情况下,Apache APISIX 的性能据说是 Kong 的 10 倍,极具吸引力。
且相较于 Kong 来说,源码更为简洁,二次开发难度更低,但是相对的,开源时间较短,在插件功能完备性上不如Kong,比如缺少关于灰度相关的插件,但是其已纳入Apache 基金会孵化,社区也较为活跃,后期的发展空间较为可观。
和传统的API网关相比,APISIX 和 Kong 一样也是通过插件的形式来提供负载均衡、日记记录、身份鉴权、流量控制等功能。

一、参考资料

https://apisix.apache.org/zh/docs/apisix/installation-guide/#%E5%AE%89%E8%A3%85-etcd
https://apisix.apache.org/zh/docs/apisix/installation-guide/
https://www.bookstack.cn/read/apisix-3.0-zh/3a3ad75e1267bfce.md
http://www.lxiaoyu.com/p/77104

二、安装

本文安装环境为centos7 rpm安装方式 apisix2.5

1.安装依赖

  1. etcdepel
    http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -ivh epel-release-latest-7.noarch.rpm
  2. OpenResty源
yum install yum-utils
yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
yum install -y openresty
  1. etcd 3.4.15
    etcd 版本取决于apisix版本
    https://github.com/etcd-io/etcd/releases/download/v3.4.15/etcd-v3.4.15-linux-arm64.tar.gz
tar -xvf etcd-v3.4.15-linux-amd64.tar.gz && cd etcd-v3.4.15-linux-amd64 && sudo cp -a etcd etcdctl /usr/bin/

启动etcd etcd & 端口2379

2.安装apisix 2.5

yum install -y https://github.com/apache/apisix/releases/download/2.5/apisix-2.5-0.x86_64.rpm
apisix version
apisix start

apisix 是基于nginx,所以此处启动后会启动nginx进程,当执行apisix stop时,nginx进程不会被杀死,此时重启后会出现一些问题,最好停止后直接杀死nginx进程后重启 kill -9 $(ps aux | grep 'nginx' | grep -v grep | tr -s ' '| cut -d ' ' -f 2)
配置:设置允许访问ip

cd /usr/local/apisix/conf
vi config-default.yaml

在这里插入图片描述

  • 安装地址 /usr/local/apisix
  • 端口 8090

3.apisix dashboard

3.1. 安装

yum install -y https://github.com/apache/apisix-dashboard/releases/download/v2.6/apisix-dashboard-2.6-0.x86_64.rpm

3.2 配置conf

cd /usr/local/apisix/dashboard/conf
vi conf.yaml

释掉allow_list
在这里插入图片描述
3.3 启动验证
启动nohup manager-api -p /usr/local/apisix/dashboard/ &
在浏览器输入http://hostip:9000,默认登录用户密码均为admin

3.4 启动脚本(未测试)

if [[ $1  == "start" ]];thennohup manager-api -p /usr/local/apisix/dashboard/ >> /tmp/apisix-dashboard.log 2>&1 &systemctl start etcd
elif [[ $1 == "kill" ]];thensystemctl stop etcdps -ef | grep "/usr/local/apisix/dashboard/" | grep manager-api | awk '{print $2}' | xargs kill -9 ps -ef | egrep "dashboard|etcd"
fi
ps -eo etime,pid,command | egrep "dashboard|etcd" | grep -v grep 

三、小试牛刀

以nacos和minio配置为例,直接用dashboard配置
在这里插入图片描述

3.1 上游(upstream)

可以理解为nginx的upstream
这里配置一下nacos和user服务(省略),核心就是ip 端口
在这里插入图片描述

3.2 路由(route)

核心在路径和请求改写

  • 路径配置:/nacos/*
  • 路径改写:保持原样
    效果:访问http://ip:9080/nacos/ 即可访问客户端,最后的/不要省略
    分析:http://ip:9080/nacos/* 等于 upstream中配置的 http://192.168.150.1:8848/nacos
    和nginx对比,这里的代理前缀因为路径改写保持原样,所以代理后会自动将路径保持原样进行访问,那么如果代理的地址和路径配置不一致怎么办?我们来配置一个user服务,代理user服务的swagger,原访问地址 http://localhost:8092/doc.html
    在这里插入图片描述
  • 路径配置:/user/*
  • 路径改写:正则改写
  • 匹配正则表达式:^/user(/|$)(.*)
  • 转发路径模板:/$2
    在这里插入图片描述
    效果:访问http://ip:9080/user/doc.html
    分析:正则改写覆盖了/user前缀 http://ip:9080/user/doc.html 等于 http://127.0.0.1:8092/doc.html

四、遇到的问题

  1. 配置user服务访问F12发现 webjars 无法访问
    配置了lim-count 为1 那么此时访问的所有请求都算作一次,而加载doc.html时会请求多个/user路径下的请求,此时除了第一个请求,其他请求都会被拦截。关闭lim-count插件即可。
  2. 代理kkfileview 预览pdf插件,所有图片都加载失败
    F12 图片加载的都是根路径,此时代理的路径配置是file,所以无法代理到file,在路径配置上再添加一个路径/*

相关文章:

apisix 初体验

文章目录前言一、参考资料二、安装1.安装依赖2.安装apisix 2.53.apisix dashboard三、小试牛刀3.1 上游(upstream)3.2 路由(route)四、遇到的问题前言 APISIX 是一个微服务API网关,具有高性能、可扩展性等优点。它基于…...

time时间模块

time时间模块 目录time时间模块1.概述2.查看不同类型的时钟3.墙上时钟time3.1.time()当前时间戳3.2.ctime()格式化时间4.单调时钟计算测量时间5.cpu处理器时钟时间6.性能计数器7.时间组成8.处理时区9.解析和格式化时间1.概述 time模块允许访问多种类型的时钟,分别用…...

如何判断反馈电路的类型-反馈类型-三极管

如何判断反馈电路的类型 反馈电路类型很多,可根据不同的标准分类: ①根据反馈的极性分:有正反馈和负反馈。 ②根据反馈信号和输出信号的关系分:有电压反馈和电流反馈。 ③根据反馈信号和输入信号的关系分:有串联反…...

C++ 实现生命游戏 Live Game

#include"stdlib.h" #include"time.h" #include"unistd.h" using namespace std; #define XSIZE 80 #define YSIZE 30 #include"iostream" using namespace std ; // 初始化生命 void initLive(int a[YSIZE][XSIZE]) { // …...

什么是QoS?QoS是如何工作的?QoS的实验配置如何进行?

QoS(Quality of Service)是服务质量的简称。对于网络业务来说,服务质量包括哪些方面呢? 从传统意义上来讲,无非就是传输的带宽、传送的时延、数据的丢包率等,而提高服务质量无非也就是保证传输的带宽&…...

AcWing 840. 模拟散列表

题目描述 餐前小菜: 在讨论本题目之前先看一个简单的问题:给出 NNN 个正整数 (a1,a2,...,an)(a_1,a_2,...,a_n)(a1​,a2​,...,an​),再给出 MMM 个正整数 (x1,x2,...,xm)(x_1,x_2,...,x_m)(x1​,x2​,...,xm​),问这 MMM 个数中…...

【网络工程】常见HTTP响应状态码

前言 什么是HTTP响应状态码? HTTP状态码(HTTP Status Code)是表示网页服务器超文本传输协议响应状态的3位数字代码 HTTP响应码被分为五大类 信息响应(100~199)成功响应(200~299)重定向响应&am…...

Python之ruamel.yaml模块详解(二)

Python之ruamel.yaml模块详解(二)4 将YAML解析为Python对象并修改5 使用旧API将YAML解析为Python对象并修改6 使用[]和.get()访问合并的键:7 使用insert()方法插入内容8 使用yaml.indent()更改默认缩进9 使用yaml.compact()隔行显示10 同一数…...

若依框架 --- 偶发的el-select无法选择的问题

👏作者简介:大家好,我是小童,Java开发工程师,CSDN博客博主,Java领域新星创作者 📕系列专栏:前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶 &#x1f4…...

【Linux】tmpfile 使用介绍

tmpfile 使用介绍 1 介绍 很多情况下,需要系统自动识别/tmp、/var/tmp下的临时目录,并将其自动清理其中的过期文件。这个工具就是systemd-tmpfiles。 网上很多博客使用tmpwatchcron的方法来管理临时文件和临时存放文件的目录,在后期的版本…...

实现光线追踪重投影的方法

光线追踪重投影方法 重投影这项技术一般用于时间性帧复用技术上,例如TAA(Temporal Anti-Aliasing)反走样或者抗锯齿技术。读这篇文章最好先对TAA这类技术的算法流程有了解。 1.TAA抗锯齿技术简介 先简单介绍下TAA抗锯齿的原理,在游戏中,当前…...

Hyperbolic Representation Learning for CV

Contents Hyperbolic geometry[CVPR 2020] Hyperbolic visual embedding learning for zero-shot recognitionIntroductionApproachHyperbolic Label Embedding LearningHyperbolic Image Embedding LearningExperiment[CVPR 2020] Hyperbolic Image EmbeddingsIntroduction...

In Context Learning 相关分享

个人知乎详见 https://zhuanlan.zhihu.com/p/603650082/edit 1. 前言 随着大模型(GPT3,Instruction GPT,ChatGPT)的横空出世,如何更高效地提示大模型也成了学术界与工业界的关注,因此In-context learning…...

【前端笔试题一】:解析url路径中的query参数

前言 本文记录下在笔试过程中的前端笔试编程题目,会持续更新 1. 题目: 解析 url 路径中的 query 参数,比如:‘http://building/#/skeleton?serialNumber2023020818332821073&jobNo210347&target%7B%22a%22%3A%22b%22%2C…...

K_A12_001 基于STM32等单片机采集火光火焰传感参数串口与OLED0.96双显示

K_A12_001 基于STM32等单片机采集火光火焰传感参数串口与OLED0.96双显示一、资源说明二、基本参数参数引脚说明三、驱动说明IIC地址/采集通道选择/时序对应程序:四、部分代码说明1、接线引脚定义1.1、STC89C52RC火光火焰模块1.2、STM32F103C8T6火光火焰模块五、基础知识学习与相…...

Java基础42 枚举与注解

枚举与注解一、枚举(enumeration)1.1 自定义类实现枚举1.2 enum关键字实现枚举1.2.1 enum的注意事项1.2.2 enum的使用练习1.2.3 enum的常用方法1.2.4 enum的使用细节及注意事项1.2.5 enum练习二、注解(Annotation)2.1 Override&am…...

shell的变量和引用

文章目录二、变量和引用2.1 什么是变量2.2变量的命名2.3 变量的类型2.3.1 根据数据类型分类2.3.2 根据作用域分类2.4 变量的定义2.5 shell中的引用2.6 变量的运算练习:二、变量和引用 在程序设计语言中,变量是一个非常重要的概念。也是初学者在进行Shel…...

基于PHP的招聘网站

摘要在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括在线招聘的网络应用,在外国在线招聘已经是很普遍的方式,不过国内的在线招聘可能还处于起步阶段。招聘网站具有招聘信息功能的双向选择,…...

轻松使用 Python 检测和识别车牌(附代码)

车牌检测与识别技术用途广泛,可以用于道路系统、无票停车场、车辆门禁等。这项技术结合了计算机视觉和人工智能。 本文将使用Python创建一个车牌检测和识别程序。该程序对输入图像进行处理,检测和识别车牌,最后显示车牌字符,作为…...

DVWA—CSRF-Medium跨站请求伪造中级

注意: 1、这里对XSS(Stored)关卡不熟悉的可以从这里去看http://t.csdn.cn/ggQDK 2、把难度设置成 Medium 一、这一关同样我们需要埋下伏笔,诱使用户点击来提交,首先从XSS(Stored)入手。 注意:在前面介绍…...

【电商】后台订单生成

结合商品流转的电商系列介绍了一些了,商品已经采购入库、价格税率设置好了、活动及相关模板也已经准备完毕,下面就应该上架销售了,现在接着聊下订单的生成。 订单从产生到最终的关闭需要经历很多的环节,订单也是电商系统的核心数据…...

作为公司,这个5款在线软件工具赶紧安利起来!

2023年了 ,您的企业还没使用在线软件工具吗?自从用了在线工具之后,感觉打开了新办公世界的大门,效率蹭蹭蹭地往上涨啊。对于喜欢追求效率和便捷的我来说,在线实在是太棒了!今天安利几个非常不错的在线软件工…...

面试(七)为什么一般希望将析构函数定义为虚函数

class B { public:~B() // 基类析构函数不为虚函数{cout << "B::~B()" << endl;} };class D : public B { public:~D(){cout << "D::~D()" << endl;} };void Test(B* t) {delete t;t nullptr; }int main() {B *pb new B;Test…...

MySQL必会四大函数-时间函数

一、时间日期获取函数 获取当前日期&#xff08;date&#xff09;函数&#xff1a;curdate() mysql> select curdate(); 2023-02-09 获取当前时间&#xff08;time&#xff09;函数&#xff1a;curtime() select curtime(); 08:49:27 获取当前时间戳&#xff08;date &…...

震惊!邻桌的程序猿做可视化报告竟然比我还快,带着好奇心我打开了他的电脑,发现惊天秘密,原因竟是...

其实&#xff0c;本文就是想分享一个做可视化的捷径&#xff01; 制作可视化的方式有千千万。 Excel 控若能轻车熟路驾驭 VBA&#xff0c;能玩出各种花来&#xff0c;再不济借助图表插件外援也能秒杀一众小白选 手。 会编程的&#xff0c;Echarts 几十行代码&#xff0c;分分…...

mathtype7与word冲突,无法安装,不显示工具栏的问题解决

首先无法安装&#xff0c;或安装出错时&#xff0c;要清理注册表防止以后再次出现该问题&#xff0c;以此记录留作备份。打开注册表的方法是键盘winr键同时按&#xff08;win就是Alt旁边像窗户图标的键&#xff09;&#xff0c;正常的话会跳出一个叫“运行”的家伙&#xff0c;…...

IBM AIX 升级Openssh 实现篇(编译安装)

升级成功佐证 !!!本文所有内容仅作参考,请在测试环境中具体测试完毕后才能应用于生产环境!!! [1]备份和恢复方案 开启telnet 服务,防止ssh 掉线后无法重连维护。在修复漏洞后关闭telnet。 备份该服务相关的所有文件,以便恢复。 root@TEST:/etc# vi inetd.conf #ftp…...

linux的睡眠框架及实现

睡眠 4 种模式&#xff1a;S2I (Suspend-to-Idle)&#xff1a; 挂起系统&#xff0c;IO进入低功耗模式。需配置CONFIG_SUSPEND。Standby&#xff1a;执行S2I后&#xff0c;把AP (nonboot CPU) 离线。除了CONFIG_SUSPEND的支持外&#xff0c;还需要向suspend子系统注册&#xff…...

Java面试知识点

工作也有好些年了&#xff0c;从刚毕业到前几年看过无数的面试题&#xff0c;总想着自己写一个面试总结&#xff0c;随着自我认识的变化&#xff0c;一些知识点的理解也越来越不一样了。写下来温故而知新。很多问题可能别人也总结过&#xff0c;但是答案不尽相同&#xff0c;如…...

PTA Advanced 1159 Structure of a Binary Tree C++

目录 题目 Input Specification: Output Specification: Sample Input: Sample Output: 思路 代码 题目 Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, a binary tree can be un…...

做网站较好的框架/长沙网站seo诊断

phpStudy在windows上配置php运行环境非常方便&#xff0c;使用简单省心。在本地调试wordpress网站&#xff0c;我就是用phpStudy来配置环境的&#xff0c;可是最近遇到一个烦心的事情&#xff0c;就是phpStudy一直运行良好&#xff0c;突然Apache和MySQL服务就启动不了。故障的…...

嘉祥网站建设多少钱/网络营销以什么为中心

打开文件&#xff0c;路径为 C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallSqlState.sql v2.0.50727 版本根据自己的framework版本选择 ASPState 存放的是.NET 访问的session&#xff0c;避免了session丢失的问题&#xff0c;但是会影响交互的效率转载于:https://w…...

福田网站建设方案服务/百度链接收录提交入口

系统迁移&#xff0c;能够帮我们大大的节约装系统或者数据搬迁的时间。系统迁移其本质是以一个硬盘或者分区为源目标&#xff0c;将其系统、数据文件克隆到另一个硬盘或者分区。DiskGenius、Norton ghost等工具都有克隆硬盘、分区的能力&#xff0c;但是用作系统迁移很麻烦&…...

电商网站管理系统模板下载/整站seo技术搜索引擎优化

本片文章是算法排序系列的第一章&#xff0c;也是我在平台上的第一篇文章&#xff0c;希望自己能够坚持下去&#xff0c;同时本部分算法学习中一定会给出Java或者scala的实现方式(心情好的话也可能是两种语言都有)&#xff0c;好了废话不多说&#xff0c;我们切入正题&#xff…...

威联通nas 做网站/百度 营销中心

答&#xff1a;&#xff0b;文件。 命令的格式为&#xff1a; mcc[-option]fun[fun2...][mexfile1...][mlifile...] 此函数的作用是将matlab程序fun.m转化为c程序fun.c或者c&#xff0b;&#xff0b;程序fun.cpp 转化后的文件默认在当前目录中。 若M文件多于一个&#xff0c;那…...

做推广的网站带宽需要多少钱/关键词优化精灵

给定一个链表&#xff0c;删除链表的倒数第 n 个节点&#xff0c;并且返回链表的头结点。 示例&#xff1a; 给定一个链表: 1->2->3->4->5, 和 n 2. 当删除了倒数第二个节点后&#xff0c;链表变为 1->2->3->5. 说明&#xff1a; 给定的 n 保证是有效…...