apisix实现四层转发

news/2024/11/18 5:53:07/文章来源:https://www.cnblogs.com/haiyoyo/p/18436300

背景

来水一篇文章,其实官网都有,论如何在apisix上实现四层转发

什么是apisix

apisix是动态、实时、高性能的 API 网关,构建于 OpenResty 之上,支持热加载配置、灰度发布、蓝绿部署等功能,同时具有良好的可扩展性和易用性。

管理接口参考

参考:(以2.4版本为例)
https://625a57e513f19e48ae3a4468--old-docs-apache-apisix.netlify.app/zh/docs/apisix/2.4/admin-api/#route

基于tcp协议动态代理

参考:(以2.4版本为例)
https://625a57e513f19e48ae3a4468--old-docs-apache-apisix.netlify.app/zh/docs/apisix/2.4/stream-proxy/

步骤1:激活stream_routes模块

在 conf/config.yaml 配置文件设置 stream_proxy 选项,默认是开启的

apisix:stream_proxy:                 # TCP/UDP proxytcp:                        # TCP proxy address list- 9100

重启服务,使其配置生效
验证模块是否生效:

curl http://xxx.xxx.xxx.xxx:xxx/apisix/admin/stream_routes -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'

步骤2:添加配置

例如:
配置多节点代理,启动本机的1302端口,tcp协议,代理"172.16.10.251:1301","172.16.10.252:1301"
(请求打到本机的1302端口,轮询策略roundrobin,转发到后端的两个节点的1301端口上)
配置如下:

curl 'http://xxx.xxx.xxx.xxx:xxx/apisix/admin/stream_routes/1' \-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' \-H 'Content-Type: application/json;charset=UTF-8' \-X PUT \-d '{"server_port":1302,"upstream":{"nodes":{"172.16.10.251:1301":1,"172.16.10.252:1301":1},"type":"roundrobin"},"plugins":{},"desc":"tcp1301"}' \--compressed \--insecure

响应报文:

{"node":{"createdIndex":121,"value":{"desc":"tcp1301","upstream":{"type":"roundrobin","hash_on":"vars","nodes":{"172.16.10.251:1301":1,"172.16.10.252:1301":1}},"server_port":1302,"id":"1","plugins":{}},"modifiedIndex":121,"key":"\/apisix\/stream_routes\/1"},"action":"set"}

查看配置:

curl 'http://xxx.xxx.xxx.xxx:xxx/apisix/admin/stream_routes/1' -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'

响应报文:

{"node":{"createdIndex":121,"value":{"desc":"tcp1301","upstream":{"type":"roundrobin","hash_on":"vars","nodes":{"172.16.10.251:1301":1,"172.16.10.252:1301":1}},"server_port":1302,"id":"1","plugins":{}},"modifiedIndex":121,"key":"\/apisix\/stream_routes\/1"},"action":"get"}

如果添加错了,删除配置:

curl 'http://xxx.xxx.xxx.xxx:xxx/apisix/admin/stream_routes/1' -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X DELETE

备注

1.修改(和创建一样,指定id=1,PUT正确的报文就行)
2.还有一种创建可以用POST,不指定id,随机生产id。

总结

Restful API 大法好啊

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows环境下的 MySQL 安装与启动

参考网址:菜鸟教程:https://www.runoob.com/mysql/mysql-install.html报错博文:https://blog.csdn.net/weixin_72700368/article/details/1397846961. 下载 MySQLWindows 上安装 MySQL 相对来说会较为简单,最新版本可以在 MySQL 下载 中下载中查看(更详细安装:Windows 上…

山海鲸可视化 VS PowerBI,中外免费报表软件对比

在数据分析与可视化的时代,选择合适的报表工具显得尤为重要。山海鲸可视化和PowerBI是市场上颇受欢迎的两款免费报表软件,各有特色。接下来,我们将从功能、优缺点等方面进行对比,帮助你找到最适合的工具。 山海鲸可视化 山海鲸可视化是一款国内自主研发的报表工具,专注于用…

