Kong网关

一、kong网关核心概念

1. Upstream

upstream 对象表示虚拟主机名,可用于通过多个服务对传入请求进行负载远的

2. Target

目标ip地址/主机名,其端口表示后端服务的实例。每个上游都可以有多个Target,并且可以动态添加Target。

3. Service

服务实例是每个上游服务的抽象。服务的主要属性是它的URL,其可以被设置为单个串或者通过指定其protocol,host,port和path。服务与路由相关联(服务可以有许多与之关联的路由)。路由是kong的入口点,并定义匹配客户端请求的规则。一量匹配路由,kong就会将请求代理到其关联的服务。

4. Route

路由实体定义规则以匹配客户端的请求,每个Route与一个Service相关联,一个服务可能有多个与之关联的路由。与给定路由匹配的每个请求都将代理到其关联的Service上。可以配置的字段有:

  • hosts
  • paths
  • methods

Service和Route的组合提供了一种强大的路由机制,通过它可以在kong中定义细粒度的入口点,从而使基础架构路由到不同上游服务。

5. Consumer

Consumer 对象表示服务的使用者或者用户,你可以依靠kong作为主数据库存储,也可以将使用者列表与数据库映射,以保持Kong与现有的主数据存储之间的一致性。

6. Plugin

插件实体表示将在httpygfi/响应生命周期执行的插件配置。它是为在kong后面运行的服务添加功能的。

将插件配置添加到服务时,客户端向该服务发出的每个请求都将运行所述插件。如果某个特定消费者需要将插件调整为不同的值,你可以通过 创建一个单独的插件实例,通过service和consumer字段指定服务和消费者。

对应关系

Upstream : target -> 1:n

Service:Upstream -> 1:1 or 1:0 (service 可以直接指向具体的Target,相当于不做负载均衡)

Service:Route -> 1:n

Client 请求的流量通过Route指向与之相关的Service,如果配置插件的话就会作用插件,Service接到流量后给到相应的Upstream的服务上面。

二、kong API操作

配置服务

通过向Admin发送Http请求来向Kong添加服务

{
"connect_timeout":60000,
"created_at":1587869247,
"host":"test-service.com",
"id":"dddddddddddddddddddddddddddd",
"name":"test-service",
"path":"/",
"port":80,
"protocol":"http",
"read_timeout":60000,
"retries":5,
"updated_at":1587869247,
"write_timeout":60000
}

url参数是一个简化参数,用于一次性添加protocol,host,port和path。

路由匹配规则

现在让我们讨论kong如何匹配针对路由的已配置host,path和methods属性的请求。请注意,所有这三个字段都是可选的,但必须至少指定其中一个。

对于匹配路线的请求:

  • 请求必须包含所有已配置的字段
  • 请求中的字段必须至少与其中一个配置值匹配(当字段配置接收一个或者多个值时,请求只需要其中一个值被视为匹配)
  • kong route 中的host的作用是什么,有什么意义哪些场景会用到设置多个host呢?

三、Kong运维

kong version   #查看版本

1. 运行目录

/usr/local/kong Kong的运行目录
/usr/local/kong/pids/nginx.pid nginx-master进程号
/usr/local/kong/logs/access.log 数据口的访问日志文件
/usr/local/kong/logs/admin_access.log 管理口的访问日志
/usr/local/kong/logs/error.log 错误日志

2.监听端口

