如何进行Kong的原理分析
这篇文章给大家介绍如何进行Kong的原理分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、成都做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的八步网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
概述
什么是Kong
Kong是一个在Nginx中运行的Lua应用程序,可以通过lua-nginx模块实现,Kong不是用这个模块编译Nginx,而是与OpenRestry一起发布,OpenRestry已经包含了lua-nginx-module,OpenRestry是Nginx的一组扩展功能模块。
为什么是Kong
Kong是一个Api Gateway,通过插件的形式提供负载均衡,日志记录,身份验证,速率限制,转换等功能。
Kong可以很轻松扩展功能,模块化,可以运行在任何基础设施上。
术语
Route:是请求的转发规则,按照Hostname和PATH,将请求转发给Service。
Services:是多个Upstream的集合,是Route的转发目标。
Consumer:是API的用户,里面记录用户的一些信息。
Plugin:是插件,plugin可以是全局的,绑定到Service,绑定到Router,绑定到Consumer。
Certificate:是https证书。
Sni:是域名与Certificate的绑定,指定了一个域名对应的https证书。
Upstream:是负载均衡策略。
Target:是最终处理请求的Backend服务。
特性
动态负载均衡
基于散列的负载均衡
断路器
健康检查
Websockets
OAuth3.0
日志记录
安全性
Syslog
监控
转发代理
认证
速率限制
故障检测和恢复
……
更多详情参考:https://docs.konghq.com/hub/
开源/企业对比
架构
01架构图
1.1版本以后支持无db模式
02执行流程
加入kong后,每个客户端对API的请求将首先到达Kong,然后被代理到最终API,在请求和响应之间,Kong将执行任何已安装的插件,扩展API功能集,Kong有效的成为每个API的入口点。
部署
Kong支持在任何基础设施上运行,支持docker、packages、vagrant、Homebrew、CloudFormation、AWS、Azure、Kubernetes等。
本次部署基于package方式,部署软件版本。
软件 | 版本 |
---|---|
Kong | 1.0.3 |
Postgresql | 9.6 |
Kong-dashboard | 3.5.0 |
01部署Postgresql
docker run -- name postgres - e POSTGRES_PASSWORD = 123456 - p 5432 : 5432 - d postgres : 9.6
02创建用户及数据库
登陆
psql - U postgres - h 10.20 . 1.190 - p 5432
#创建用户
create user kong with password ‘ kong ’;
#创建数据库
create database kong owner kong ;
#退出控制台
\q
03下载安装包
wget:https://kong.bintray.com/kong-rpm/centos/7/:kong-1.0.3.el7.noarch.rpm
04安装配置
#安装rpm
yum install kong - 1.0 . 3.el7.noarch . rpm
#拷贝配置
cp / etc / kong / kong . conf . default / etc / kong / kong . conf
#配置
admin_listen = 0.0 . 0.0 : 8001 , 0.0 . 0.0 : 8444 ssl pg_host = 10.20 . 1.190 pg_port = 5432 pg_user = kong pg_password = kong pg_database = kong
保存并退出。
05启动kong
#数据库迁移,初始化表
kong migrations bootstrap
- c / etc / kong / kong . conf – vv
#启动
kong start - c / etc / kong / kong . conf
06部署kong-dashboard
dashboard目前只支持kong版本1.0.3,kong最新版本不支持,使用pgbi/kong-dashboard镜像
#启动dashboard
docker run - p 8888 : 8080 pgbi / kong - dashboard start -- kong - url http : //10.20.1.190:8001
使用
01upstream
02target
03service
04routers
05验证
06插件
1.Base-auth
创建consumer
创建Basic-auth-credential
服务开启Basic-auth
验证
未加用户信息,没权限,效果如下:
加入用户信息后,效果如下:
集成
01DNS SRV
Kong利用Dns轮询访问后端应用。
1.架构图
2.检查服务域名
使用Dns做服务发现,查看boms-user-service服务如下:
# dig @10.20.11.118 -p 8600 boms-user-service.service.dc1.consul SRV
含义解释:
调用服务域名boms-user-service.service.dc1.consul,通过dns解析找到实例ip+port,如上例中10.20.11.118:8081。
3.修改kong配置
vim 编辑kong.conf,增加:
dns_resolver : 127.0 . 0.1 : 8600
4.kong中使用
在kong中手动增加一个service,host填入服务域名,增加router,即可转发。
5.总结
需要手动在kong中创建服务,并且仅适用consul注册中心。
https://github.com/faizalpribadi/kongsul
02Agent 轮询
1.架构图
agent负责监听注册中心,动态调用kong admin API创建upstream、target、service、router等资源。
用户通过boms平台调用admin API修改router信息,实现服务转发功能,在此数据基础之上在启用插件,丰富功能。
开发
01命令行
https://docs.konghq.com/1.0.x/cli/
02Admin API
https://docs.konghq.com/1.0.x/admin-api/
例如:
关于如何进行Kong的原理分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
本文名称:如何进行Kong的原理分析
网页URL:http://pwwzsj.com/article/joipep.html