Crypto工具与算法

参考博客: https://lazzzaro.github.io/2020/05/10/crypto-crypto常用工具/ https://bbs.kanxue.com/thread-266504.htm https://lazzzaro.github.io/2020/05/10/crypto-crypto常用算法/工具 以windows为主python中import gmpy2与from gmpy2 import *的区别 import gmpy2 gmpy…

记录一次Apache2.4启动PHP的Curl扩展不成功的问题

引用该文 常规办法都用了,无效! 我使用的apache和php都是解压缩版,平常都直接配置使用了,今天换了台电脑突然不行了。 最后,将php.exe加入path解决。日!hello,world~~~

9460-8i raid卡 固件升级指导

1、上传压缩包到目标服务器(RAID-9460-8i-3508-FW-5.220.00-3710.zip)2、unzip解压压缩包(如果服务器没有unzip命令需要自行在笔记本解压后上传整个目录) 实现如下命令进行升级,耗时大概2-3分钟 sh install.sh upgrade 重启服务器即可; reboot 3、检验是否升级成功 可以通…

CF1919E

给定长度为 \(n\) 的数列 \(p\),求有多少个长度为 \(n\) 的数列 \(a\) 满足:\(\forall i\in[1,n],|a_i|=1\);其前缀和数组排序后恰为数列 \(p\)。\(\sum n\leq 5000\)。这个题真的抽象,还是先不管了。Conclusion用折线图观察操作。自定义统一操作生成最终答案。题外话:感觉…

信息学奥赛复赛复习05-CSP-J2020-01优秀的拆分-对数函数、自然对数、以2为底的对数、幂函数、打表

PDF文档公众号回复关键字:202409271 2020 CSP-J 题目1 优秀的拆分 [题目描述] 一般来说,一个正整数可以拆分成若干个正整数的和 例如,1=1,10=1+2+3+4 等。对于正整数 n的一种特定拆分,我们称它为“优秀的”,当且仅当在这种拆分下,n被分解为了若干个不同的 2 的正整数次幂…

【蓝桥杯】“萌新首秀”全国高校新生编程排位赛2

1.世上有10种人 题目 世上有10种人 代码#include using namespace std; int main() {cout<<2;return 0; }2.01切换 题目 01切换 题目分析 直接判断字符串最后一个字符是0还是1就好了 代码#include using namespace std; int main() {string str;cin>>str;int l =…

Avalonia如何与通用主机Host集成实现MsDI

如果想在Aavalonia使用IOC,目前我能想到的就是使用Prism或者是MsDI,Prism内部使用的是DryIoc,这个和WPF几乎没什么差别,那如果我想使用微软实现的Ioc呢,也是可以的,实现方式其实很简单,就是使用IHost,其中依赖有两个库 Microsoft.Extensions.DependencyInjectionMicros…

软工第一次结对作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13261这个作业的目标 学习使用原型软件,辅助完成软件工程的前期任务学号 102201137结对成员学号 102201137 102201237原型链接 https…

C#爬取动态网页上的信息:B站主页

目录简介获取 HTML 文档解析 HTML 文档测试参考文章 简介 动态内容网站使用 JavaScript 脚本动态检索和渲染数据,爬取信息时需要模拟浏览器行为,否则获取到的源码基本是空的。爬取步骤如下:使用 Selenium 获取渲染后的 HTML 文档 使用 HtmlAgilityPack 解析 HTML 文档新建项…

基于 LangChain 的自动化测试用例的生成与执行

在前面的章节中,分别介绍了 Web、App、接口自动化测试用例的生成。但是在前文中实现的效果均为在控制台打印自动化测试的用例。用例需要手动粘贴,调整之后再执行。 那么其实这个手动粘贴、执行的过程,也是可以直接通过人工智能完成的。 应用价值通过人工智能代替人工操作的部…