#数据口:8000
curl http://127.0.0.1:8000
#管理口:8001
curl http://127.0.0.1:8001/
#查看连接数统计
curl http://127.0.01:8001/status 2>/dev/null | jq .server
{
"connections_writing": 1,
"total_requests": 13,
"connections_handled": 13,
"connections_accepted": 13,
"connections_reading": 0,
"connections_active": 1,
"connections_waiting": 0
}
#查看内存统计
curl http://127.0.01:8001/status 2>/dev/null | jq .memory
{
"workers_lua_vms": [
{
"http_allocated_gc": "0.05 MiB",
"pid": 1310
}
],
"lua_shared_dicts": {
"kong_rate_limiting_counters": {
"allocated_slabs": "0.08 MiB",
"capacity": "12.00 MiB"
},
"kong_locks": {
"allocated_slabs": "0.06 MiB",
"capacity": "8.00 MiB"
},
"kong_healthchecks": {
"allocated_slabs": "0.04 MiB",
"capacity": "5.00 MiB"
},
"kong_cluster_events": {
"allocated_slabs": "0.04 MiB",
"capacity": "5.00 MiB"
......

3. 监控指标

  • 连接数
  • 内存
  • 错误日志

Kong网关的更多相关文章

  1. API网关之Kong网关简介

    1. Kong简介 那么,Kong是一个什么东东呢?它是一个开源的API网关,或者你可以认为它是一个针对API的一个管理工具.你可以在那些上游service之上,额外去实现一些功能.Kong是开源的, ...

  2. 使用KONG网关实现接口迁移的灰度验证

    在我们对一个API站点进行微服务化的过程中,使用KONG网关可以实现以下几个效果: 1. 业务线无感知,其实内部已经被Kong转到其他站点上执行了,这对业务线特别友好. 2. 可以实现租户级/接口级灰 ...

  3. kong网关: service+route+upstream

    对于刚开始学习kong网关,总是一脑子浆糊迷迷糊糊.虽然已经安装好,但却不知道接下来如何下手, 因为包含项太多:service.routes.upstream.consumer.plugins等等.一 ...

  4. kong网关命令(一)

    上次在虚拟机里安装kong网关后,因为版本(1.4)太高,目前Kong Dashboard无法支持, 后续发现Git上有个开源工具Kong admin ui,下载源码并部署到NGINX. 但是发现使用 ...

  5. MacOs下安装Kong网关

    写在前面: 持续记录一下自己在解决api网关kong上的各种问题. 1.关于Kong网关 这是官网地址:https://konghq.com/ 2.通过brew安装postgres 因为kong的数据 ...

  6. 在K3s上使用Kong网关插件,开启K3s的无限可能!

    我的工作中很重要的一部分是参加各种各样的技术会议.最近参加的是去年11月的北美KubeCon,在会议的最后一天,所有人都焦头烂额,我也一直机械地向不同的人重复我的自我介绍.后来,我已经十分烦躁,决定逃 ...

  7. Kong网关安装之Docker版(2)

    1.安装kong管理工具:konga或者kong-dashboard,这里选择konga 拉取konga镜像: sudo docker pull pantsel/konga:0.14.4 初始化kon ...

  8. Kong网关安装之Docker版(1)

    前言: Kong 是天生的微服务网关.她的官方简介是:Kong 是一个云原生,高效,可扩展的分布式 API 网关. 自 2015 年在 github 开源后,广泛受到关注,目前已收获 1.9w+ 的 ...

  9. Kong网关安装自定义插件

    安装自定义插件需要注意kong网关的版本要求!! 下面以安装Skywalking插件为例,要求Kong网关是2.2及以上版本,https://github.com/apache/skywalking- ...

  10. 使用Kong网关API接口配置

    一.Upstream1.创建Upstream: curl -i -X POST IPAddress:8001/upstreams -d 'name=upstream-test' -d 'slots=1 ...

随机推荐

  1. Handler机制实现原理总结

    Handler一般用于线程间通信,如常用的子线程使用handler让主线程更新UI.那么这是怎么实现的呢? 我们先把这个大问题分解成多个小问题: post();postDelayed();sendMe ...

  2. 计算机视觉重磅会议VAlSE2023召开,合合信息分享智能文档处理技术前沿进展

    近期,2023年度视觉与学习青年学者研讨会 (Vision And Learning SEminar, VALSE) 圆满落幕.会议由中国人工智能学会.中国图象图形学学会主办,江南大学和无锡国家高新技 ...

  3. 鸟类识别系统Python+Django+TensorFlow+卷积神经网络算法【完整代码】

    一.介绍 鸟类识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法.并通过对数据集进行训练,最后得到一个识别精度较高的模型.并基于Django框架,开 ...

  4. 认识Dubbo与RPC

    关注王有志,分享硬核Java技术的互金摸鱼侠 加入Java人的提桶跑路群:共同富裕的Java人 开个新坑,和大家一起学习Dubbo 3.X.我们按照一个由浅入深顺序来学习,先从使用Dubbo开始,再深 ...

  5. CDI的概念理解

    1.CDI是什么?目的和作用是什么? 概念(是什么):是JavaEE 6标准中一个规范, 作用(干什么): 它提供了Java EE平台上服务注入的组件管理核心,简化应该是CDI的目标,让一切都可以被注 ...

  6. 体细胞突变检测分析流程-系列1( WES&Panel)

    Sentieon●体细胞变异检测-系列1   Sentieon 致力于解决生物信息数据分析中的速度与准确度瓶颈,通过算法的深度优化和企业级的软件工程,大幅度提升NGS数据处理的效率.准确度和可靠性. ...

  7. 从钢铁行业数字化管控与超自动化融合,看华为WeAutomate能力进化

    文/王吉伟 钢铁行业的数字化转型,历来都是值得探讨的热点话题. 2022年,我国粗钢产量10.13亿吨,占据了全球钢铁供给市场的半壁江山. 这组数据可谓非常抢眼,但仍旧难掩诸多企业的各种经营问题. 钢 ...

  8. python学习笔记:第九章异常

    1.1 异常是什么 python使用异常对象来表示异常状态,并在遇到错误时引发异常.异常对象未被处理,程序将终止并显示一条错误信息. 我们可以通过各种方法引发和捕获错误,并采取对应措施. 1.2 将& ...

  9. keycloak~AbstractJsonUserAttributeMapper的作用

    AbstractJsonUserAttributeMapper 它是一个抽象类,用来更新条件更新用户属性(user_attribute)的信息,我们在实现自己的mapper时,需要关注3个方法,下面分 ...

  10. UE4构建基础和实践:一、概述

    序言 构建这个概念是和应用程序包及资源等相关的,它的特点是使用脚本控制一系列的任务的处理,以减少人力操作带来的成本和操作失误风险. 在UE的概念里,构建往往是和打包相关的(如编译.cook.压缩打包等 ...