Kong集群(hybrid混合)部署模式

Kong集群(hybrid混合)部署模式kong集群部署与promethues指标采集

大家好,又见面了,我是你们的朋友全栈君。

一.简介

        上一篇文章简单入门和了解到了Kong自定义插件开发方式。紧跟着,这篇主要介绍Kong集群部署模式。生产环境/流量较大的环境下,我们的Kong就要解决单点问题和性能问题,单个Kong节点无法满足我们高并发、高访问量的需求。那么我们自然想到,Kong自身有提供集群部署模式么?答案是肯定的。

          如果Kong自身没有提供集群模式,那么我们也可以自己通过负载均衡的模式,在前端架设一个高可用的7层入口代理Nginx(例如阿里云的ALB、腾讯的SLB等等),再反向代理到后端每个Kong结点,理论上也是可行的。 但是我们要考虑到一个问题,Kong每个节点的配置信息可能是存在缓存更新问题,通过LB虽然可以分摊访问压力,但是配置信息的及时更新又造成新的问题。例如A节点更新了某个route配置,但是此时新的流量跑到了B节点,B节点的配置还未及时更新,导致执行到旧的逻辑等等此类问题。

        所以,看起来仅仅我们用LB负载均衡的方式来实现,是不太完美的。那我们看看Kong自身是如何来解决这个集群问题的.

        Kong将节点分为2种角色:

        1.数据平面节点(Data Panle, 简称DP节点)

        2.控制平面节点(Control Panle ,简称CP节点)

        实现架构原理还跟版本不一样, 1.x版本是DP、CP节点通过共享PgSQL数据库和定时更新缓存来更新配置信息, 2.x版本则是所有DP节点的配置信息都依赖CP节点,CP节点依赖PgSQL数据库,保证配置信息统一及时更新的问题(大致看了一下,应该是通过websocket的方式来实现配置同步)。

二.1.x版本集群-实现原理

1.原理介绍

        多个Kong节点连接同一个PgSQL数据库,定时从数据库读取拿到配置信息(Route、Service、Upstream、Target)等等,然后缓存到自己的内存中。

        优点:  
                部署简单,只要Kong都连接一个PgSQL数据库即可

        缺点:  
                Config配置信息同步不及时,例如A节点同步删除了一个Route,但是B节点还没去轮询DB拿到新的Config数据,则导致信息同步延迟落后,导致B节点访问出现错误.

2.架构图  Kong集群(hybrid混合)部署模式

三.2.x版本集群-实现原理 

1.原理介绍

        所有的DP节点连接同一个CP节点的8005端口来读取Config配置信息并且可以进行缓存。如果CP节点改变了配置信息,DP节点能及时拿到更新消息,对自己的缓存进行更新.(实现原理:  websocket)

        优点:

                1.消息同步及时,无延迟。规避了1.x版本同步Config配置不及时的问题.无须配置PgSQL相关信息,只需要配置CP节点连接ip与端口即可。

        缺点:

                1.配置相对于1.x版本门槛较高,需要设置几个配置项。才能让DP节点连接到CP节点,协助搭建成集群为外部提供服务。

2.架构图

Kong集群(hybrid混合)部署模式

四.集群模式-Promethues指标采集问题

        大家可能会发现部署完Kong集群之后,相对于查看或者部署单个节点时候,采集Prometheus指标的方式明显发生了变化。 如果我们部署单个节点的Kong,利用Grafana官方的dashbord可以明显查看到流量信息、service信息、route、upstream等等信息。但是如果采用集群模式部署以后,CP节点(ip:8001/metrics)只采集到集群信息了。但是此时我们想查看整个集群的流量信息,那我们该怎么采集呢? 访问DP节点(ip:8001/metrics)也不能访问,那怎么搞?

        1.采集CP节点指标

                1.添加全局Promethues插件

                2.访问ip:8100/metrics即可采集CP节点信息。

                如果此时是单个Kong节点模式,则采集到的是Data数据,不存在集群相关信息。如果是集群模式,则采集的是集群信息,不包含route、upstream、target等数据信息。

        2.采集DP节点指标

                1.添加全局Promethues插件

                2.修改配置文件,开启 status_listen=0.0.0.0:8100 配置项. kong prepare && kong reload重启后,  访问ip:8100/metrics则可以拿到数据节点的指标信息.

                因为此时是【集群模式】,DP和CP节点责任分离,DP节点自然不会开启8100端口(admin api管理端口)的监听,访问ip:8100/metrics肯定是失败的。 这里估计会懵逼很多人,有坑。要不然是采集不到DP节点的相关指标信息的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153163.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • double转bigDecimal精度问题

    double转bigDecimal精度问题double转bigDecimal精度问题需要用到bigDecimal的字符串构造来转float的精度:2^237位double的精度:2^5216位十进制转二进制存在精度差doubleg=12.35;BigDecimalbigG=newBigDecimal(g).setScale(1,BigDecimal.ROUND_HALF_UP);//…

    2022年6月4日
    163
  • 基于Opencv快速实现人脸识别(完整版)

    基于Opencv快速实现人脸识别(完整版)上篇博客:https://blog.csdn.net/beyond9305/article/details/92844258严格来说标题是有误的,只是单纯地对人脸进行了检测,而并非识别,opencv内置了检测分类器和识别器,这二者还是有很大不同的。这次进一步地研究这一块的知识,来一波真正意义上的人脸识别,查询的资料可能有点过时,但基本思想是没有毛病的,对一些函数也进行了更新,保证了功能的正常实…

    2022年6月7日
    35
  • IDEA2021 MAC激活码_最新在线免费激活

    (IDEA2021 MAC激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~0U…

    2022年3月28日
    53
  • 教你二分钟入侵一个网站_入侵网站工具

    教你二分钟入侵一个网站_入侵网站工具作者:Firefox   文章来源:火狐技术联盟说起流光、溯雪、乱刀,可以说是大名鼎鼎无人不知无人不晓,这些都是小榕哥的作品。每次一提起小榕哥来,我的崇拜景仰就如滔滔江水,连绵不绝~~~~(又来了!)让我们崇拜的小榕哥最新又发布了SQL注入工具,这回喜欢利用SQL注入入侵网站的黑友们有福了。小榕哥的工具就是强!偶用它来搞定我们本地的信息港,从寻找注入漏洞到注入攻击成功,通过准确计时,总共只用了

    2025年6月16日
    4
  • 远程桌面由于以下原因之一无法连接到远程计算机

    远程桌面由于以下原因之一无法连接到远程计算机由于计算机与远程服务器之间设置端口防护,阻断了远程连接默认的3389端口,出现以下问题,需要修改远程连接端口:1、登录远程连接服务器,修改注册表。1):开始->附件->运行/或快捷键win+R组合键,win就是键盘上的windows系统图标键。找到运行对话框。2):在对话框中输入regedit命令,打开注册表编辑器3):按照…

    2022年5月14日
    135
  • 实现labelme批量json_to_dataset方法

    实现labelme批量json_to_dataset方法labelme可以帮助我们快速的实现Mask-RCNN中数据集json文件的生成,然而还需要我们进一步的将json转成dataset,可以直接在cmd中执行labelme_json_to_dataset.exeC:\Users\Administrator\Desktop\total\1.json(路径),但是这个过程需要我们一个json文件的生成,过程很慢。一、打开abelm…

    2022年9月11日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号