热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:API网关——Kong实践分享

本文由编程笔记#小编为大家整理,主要介绍了API网关——Kong实践分享相关的知识,希望对你有一定的参考价值。
本文由编程笔记#小编为大家整理,主要介绍了API网关——Kong实践分享相关的知识,希望对你有一定的参考价值。


















概述

















01






什么是Kong









Kong是一个在nginx中运行的Lua应用程序,可以通过lua-nginx模块实现,Kong不是用这个模块编译Nginx,而是与OpenRestry一起发布,OpenRestry已经包含了lua-nginx-module,OpenRestry是Nginx的一组扩展功能模块。









02







为什么是Kong









Kong是一个Api Gateway,通过插件的形式提供负载均衡,日志记录,身份验证,速率限制,转换等功能。




Kong可以很轻松扩展功能,模块化,可以运行在任何基础设施上。




API网关——Kong实践分享


 







03







术语









Route:是请求的转发规则,按照Hostname和PATH,将请求转发给Service。


Services:是多个Upstream的集合,是Route的转发目标。


Consumer:是API的用户,里面记录用户的一些信息。


Plugin:是插件,plugin可以是全局的,绑定到Service,绑定到Router,绑定到Consumer。


Certificate:是https证书。


Sni:是域名与Certificate的绑定,指定了一个域名对应的https证书。


Upstream:是负载均衡策略。


Target:是最终处理请求的Backend服务。


 







04







特性










  • 动态负载均衡


  • 基于散列的负载均衡


  • 断路器


  • 健康检查


  • Websockets


  • OAuth2.0


  • 日志记录


  • 安全性


  • Syslog


  • 监控


  • 转发代理


  • 认证


  • 速率限制


  • 故障检测和恢复



……


更多详情参考:https://docs.konghq.com/hub/












05






开源/企业对比









 


API网关——Kong实践分享


API网关——Kong实践分享


API网关——Kong实践分享




 









架构
















01








架构图









 


API网关——Kong实践分享


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



















  1. docker run --name postgres -e POSTGRES_PASSWORD=123456 -p 5432:5432 -d postgres:9.6













02







创建用户及数据库









# 登陆










  1. psql -U postgres -h 10.20.1.190 -p 5432








#创建用户










  1. create user kong with password kong’;








#创建数据库










  1. 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










  1. yum install kong-1.0.3.el7.noarch.rpm








#拷贝配置










  1. cp /etc/kong/kong.conf.default /etc/kong/kong.conf








#配置










  1. admin_listen = 0.0.0.0:8001, 0.0.0.0:8444 ssl





  2. pg_host = 10.20.1.190





  3. pg_port = 5432





  4. pg_user = kong





  5. pg_password = kong





  6. pg_database = kong













保存并退出。









05







启动kong









#数据库迁移,初始化表










  1. kong migrations bootstrap -c /etc/kong/kong.conf vv








#启动










  1. kong start -c /etc/kong/kong.conf













06







部署kong-dashboard









dashboard目前只支持kong版本1.0.3,kong最新版本不支持,使用pgbi/kong-dashboard镜像


#启动dashboard












  1. docker run -p 8888:8080 pgbi/kong-dashboard start --kong-url http://10.20.1.190:8001

















使用









 








01






upstream








API网关——Kong实践分享









02







target








API网关——Kong实践分享









03







service








API网关——Kong实践分享









04







routers








API网关——Kong实践分享









05







验证








API网关——Kong实践分享









06







插件









1.Base-auth



  • 创建consumer



API网关——Kong实践分享





  • 创建Basic-auth-credential



API网关——Kong实践分享


 



  • 服务开启Basic-auth



API网关——Kong实践分享





  • 验证



未加用户信息,没权限,效果如下:


API网关——Kong实践分享




加入用户信息后,效果如下:


API网关——Kong实践分享















集成













01






Dns SRV









Kong利用Dns轮询访问后端应用。




1.架构图


API网关——Kong实践分享




 


2.检查服务域名


使用Dns做服务发现,查看boms-user-service服务如下:










  1. # dig @10.20.11.118 -p 8600 boms-user-service.service.dc1.consul SRV






 


API网关——Kong实践分享




含义解释:


API网关——Kong实践分享




调用服务域名boms-user-service.service.dc1.consul,通过dns解析找到实例ip+port,如上例中10.20.11.118:8081。




3.修改kong配置


vim 编辑kong.conf,增加:










  1. dns_resolver: 127.0.0.1:8600








4.kong中使用


在kong中手动增加一个service,host填入服务域名,增加router,即可转发。




5.总结


需要手动在kong中创建服务,并且仅适用consul注册中心。


https://github.com/faizalpribadi/kongsul


 







02







Agent 轮询









1.架构图


 


API网关——Kong实践分享


agent负责监听注册中心,动态调用kong admin API创建upstream、target、service、router等资源。




用户通过boms平台调用admin API修改router信息,实现服务转发功能,在此数据基础之上在启用插件,丰富功能。















开发













01






命令行









https://docs.konghq.com/1.0.x/cli/











02







Admin API









https://docs.konghq.com/1.0.x/admin-api/


例如:


API网关——Kong实践分享


 







03







插件开发









https://docs.konghq.com/1.0.x/pdk/ 插件开发工具包。












参考









  • https://docs.konghq.com Kong官方文档


  • https://docs.konghq.com/hub/kong-inc 插件文档


  • https://www.lijiaocn.com/%E6%8A%80%E5%B7%A7/2017/03/06/dns-srv.html dns-srv 详解


  • https://github.com/faizalpribadi/kongsul


  • https://github.com/YeautyYE/nacos-nginx-template


  • https://github.com/quancheng-ec/eureka-kong-register



 




本文由博云研究院原创发表,转载请注明出处。


























相关推荐































加入技术交流群


添加管理员微信ID : ruffylining 


备注姓名-公司-职位,即可入群













推荐阅读
  • 我是这样学习Linux下C语言编程的-把程序输出信息加到系统日志里去关键词:Linux系统日志syslog服务程序syslogd ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • luarestyqlesswebUI界面运行
    lua-resty-qless-web是lua-resty-qless的web管理界面以及lua-resty-template模版引擎开发的,里面实现了一个简单的路由功能备注:de ... [详细]
  • PHP调试凶器Xdebug安装配置教程:PHP调试利器Xdebug安装配置教程作者:zhanhailiang日期:2013-03-111.简述引用官方描述:TheXdebugext ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了redis调优的实战经验相关的知识,希望对你有一定的参考价值。本文根据redis的inf ... [详细]
  • Linux目录结构说明(2)一些重要文件目录1.一些重要文件目录参考1.一些重要文件目录1.网卡配置文件etcsysconfignetwork-scr ... [详细]
  • 在做以下实验时需先做的操作为:(1)打开两个虚拟机(desktop和server)并更改他们的ipÿ ... [详细]
  • 开发笔记:Python脚本优化Zabbix多行日志监控
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python脚本优化-----Zabbix多行日志监控相关的知识,希望对你有一定的参考价值。通过使用z ... [详细]
  • 2020年第十一届蓝桥杯决赛JAVA B G题“皮亚诺曲线距离“的个人题解目录
    本文是2020年第十一届蓝桥杯决赛JAVA B G题“皮亚诺曲线距离“的个人题解目录。文章介绍了皮亚诺曲线的概念和特点,并提供了计算皮亚诺曲线上两点距离的方法。通过给定的两个点的坐标,可以计算出它们之间沿着皮亚诺曲线走的最短距离。本文还提供了个人题解的目录,供读者参考。 ... [详细]
author-avatar
fggdsfgwjff4
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有