kong介绍-个人分享_ggabcda的博客-CSDN博客_ring-balancer


本站和网页 https://blog.csdn.net/ggabcda/article/details/77818373 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

kong介绍-个人分享_ggabcda的博客-CSDN博客_ring-balancer
kong介绍-个人分享
ggabcda
于 2017-09-03 13:25:42 发布
8316
收藏
kong简介
背景
我们在提供api或微服务时,通常借助openresty nginx进行流量转发或者添加一些规则或功能,但是随着服务数量和引用增多,复杂的网络环境, 使维护变得困难,不容易扩展,一些功能也会在多个服务中重复,我们期望有一个工具来集中管理。
简介
Kong 是在客户端和(微)服务间转发API通信的API网关和API服务管理层,通过插件扩展功能。我们可以 可以通过增加更多 Kong Server 机器对 Kong 服务进行水平扩展,通过前置的负载均衡器向这些机器分发请求。
官网:https://getkong.org/ github:https://github.com/Mashape/kong kong-dashboard(开源UI):https://www.npmjs.com/package/kong-dashboard
特点
Kong核心基于OpenResty构建,实现了请求/响应的Lua处理化 Kong通过Restful API提供了API/API消费者/插件/upstream/sni/证书的管理; 数据中心用于存储Kong集群节点信息、API、消费者、插件等信息,目前提供了PostgreSQL和Cassandra支持,如果需要高可用建议使用Cassandra; 缓存机制(为了避免每次查询数据库,Kong 在第一次请求之行时,尝试在本地的内存里做尽可能多的数据缓存。)、kong集群使kong具备高性能高可用.
结构
admin: restful api<-->kong server<-(cache)-->db client:port--->[kong server<--(cache)-->db]-->api
安装
kong:0.11
$ sudo yum install epel-release
$ sudo yum install kong-community-edition-0.11.0.*.noarch.rpm --nogpgcheck
PostgreSQL 9.4+ and Cassandra 3.x.x
yum install postgresql96-server postgresql96-contrib
配置
配置文件
/etc/kong/kong.conf
/usr/local/kong/nginx.conf
/usr/local/kong/nginx-kong.conf
模板:
kong_defaults.lua
nginx.lua
nginx_kong.lua
表结构
kong常用命令
kong
kong --v
kong check /etc/kong/kong.conf
kong health -p /usr/local/kong
kong version
初始化数据库,插件更新
kong migrations up -c /etc/kong/kong.conf
kong migrations list -c /etc/kong/kong.conf
kong migrations reset -c /etc/kong/kong.conf
配置
kong start -c /etc/kong/kong.conf -p /usr/local/kong --nginx-conf custom_nginx.template --run-migrations true
kong start -c /etc/kong/kong.conf --nginx-conf custom_nginx.template
kong quit -p /usr/local/kong
kong stop -p /usr/local/kong
kong reload -c /etc/kong/kong.conf -p /usr/local/kong --nginx-conf custom_nginx.template
Kong Admin API
method: [get\patch\put\delete] 管理项:[apis\upstreams\plugins\consumers\certificates\snis] 格式
get:/apis/{name or id}
get:/apis/
patch:/apis/{name or id}
put:/apis/
delete:/apis/{name or id}
config
curl http://localhost:8001/ |jq .
curl http://localhost:8001/status |jq .
/apis/
curl -H "Content-type: application/json" -X POST -d '{"name":"demo","hosts":"demo.com","upstream_url":"http://www.baidu.com"}' "http://localhost:8001/apis/" | jq .
修改hosts-->reload
curl -H "Content-type: application/json" -X POST -d '{"name":"demo","hosts":"demo.com","upstream_url":"http://structuretest.com","preserve_host":"false"}' "http://localhost:8001/apis/" | jq .
curl -H "Content-type: application/json" -X POST -d '{"name":"demo","hosts":"demo.com","upstream_url":"http://demo.upstream"}' "http://localhost:8001/apis/" | jq .
curl -H "Content-type: application/json" -X PATCH -d '{"strip_uri":"true","preserve_host":"true", "https_only":"false","http_if_terminated":"true"}' "http://localhost:8001/apis/demo" |jq .
curl -H "Content-type: application/json" -X POST -d '{"name":"demo","hosts":"demo.com","upstream_url":"http://demo.upstream"}' "http://localhost:8001/apis/" | jq .
curl -X GET "http://localhost:8001/apis/demo" |jq .
curl -X GET "http://localhost:8001/apis/" |jq .
curl -X DELETE "http://localhost:8001/apis/demo" |jq .
/upstreams/
curl -H "Content-type: application/json" -X POST -d '{"name":"demo.upstream","slots":10}' "http://localhost:8001/upstreams/" | jq .
curl -X GET "http://localhost:8001/upstreams/demo.upstream" |jq .
curl -X GET "http://localhost:8001/upstreams" |jq .
curl -X DELETE "http://localhost:8001/upstreams/demo.upstream" |jq .
/upstreams/{name or id}/targets
curl -H "Content-type: application/json" -X POST -d '{"target":"192.168.226.129:8090","weight":1}' "http://localhost:8001/upstreams/demo.upstream/targets" | jq .
curl -X GET "http://localhost:8001/upstreams/test.upstream/targets" |jq .
curl -X GET "http://localhost:8001/upstreams" |jq .
curl -X DELETE "http://localhost:8001/upstreams/test.upstream/targets/target"
/plugins/
--修改删除只能通过id;
curl -H "Content-type: application/json" -X POST -d '{"name":"key-auth"}' "http://localhost:8001/apis/demo/plugins/" |jq .
curl -H "Content-type: application/json" -X PATCH -d '{"enabled":"true","config.key_names":"apikey"}' "http://localhost:8001/apis/demo/plugins/9a14eea2-731b-48f7-8cb4-949ea9c0f25a" |jq .
curl -X GET "http://localhost:8001/plugins/" |jq .
curl -X GET "http://localhost:8001/apis/demo/plugins/" |jq .
curl -X DELETE "http://localhost:8001/apis/demo/plugins/9a14eea2-731b-48f7-8cb4-949ea9c0f25a" |jq .
/consumers/
curl -H "Content-type: application/json" -X POST -d '{"username":"demo-user"}' "http://localhost:8001/consumers/" |jq .
curl -X DELETE "http://localhost:8001/consumers/demo-user" |jq .
curl -X GET "http://localhost:8001/consumers/demo-user" |jq .
添加key:
curl -H "Content-type: application/json" -X POST -d '{"key":"api_key"}' "http://localhost:8001/consumers/demo-user/key-auth/" |jq .
/certificates/
curl -H "Content-type: application/json" -X POST -d '{"cert":"","key":"","snis":""}' "http://localhost:8001/apis/demo/certificates/" |jq .
/snis/
curl -H "Content-type: application/json" -X POST -d '{"name":"","ssl_certificate_id":""}' "http://localhost:8001/apis/demo/snis/" |jq .
proxy routing 规则
配置多项
备注:下面是接口响应格式
"name": "my-api",
"upstream_url": "http://my-api.com",
"hosts": ["example.com", "service.com"],
"uris": ["/foo", "/bar"],
"methods": ["GET"]
遵循最长匹配优先评估,
"uris": ["/version/\d+/status/\d+"]
"uris": ["/version"]
"uris": ["/"]
--请求
GET /version/3/status/3 匹配第一个
GET /version 匹配第二个
GET /version/123 匹配第二个
GET /vs 匹配第三个
Load Balancing reference
DNS based loadbalancing:dns_resolver配置dns ip,解析多个ip后,自动使用基于DNS负载均衡(加权负载均衡器,将做一个简单的循环),当dns_stale_ttl 超时后请求dns; Ring-balancer:upstream(slots\orderlist) target(weight)
集群
0.11版本:当一个节点发生更新到数据库后,其他节点需要间隔db_update_frequency后,更新缓存失效字段。在使用Cassandra数据库db_update_propagation(数据节点传播延时)必须配置。 为防止db_update_frequency后错过一个失效事件,db_cache_ttl全量更新cache
db_update_frequency = 5
db_update_propagation = 0
db_cache_ttl = 3600
0.10版本:通过 Kong 集群,每个节点能够知道其它节点的存在。并且当一个Kong 节点有对数据更新,该节点有责任通知这个变化给集群里的其他节点, 通知其其他节点把本地内存中的缓存无效,重新从数据库中获取更新后的数据。
cluster_listen 通信
cluster_listen_rpc 代理通信
cluster_advertise
cluster_encrypt_key base64编码16字节加密集群通信
cluster_keyring_file
cluster_ttl_on_failure //失败节点超时后停止被链接;
cluster_profile //local, lan, wan.
--数据库node表来存储节点信息:
node
VM_3_3_centos_0.0.0.0:7946_58b54877bc4a47d884b9986e71f49d8b | 10.100.3.3:7946 | 2017-08-07 04:29:05
VM_3_2_centos_0.0.0.0:7946_e4147c192bcc4401acf698ca6374d59d | 10.100.3.2:7946 | 2017-06-12 10:19:24
常用插件
8个常用插件
编写插件
文件结构
基本
simple-plugin
├── handler.lua 一个接口来实现。每个函数是由kong一个请求的生命周期所需的时刻。(对应lua模块的生命周期)
└── schema.lua 插件引入参数类型、规则、校验
涉及数据库
complete-plugin
├── api.lua 与kong restful对接
├── daos.lua 数据库操作
├── handler.lua //
├── migrations
│ ├── cassandra.lua
│ └── postgres.lua //kong migrations操作数据初始化
└── schema.lua
编写rockspec文件:
build = {
type = "builtin",
modules = {
["kong.plugins.my-plugin-addtag.handler"] = "kong/plugins/my-plugin-addtag/handler.lua",
["kong.plugins.my-plugin-addtag.schema"] = "kong/plugins/my-plugin-addtag/schema.lua"
luarocks make --pack-binary-rock my-plugin-addtag-0.1.0-0.rockspec
修改kong.conf custom_plugins 挂载,重启;
测试环境使用情况
http://***********/#/apis
ggabcda
关注
关注
点赞
收藏
评论
kong介绍-个人分享
kong简介背景我们在提供api或微服务时,通常借助openresty nginx进行流量转发或者添加一些规则或功能,但是随着服务数量和引用增多,复杂的网络环境,使维护变得困难,不容易扩展,一些功能也会在多个服务中重复,我们期望有一个工具来集中管理。简介Kong 是在客户端和(微)服务间转发API通信的API网关和API服务管理层,通过插件扩展功能。我们可以可以通过增加
复制链接
扫一扫
Kong系列-07-负载均衡
twingao的专栏
01-22
817
Kong提供了两种负载均衡方案:
基于DNS的负载均衡
当使用基于DNS的负载均衡时,上游服务的注册是在Kong之外完成,而Kong只接收来自DNS服务器的负载均衡域名解析。使用包含主机名(而不是IP地址)URL定义的每个API将自动使用基于DNS的负载均衡。
Ring-Balancer环形均衡器
使用环形均衡器时,上游服务的添加和删除将由Kong处理,不需要进行DNS域名解析(当然如果t...
评论 1
您还未登录,请先
登录
后发表或查看评论
我们在提供api或微服务时,通常借助openresty nginx进行流量转发或者添加一些规则或功能,
词语大杂烩
09-03
2316
背景
我们在提供api或微服务时,通常借助openresty nginx进行流量转发或者添加一些规则或功能,但是随着服务数量和引用增多,复杂的网络环境,
使维护变得困难,不容易扩展,一些功能也会在多个服务中重复,我们期望有一个工具来集中管理。
简介
Kong 是在客户端和(微)服务间转发API通信的API网关和API服务管理层,通过插件扩展功能。我们可以
可以通过增加
kong的安装以及简单配置
最新发布
燕少江湖
11-04
263
kong的安装以及简单使用
openresty+lua脚本实现流量的分发简单模拟案例
yshir
11-09
639
参考资料
相应的api在这里可以找到
https://github.com/openresty/lua-nginx-module#nginx-api-for-lua
相应的lua模块
加载一些模块
https://www.nginx.com/resources/wiki/modules/lua/
https://github.com/pintsized/lua-resty-http/r...
使用Kong Admin 为Kong进行身份认证配置
热门推荐
举个栗子の不容易的博客
06-01
1万+
1.使用Kong Admin注册服务:
进入SERVICES菜单,点击ADD NEW SERVICE按钮,按照页面提示或以下配置进行填写:
2.为服务配置路由:
1> 点击配置好的服务,进入服务配置详情页面:
2>选择Routes 路由菜单,点击ADD ROUTE添加路由按钮,根据页面提示或以下配置进行填写:
3.为路由添加身份认证插件
选择已创建的路由,进入详情页面,选择Plugins 菜单,点击ADD PLUGIN按钮,添加Key Auth插件到路由。
1>配置添
kong笔记——kong、nginx性能压测对比
罗伯特是疯子丶
01-24
3826
简述
kong笔记 目录导航
前面介绍了kong的基本使用以及相关原理,那么接下来,我们需要对kong的性能做一个简单的了解。
性能压测
测试环境
机器类别及IP地址
硬件配置
操作系统
软件配置
网络环境
kong服务
1核2G/2核2G/2核4G/4核2G/4核4G
Alpine Linux 3.13
kong:2.5.0
阿里云ack环境
测试机
CPU:4CPU8G带宽:1M资源组:1台4CPU8G,1台2CPU4GVUM:100w
Euler OS系统
v1.19.10-r0
Nginx、OpenResty和Kong的基本概念与使用方法
lgxzzz的博客
12-02
1532
说明Nginx
Nginx配置文件,指令与变量Nginx作为TCP/UDP负载均衡器Nginx模块OpenResty
OpenResty安装Kong
Kong编译安装启动Kong部署Kong DashboardKong的使用
注册API:添加服务、配置路由插件启用方法Kong的插件Kong与Kubernetes的集成遇到的问题
ERROR: module ‘socket’ not found:No LuaRocks m...
kong-admin-ui
cxzhq2002的杂记
05-30
990
Kong admin UI
Kong 网关的管理界面
纯前端应用,所有请求从浏览器发出,不经过任何中间服务器,直接到达您的Kong admin api,安全、放心。如果您的电脑可以访问互联网(只要您的电脑能访问互联网,且能访问kong admin api,不需要kong admin api可以访问互联网),可直接使用部署在公网的demo,否则请本地化部署。
https demo,部署在gi...
docker部署网关kong,打开ssl监听
julywind1的专栏
11-03
308
修改环境变量
KONG_PROXY_LISTEN 0.0.0.0:8000 为
KONG_PROXY_LISTEN 0.0.0.0:8000,0.0.0.0:8443 ssl 重启即可
kong网关中添加 自定义证书
daxues_的博客
07-02
1207
1. 说明
kong的安装为localhost 提供了默认的ssl证书。这些是允许https端口开始侦听所必须的。如果没有这些默认证书,就不可能启动任何https侦听器。
在下面的示例中,我们将创建自己的 CA 并从该 CA 生成自签名证书。这意味着客户端将需要有权访问 CA 证书以允许证书验证。如果您从知名 CA 购买证书,则该 CA 证书很可能已在客户端已知 CA 列表中。
2. 生成证书
为我们自己的 CA 创建一个证书/密钥对
openssl genrsa -out ca.key 4096
op
Kong(V1.0.2) Health Checks and Circuit Breakers Reference
weixin_30824479的博客
02-14
121
介绍
您可以让Kong代理的API使用ring-balancer,通过添加包含一个或多个目标实体的upstream实体进行配置,每个target指向不同的IP地址(或主机名)和端口。ring-balancer将在各种目标之间负载,并基于上游对目标执行健康检查,使它们无论是否响应都是健康的或不健康的。然后,ring-balancer只会将流量路由到健康的目标。
Kong有两种健康检查方法...
服务负载均衡-Spring Cloud LoadBalancer
爪哇岛咖啡种植农场
12-20
1万+
使用Spring Cloud LoadBalancer进行客户端负载均衡
合约安全(1):Balancer中通货紧缩货币的套利攻击详解
竹林深处小茶馆
07-05
512
Abstract
消息来源:2020.6.29 链闻看天下
当红流动性挖矿 DeFi 项目 Balancer 如何被攻击?官方这么说
文中简要描述了攻击发生时间和危害,没有详细描述漏洞细节。
漏洞详细介绍可参考文章《Balancer Pool with STA Deflationary Token Incident》
概念介绍
滑点 slippage
在买卖 token 时,期望的交易价格和实际支付的价格之间的差别,称之为交易滑点。
流通池
用户将资产转入交易平台之中获得收益,而在平台中的总资产额度,就构成
kong网关 DNS-based loadbalancing 配置
weixin_40027906的博客
11-09
2158
kong网关负载均衡配置方式分为DNS-based loadbalancing和Ring-balancer两种,Ring-balancer方式的负载均衡配置之前已经介绍过------[Ring-balancer],今天这里主要介绍基于DNS的负载均衡配置。
DNS-based loadbalancing
当kong网关配置了dns解析器,后端服务的注册是有dns服务器完成,也就是说,kong网关会...
DPDK-实战之load_balancer(负载均衡)
3-Number
10-24
7415
0x01 缘由
“负载均衡”这个名词经常听,实际实践中也有过尝试。利用DPDK来做数据流量的负载均衡。我现在负责的产品中,有一个教智能分流设备,可以根据一些规则对流量进行转发。用DPDK可以适合这种场景不?显然,只要专注其中,可以为公司节约很大的成本。
0x02 介绍
简单的负载均衡器应用表明一个将数据包IO操作与应用处理过程隔离。依据执行目标,将一些逻辑核专门做数据包的接收
apigateway-kong(四)负载均衡理论及实现
weixin_33670786的博客
05-31
196
  负载均衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最佳化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。
使用带有负载均衡的多个服务器组件,取代单一的组件,可以通过冗余提高可靠性。负载均衡服务通常是由专用软体和硬件来完成。
对于互联网服务,...
Kong源码导读
Felix_阳的博客
07-31
5699
概览
  kong是一个基于nginx和OpenResty模块构建的API网关服务。提供http请求路由,后端服务负载均衡以及通过丰富的插件提供认证鉴权、流量调控、日志监控等功能。该网关目前应用在全球著名的API管理站点mashape上。
  nginx是一个采用异步I/O,事件驱动的高性能Web服务器,也可以作为在企业内部提供基于http rpc的反向代理和负载均衡器。由于nginx的配置都是...
【KONG】KONG两款admin UI
bocai_xiaodaidai的博客
07-27
983
当前KONG的社区版是没有dashboard的,但是付费的企业版是有带的,并且还有一些企业版才能使用的插件以及升级后的企业版插件。所以对于使用社区版的用户而言,排除自己去撸一个dashboard的这种选择,第三方开源的dashboard无疑是首选。
Github上热度比较高的有几款,分别是kongdash,kong-dashboard,konga,kong-admin-ui,但目前来看好像都很久没有维护了。
我部署过后三款UI,但貌似都有bug,总体来看konga、kong-admin-ui感觉
基于 OpenRestry 部署 nginx+lua 实现流量定向分发
congge
04-27
2113
在上一篇中,我们在linux上部署了OpenRestry单个节点简单实现了hello word功能,使用OpenRestry的强大之处在于使用它和其他模块比如http等,使用它的lua脚本实现一些接口的转发,利用这个特性我们可以设想一下,假如我们使用OpenRestry来实现nginx集群的负载均衡该如何做呢?
可以分两步,假如有多台机器,每台机器上都部署了nginx,那么只需要其中的一台作为转发...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:编程工作室
设计师:CSDN官方博客
返回首页
ggabcda
CSDN认证博客专家
CSDN认证企业博客
码龄5年
暂无认证
原创
18万+
周排名
132万+
总排名
20万+
访问
等级
1793
积分
117
粉丝
102
获赞
45
评论
258
收藏
私信
关注
热门文章
介绍一个全局最优化的方法:随机游走算法(Random Walk)
32468
漫谈格兰杰因果关系(Granger Causality)——第一章 野火烧不尽,春风吹又生
22239
日期时间范围选择插件-daterangepicker使用总结
18770
SQL Server Management Studio(SSMS)修复来解决SSMS找不到的问题
17066
win10下移动硬盘位置不可用无法访问
14027
最新评论
漫谈格兰杰因果关系(Granger Causality)——第一章 野火烧不尽,春风吹又生
不明所以~:
https://www.cnblogs.com/hdu-zsk/p/7235200.html
[2017-09-04]Abp系列——为什么值对象必须设计成不可变的
简__:
大佬可以贴个原帖地址么
漫谈格兰杰因果关系(Granger Causality)——第一章 野火烧不尽,春风吹又生
ChenRuiYing:
请问为什么很多图片都无法显示了?很好的文章,希望图片上可以维护一下~
漫谈格兰杰因果关系(Granger Causality)——第一章 野火烧不尽,春风吹又生
lbdjdl:
非常期待您更新继续的章节~
漫谈格兰杰因果关系(Granger Causality)——第一章 野火烧不尽,春风吹又生
m0_56374974:
写的太好了,请问后续章节还有么?或者有出版书籍么?打算购买
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
Springboot系列:Springboot与Thymeleaf模板引擎整合基础教程(附源码)
[自制操作系统] BMP格式文件读取&图形界面系统框架-应用接口设计
多么痛的领悟---关于RMB数据类型导致的元转分分转元的bug
2017年101篇
目录
目录
最新文章
Springboot系列:Springboot与Thymeleaf模板引擎整合基础教程(附源码)
[自制操作系统] BMP格式文件读取&图形界面系统框架-应用接口设计
多么痛的领悟---关于RMB数据类型导致的元转分分转元的bug
2017年101篇
目录
评论 1
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值