Kong工作原理 - 负载均衡 - 基于DNS的负载均衡

这篇具有很好参考价值的文章主要介绍了Kong工作原理 - 负载均衡 - 基于DNS的负载均衡。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Kong提供多种请求负载均衡到多个后端服务的方式:默认的基于DNS的方法,以及使用Upstream实体的一组高级负载均衡算法。

默认情况下启用DNS负载均衡器,仅限于循环调度负载均衡。Upstream实体还具有健康检查和断路器功能,除了更高级的算法,如最小连接数、一致性哈希和最低延迟。

根据您的基础设施,请参考相应的DNS注意事项。

每个使用主机名(而不是IP地址)定义的服务,如果该名称解析为多个IP地址,将自动使用基于DNS的负载均衡。

DNS记录的ttl设置(存活时间)决定了信息刷新的频率。当使用ttl为0时,每个请求将使用自己的DNS查询进行解析。显然,这会带来一定的性能损耗,但更新/更改的延迟将非常低。

所使用的循环调度算法(是否加权)取决于主机名的DNS记录类型。

A记录

A记录包含一个或多个IP地址。因此,当主机名解析为A记录时,每个后端服务必须有自己的IP地址。

由于没有权重信息,负载均衡器将平等对待所有条目,并进行简单的循环调度。

SRV记录

SRV记录包含所有IP地址的权重和端口信息。后端服务可以通过IP地址和端口号的唯一组合进行标识。因此,单个IP地址可以在不同的端口上承载多个相同服务的实例。

SRV记录还具有优先级属性。Kong只会使用具有最高优先级的条目,并忽略其他所有条目(请注意,SRV记录中的“最高优先级”实际上是具有最低优先级值的记录)。

因为可用权重信息,每个条目在负载均衡器中都会有自己的权重,并进行加权循环调度。

类似地,任何给定的端口信息都将被DNS服务器的端口信息覆盖。如果一个服务具有主机属性为myhost.com和端口属性为123,并且myhost.com解析为一个带有127.0.0.1:456的SRV记录,那么请求将被代理到http://127.0.0.1:456/somepath,因为端口123将被456覆盖。

DNS注意事项
  • Kong将信任域名服务器。这意味着通过DNS查询检索到的信息将比配置的值具有更高的优先级。这主要涉及到携带端口和权重信息的SRV记录。
  • 每当DNS记录刷新时,会生成一个列表来正确处理权重。为了保持算法的性能,尽量将权重保持为它们的倍数,例如,17和31的2个权重将导致结构中有527个条目,而16和32的权重(或者它们最小的相对项1和2)将导致结构中仅有3个条目。这在非常小(甚至为0)的ttl值下尤其重要。
  • DNS使用默认限制为512字节的UDP进行传输。如果要返回的条目很多,DNS服务器将以部分数据进行响应,并设置截断标志,表示有更多未发送的条目。DNS客户端,包括Kong,将通过TCP发起第二个请求来检索完整的条目列表。
  • 一些域名服务器默认情况下不会响应截断标志,而是将响应修剪为在512字节UDP大小以下。
    • Consul是一个示例。在其默认配置中,Consul仅返回前三个条目,并且不设置截断标志来指示还有剩余的未发送条目。Consul提供了一个选项来启用截断标志。
  • 如果部署的域名服务器没有提供截断标志,那么上游实例的负载可能会不一致。由于域名服务器提供的信息有限,Kong节点实际上对某些实例不知情。为了缓解这个问题,可以使用一个不同的域名服务器,使用IP地址而不是名称,或者确保使用足够多的Kong节点以保持所有上游服务的使用状态。
  • 当域名服务器返回一个“3 Name Error”的错误时,这对于Kong来说是一个有效的响应。如果这是意外的情况,首先验证查询的名称是否正确,其次检查域名服务器的配置。
  • 在DNS记录(A或SRV)中,初始选择的IP地址不是随机的。因此,在使用TTL为0的记录时,预期域名服务器会对记录条目进行随机排序。 

 文章来源地址https://www.toymoban.com/news/detail-823733.html

