概述01 什么是KongKong是一个在Nginx中运行的Lua应用程序,可以通过lua-nginx模块实现,Kong不是用这个模块编译Nginx,而是与OpenRestry一起发布,OpenRestry已经包含了lua-nginx-module,OpenRestry是Nginx的一组扩展功能模块。 02 为什么是KongKong是一个Api Gateway,通过插件的形式提供负载均衡,日志记录,身份验证,速率限制,转换等功能。 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./hub/ 05 开源/企业对比架构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./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./1.0.x/cli/ 02Admin API https://docs./1.0.x/admin-api/ 例如: 03插件开发 https://docs./1.0.x/pdk/ 插件开发工具包。 参考 https://docs. Kong官方文档 https://docs./hub/kong-inc 插件文档 https://www./%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 本文由博云研究院原创发表,转载请注明出处。 |
|