深入理解API网关Kong:动态负载均衡配置

深入理解API网关Kong:动态负载均衡配置

背景

在 NGINX 中,负载均衡的配置主要在 upstream 指令中进行。upstream 指令用于定义一个服务器群组和负载均衡方法。客户端请求在这个服务器群组中进行分发。

NGINX 提供了以下几种负载均衡方法:

  1. 轮询(round-robin):这是默认的负载均衡方法,每个请求按照时间分发,从第一个服务器开始,直到最后一个,然后重新开始。

  2. 最少连接(least_conn):这种方法优先分发给当前活动连接数最少的服务器。

  3. IP 散列(ip_hash):每个请求的分发根据客户端 IP 地址的 hash 结果进行。这样,来自同一个 IP 的客户端会总是连接到同一个服务器,除非该服务器不可用。

  4. 基于权重(weight):你可以在每个 server 指令后添加一个 weight 参数,用来调整该服务器的权重。权重越大,分配到的请求越多。

以下是一个简单的例子,展示如何配置一个使用轮询方法的负载均衡:

http {upstream backend {server backend1.example.com;server backend2.example.com;server backend3.example.com;}server {listen 80;location / {proxy_pass http://backend;}}
}

在这个例子中,我们定义了一个名为 backend 的服务器群组,其中包含三个服务器:backend1.example.combackend2.example.combackend3.example.com。NGINX 将按照轮询方法在这三个服务器之间分发请求。

这是一个带权重的轮询负载均衡配置的例子:

http {upstream backend {server backend1.example.com weight=3;server backend2.example.com;server backend3.example.com;}server {listen 80;location / {proxy_pass http://backend;}}
}

在这个例子中,backend1.example.com 的权重为 3,而其他两个服务器的权重默认为 1。因此,backend1.example.com 将接收到大约三倍于其他服务器的请求。

但这种使用nginx配置的方式,其实是比较麻烦的是静态的,每次改完配置都要重启nginx服务(当然nginx也可以动态就是比较麻烦)。

Kong动态负载均衡

kong就解决了这个问题,可以动态配置且无需重启。接下来就介绍kong如何配置动态负载均衡,用konga可视化配置。

使用http接口操作

设置upstreams

Kong 通过 Upstream 和 Target 实体来提供负载均衡功能。Upstream 对象表示一个可以路由 HTTP 请求的虚拟主机。Target 则是 Upstream 的成员,即实际的服务器。

以下是如何使用 Kong Admin API 创建和配置 Upstream 的步骤:

创建一个 Upstream:

$ curl -X POST http://localhost:8001/upstreams \--data "name=example-upstream"

在这个例子中,我们创建了一个名为 “example-upstream” 的 Upstream。

添加 Target 到 Upstream:

$ curl -X POST http://localhost:8001/upstreams/example-upstream/targets \--data "target=example.com:80" \--data "weight=100"

这个例子将一个新的 Target(example.com:80)添加到了我们刚才创建的 “example-upstream” Upstream。Target 的权重被设定为 100,权重值越高,该服务器处理的流量就越多。

更新一个 Upstream:

$ curl -X PATCH http://localhost:8001/upstreams/example-upstream \--data "slots=500"

在这个例子中,我们更新了 “example-upstream” Upstream 的 slots 值。slots 是一个可选参数,用于设置 Upstream 的一致性哈希轮询算法的大小。

删除一个 Upstream:

$ curl -X DELETE http://localhost:8001/upstreams/example-upstream

这个例子将删除我们之前创建的 “example-upstream” Upstream。

以上就是在 Kong 中设置 Upstream 的一般步骤。

设置services

在 Kong 中,Service 是你想代理的上游 API 或者微服务的抽象。你可以使用 Kong 的 Admin API 来创建和配置服务。

以下是使用 Kong Admin API 创建和配置 Service 的基本步骤:

创建一个 Service:

$ curl -i -X POST \--url http://localhost:8001/services/ \--data 'name=example-service' \--data 'url=http://example.com'

这个例子创建了一个名为 “example-service” 的 Service,代理的 URL 是 http://example.com

更新一个 Service:

$ curl -i -X PATCH \--url http://localhost:8001/services/example-service \--data 'url=http://new-example.com'

这个例子更新了 “example-service” Service 的 URL,新的 URL 是 http://new-example.com

删除一个 Service:

$ curl -i -X DELETE \--url http://localhost:8001/services/example-service

这个例子删除了 “example-service” Service。

设置route

在 Kong 中,Route 是请求的入口,将接入的请求路由到指定的 Service。每个 Route 都必须关联到一个 Service,这个 Service 可以是 Kong 本地的,也可以是外部的。每个 Service 可以有多个 Route。

以下是使用 Kong Admin API 创建和配置 Route 的基本步骤:

创建一个 Route 并关联到 Service:

$ curl -i -X POST \--url http://localhost:8001/services/example-service/routes \--data 'paths[]=/testpath'

在这个例子中,我们创建了一个新的路由,并将其关联到了 “example-service” Service。当请求的路径为 “/testpath” 时,请求将被路由到 “example-service”。

更新一个 Route:

$ curl -i -X PATCH \--url http://localhost:8001/routes/{route_id} \--data 'paths[]=/newpath'

在这个例子中,我们更新了路由的路径。新的路径是 “/newpath”。请将 {route_id} 替换为你想更新的路由的 ID。

删除一个 Route:

$ curl -i -X DELETE \--url http://localhost:8001/routes/{route_id}

在这个例子中,我们删除了指定的路由。请将 {route_id} 替换为你想删除的路由的 ID。

路由的匹配可以基于多个条件,如主机名(host)、路径(path)、HTTP 方法(method)和客户端 IP 地址等。你可以根据需要配置这些条件。

使用konga页面操作

这里以代理一个后台接口为例(http://192.168.100.22:8888/swagger-resources):

image-20230604223527773

设置upstreams

如图所示,选择左侧菜单的UPSTREAMS,点击CREATE UPSTREAM创建upstreams

image-20230604221835167

create upstream

image-20230604222417700

点击detals

image-20230604222528226

image-20230604222609301

设置targets

image-20230604222635309

image-20230604222654029

设置services

image-20230604223051728
image-20230604223109356

设置route

image-20230604223136456

设置paths的时候记得回车

image-20230604223233249

效果

代理前的地址:

image-20230604223749565

代理后的地址:

image-20230604223828687

到这证明我们的代理生效了!

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

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

相关文章

图论与算法(4)图的深度优先遍历应用

1. 无向图的联通分量个数 1.1 联通分量个数 无向图的联通分量个数是指图中无法通过边连接到其他分量的顶点集合的个数。可以通过深度优先搜索或广度优先搜索来计算无向图的联通分量个数。 1.2 记录联通分量 (1)多个联通量的数: 7 6 0 1 0…

linux 应用程序 键盘,在Linux下安装Noted:适用于Linux的键盘驱动的笔记应用程序...

得益于Pop!_OS 20.04和Regolith Linux之类的发行版,键盘驱动的台式机环境逐渐风行一时。Noted是一个新的笔记应用程序,可在Linux和macOS上免费使用,该应用程序是受Notational Velocity(流行的macOS开源笔记记录应用程序)启发的,其…

xheditor可视化富文本编辑器

简洁易用的基于jQuery的富文本编辑器xheditor从CSDN上已经改版退出了,新版的Markdown编辑器将原版的编辑文章相关SEO的设置也设为自动获取了,总的感觉现在的编辑器没有原来那么方便了。本文来自http://xheditor.com/,纪念在CSDN上用过感觉最好…

Guitar Pro中文版免费激活注册机码V2021.20.7下载地址问题疑难解答

很多玩音乐的小伙伴都有一个共同的难题,目前很多编曲软件都是由国外引进来的,自然是以英文版为主,那作为国人的我们使用起来自然就不是那么容易,当然技术在更新,这个问题自然也是要有解决的方案的,今天小编…

好用的Mac窗口管理器:Rectangle for Mac

Rectangle Mac中文版是一个基于Spectacle应用程序的开源窗口管理器,用Swift编写,能够使用键盘快捷键移动窗口并调整其大小。Rectangle mac中文免费版适用于绝大数应用,并拥有维护良好的开源库,持续更新.欢迎大家下载体验Rectangle mac窗口管理器 Spectac…

Affinity Photo for Mac中文破解版永久激活方法

Affinity Photo for Mac中文破解版是一款可以和PS媲美的专业修图软件,专为Mac用户设计,affinity photo中文版采用最佳 PSD支持技术,支持您需要的所有图片处理调整和修改的功能,是一款非常不错的专业图像编辑软件。小编现为大家带来…

toad 连接mysql8.0_toad for mysql免费版

MySQL是一种关系型数据库, 想对其进行专业的管理就来下载toad for mysql免费版吧! 它是一款非常好用MySQL数据库管理工具, 它能够帮助我们更加有效的编写SQL语句. 拥有自动执行数据库对象、版本控制集成、宏记录和回放等超多功能, 需要就来下载toad for mysql免费版吧! toad fo…

iStat Menus 6 for Mac中文破解版激活方法无需激活码

iStat Menus 6 Mac 中文破解版是Mac OS平台上十分优秀的一款系统与硬件监控软件,通过istat menus for mac 我们可以实时掌握自己的Mac电脑情况,可以查看硬件温度、查看即时网速、显示CPU使用率等等,非常实用。小编现为大家带来istat menus ma…

3dsmax记录

title: 3dsmax记录 categories: 3dsmax tags: [max, ta, 记录] date: 2018-06-02 14:16:18 comments: false 3dsmax记录,我的通神之路 前篇 3D MAX 2016从入门到精通视频教程 - https://www.bilibili.com/video/av39501981/?p82Autodesk 3dsMax 2018中文汉化破解版…

Audition CC 2019 for Mac中文破解版永久激活方法附破解补丁

Adobe Audition CC 2019 for Mac中文破解版全新上线,这是Adobe公司出品的一款专业数字音频编辑软件,提供先进的音频混音、编辑和效果处理功能,专为音频和视频专业人员设计。新版audition cc 2019 增加降噪和减少混响效果,多轨剪辑…

[科普]为什么360会报键盘记录

转自:http://blog.xunleihd.com/360.html 本文只用了比较浅显的实验方法解释为什么破解版会被报风险,不深入讨论杀毒原理,我也并没有对360真实原理做过深入分析,感谢kpdd的指正。 做一个实验1、下载官方原版迅雷7.9.6.4502安装2、…

bartender 10.1破解版|bartender条码打印10.1

点击下载出处:BarTender10.1破解版 bartender10.1破解版是一款专业的条码打印软件,在行业内广受好评,通过使用bartender我们可以将标签设计这个复杂的过程变得更简便,在设计中快速调整,即刻打印,非常迅速&…

隐形的监控——无线键盘侦听

在用户使用计算机时,键盘是信息输入的主要媒介,键盘输入包含大量的私人机密信息,包括帐号密码等,所以键盘侦听被各种攻击者所大量采用,成为一种普遍但是破坏力强大的攻击方式。键盘侦听主要通过键盘记录器来实现&#…

httpwatch professional 破解版v9.4.17

httpwatch 是一款功能非常强大的网页数据分析工具,它拥有缓存管理、数据和目录管理、消息头发送/接受、字符查询.POST、Cookies管理等功能,并且他还不需要代理服务器或一些复杂的网络监控工具就能够非常轻松的显示网页请求和回应的日志信息,…

BCGControlBar库专业版,完整记录的MFC扩展类

BCGControlBar库专业版,完整记录的MFC扩展类 BCGControlBar Library Professional (BCGControlBar Pro MFC) 是一个 MFC 扩展库,包含 300 多个经过精心设计、测试和完整记录的 MFC 扩展类,例如功能区、工具栏、菜单、控件以及自定义和可视化,…

things 3 mac 破解版永久激活方法

Things3 for Mac破解版是目前Mac平台上最好的任务管理应用程序,使用简单易用,而且设计美观。things3 mac 破解版功能强大具有工作安排,日志簿,任务管理,日程管理等实用功能,让用户可以更好的管理个人任务。…

键盘输入保护器:KeyScrambler

创新技术屏蔽数字资产 KeyScrambler 开创性的击键加密技术可在 Windows 操作系统、所有浏览器和数百个关键应用程序中实时深入地保护用户键入的信息。 值得信赖的软件让用户安心 KeyScrambler 已经被世界各地的专家、博主和用户测试和使用了 16 年,并被证明对最阴险…

python你TM太皮了——区区30行代码就能记录键盘的一举一动

先看看效果 Like This↓ 一、公共WiFi 公用电脑什么的 在我们日常在线上工作、玩耍时,不论开电脑、登录淘宝、玩网游 统统都会用到键盘输入 在几乎所有网站,例如淘宝、百度、126邮箱等等 为了保护用户信息 登录时,输入框都是不可见的。…

Android设备新型恶意软件,融合银行木马、键盘记录器和移动勒索软件等功能

2019独角兽企业重金招聘Python工程师标准>>> 网络犯罪分子目前正在开发一种针对Android设备的新型恶意软件,它融合了银行木马、键盘记录器和移动勒索软件的功能。 根据来自ThreatFabric的安全研究人员称,这个恶意软件名为MysteryBot&#xff…

ROS:古月居第一次作业(话题与服务编程、动作编程、TF编程)

一.话题与服务编程 话题与服务编程:通过代码新生一只海龟,放置在(5,5)点,命名为“turtle2”;通过代码订阅turtle2的实时位置并打印在终端;控制turtle2实现旋转运动; demo_turtle.l…