到了这里,关于Kong工作原理 - 负载均衡 - 基于DNS的负载均衡的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 开源的API Gateway项目- Kong基于OpenResty(Nginx + Lua模块)

    Kong 是一个在 Nginx 内运行的开源 API 网关和微服务抽象层。它是用于处理 API 流量的灵活、可扩展、可插入的工具。 Kong 提供了以下功能: 用户登录 :Kong 提供了多种认证插件,像 JWT、OAuth 2.0 等,可以满足用户登录需求。 Token 管理 :使用上述认证插件,Kong 可以有效地管理

    2024年01月23日
    浏览(31)
  • Nginx、Kong、Apisix、Gateway网关比较

    Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。能够支撑 5 万并发链接,并且 cpu、内存等资源消耗却非常低,运行非常稳定,由C语言编写。支持负载均衡、限流熔断、热部署、安全认证等。 应用场景 http 服务器:独立提供 http 服务,用于

    2024年02月14日
    浏览(25)
  • Kong网关初次尝试

    本次目的:研究市面上的API网关 Docker  部署 : 1. postgre 2. kong migrations bootstrap 3. kong 问题是migrations时会报lua的错误,后面调研一下。 1. 注册一个service,指定服务的ip 端口等信息。 2. 设定一个路由发现方式,支持path、method、host,这里先用最简单的path。创建了路由test指定了

    2024年01月25日
    浏览(31)
  • Kong网关概述

    介绍Kong网关 Kong Gateway是一个轻量级、快速且灵活的云原生API网关。API网关是一个反向代理,可以管理、配置和路由对API的请求。 Kong Gateway在任何RESTful API的前面运行,并且可以通过模块和插件进行扩展。它被设计用于在分散式架构中运行,包括混合云和多云部署。 通过Kon

    2024年01月23日
    浏览(29)
  • Kong关键概念 - Upstreams

    Upstream是指Kong Gateway转发请求到的API、应用程序或微服务。在Kong Gateway中,Upstream 对象代表了一个虚拟主机名,并可以用于对多个服务进行健康检查、断路器和负载均衡。 Upstream 和 service 交互 您可以将服务配置为指向一个Upstream,而不是一个主机。例如,如果您有一个名为

    2024年01月24日
    浏览(25)
  • Docker安装Kong

    首先我们创建一个 Docker 自定义网络,以允许容器相互发现和通信。在下面的创建命令中 kong-net 是我们创建的 Docker 网络名称。 Kong 目前使用 Cassandra 或者 PostgreSQL,你可以执行以下命令中的一个来选择你的 Database。请注意定义网络 --network=kong-net 。 使用 PostgreSQL: 我们使用 d

    2024年02月06日
    浏览(22)
  • Kong 服务和路由的添加

    这里参考DB-less-Mode,因为使用的是 yaml 配置文件的形式,所以所有的相关配置只需要往初始化的 kong.yml 文件中添加就可以了,就像nginx的配置文件 DB-less-Mode vim /etc/kong/kong.yml Response: 我们可以在kong的 8000 端口后加上路由后缀 /test-service 查看服务是否正常 这里由于项目路径原因

    2024年02月16日
    浏览(27)
  • Kong关键概念 - 路由(Routes)

    路由(Routes) 路由决定在请求到达Kong Gateway之后如何(以及是否)将其发送到其服务。服务代表后端API,而路由定义了对客户端暴露的内容。 一个单独的服务可以有多个路由。一旦匹配到路由,Kong Gateway会将请求代理到其关联的服务。 路由与服务的交互 路由与服务结合使用

    2024年01月23日
    浏览(25)
  • Kong关键概念 - 服务(Services)

    服务(Services) 在Kong Gateway中,服务是代表外部上游(upstream)API或微服务的实体。例如,数据转换微服务、计费API等。 服务的主要属性是其URL。您可以使用一个字符串来指定URL,或者通过分别指定其协议、主机、端口和路径来指定URL。 服务与路由的交互 服务与路由结合使

    2024年01月23日
    浏览(24)
  • kong-dashboard安装

    简介 kong-dashboard提供了UI界面操作和查看kong,可以进行api、consumers、plugins操作 官网:https://hub.docker.com/r/pgbi/kong-dashboard/ 安装 联网安装 备份后安装到使用环境 启动 界面 通过页面http://localhost:8080可以进行新增、修改、删除操作,如果只是基础的使用感觉够了。 API界面

    2024年02月13日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包