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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jenkins自定义构建参数_git怎么切换分支

    jenkins自定义构建参数_git怎么切换分支前言当我们的自动化项目越来越多的时候,在代码仓库会提交不同的分支来管理,在用jenkins来构建的时候,我们希望能通过参数化构建git仓库的分支。下载安装GitParameter插件系统管理-

    2022年7月31日
    62
  • 打印纸张尺寸换算_各种打印纸的尺寸是多少?「建议收藏」

    打印纸张尺寸换算_各种打印纸的尺寸是多少?「建议收藏」展开全部常用打印纸尺寸为:A4(16k)297mm×210mm;A5(32k)210mm×148mm;A6(64k)144mm×105mm;A3(8k)420mm×297mm。按照尺寸的大小,通常62616964757a686964616fe4b893e5b19e31333431343738分三种类型:大型开本、中型开本和小型开本。以787×1092的纸来说,12开以上为大型开本,16~36开为…

    2022年6月20日
    65
  • Fiddler+夜神模拟器进行APP抓包

    Fiddler+夜神模拟器进行APP抓包Fiddler+夜神模拟器进行APP抓包作者:霞落满天需求:对公司APP进行抓包获取详细的接口信息,这是现在开发必备的。工具:Fiddler抓包,夜神模拟器模拟手机安装APP1.下载Fiddlerhttps://www.telerik.com/download/fiddlerFiddler正是在这里帮助您记录计算机和Internet之间传递的所有HTTP和HTTPS通信…

    2022年5月7日
    104
  • mapminmax 用法[通俗易懂]

    mapminmax 用法[通俗易懂]mapminmax是MATLAB实现归一化的工具包,默认:(1)将矩阵的每行分别进行归一化;(2)每行的最大值最小值作为每行归一化的xmin和xmax;(3)将数据归一化到[-1,1].若要将数据归一化到0到1之间,即y∈[0,1],使用b=mapminmax(a,0,1);若给与确定的最大值和最小值作为每行的xmin和xmax,使用:b= mapminmax(a,0,1);PS.xmin…

    2022年6月30日
    34
  • ps中旋转复制_ps为什么旋转复制不了

    ps中旋转复制_ps为什么旋转复制不了步骤:1.画一个圆形,确定圆的中心点;2.画一个小矩形用黑色箭头(路径选择工具)选中小矩形–Ctrl+Alt+T(选中并复制)–按住Alt键在圆形中心单击(确定旋转的中心点)在工具栏中输入

    2022年8月3日
    25
  • vue详解_vue 入门

    vue详解_vue 入门Vuex是做什么的?官方解释:Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex

    2022年7月29日
    6

发表回复

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

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