解压安装包的软件 解压安装包并安装步骤( 四 )


负载均衡
由于Kong API网关本身底层也是基于Nginx的 , 因此对应负载均衡的能力实际上是通过底层的Nginx来完成的 。要在Kong上面实现负载均衡和API注册代理实际上需要分开为两个步骤进行 。
即首先是要配置负载均衡能力 , 建立Upstream组 , 并添加多个Target , 其次才是进行API注册 。
AUTHENTICATION实现
通过OAuth 2.0 Authentication插件实现user端口的用户访问限制 。其具体步骤如下:

  • 注册Oauth2插件 , 配置参考
  • 添加Consumer及Consumer对应的credentials
  • 申请accesstoken并访问 , 如果不带token访问将被拒绝
安全和访问控制
支持最基本的基于IP的安全访问控制和黑白名单设置 。即为相应的端口添加IP Restriction插件扩展 , 并设置白名单(只有名单内的IP可以访问API) 。
这和我们当前ESB的基于IP的访问控制和授权是一个道理 。但是我们的ESB更加灵活 , 多了业务系统这一层 , 即可以直接对业务系统这层统一进行授权 。
如果没有授权 , 在进行访问的时候将返回Your IP address is not allowed的访问错误 。
流量控制-Traffic Control
流量控制在当前Kong网关上 , 从GitHub上的参考来看 , 主要是实现了可以基于单位时间内的访问次数进行流量控制 , 如果超过了这个访问次数 , 则直接提示流控约束且无法访问的提示 。当前的流量控制 , 暂时不支持基于数据量的流控 。
当前的流控暂时没有看到微服务网关常用的熔断操作 , 即服务并发或服务响应时间大过某个临界值的时候 , 直接对服务进行熔断和下线操作 。
日志Logging实现
通过File-log插件实现对于每次访问日志的获取 , 需要注意为日志文件写权限 , 日志格式参考Log Format 。具体包括两个步骤 。
  • 为端口添加File-log插件 , 并设置为日志文件路径设为:/tmp/file.log
  • 添加日志插件后 , 每次访问都会被记录
当前Kong网关日志都是写入到文件系统中 , 但是这块可以很方便的定制日志插件将日志写入到缓存库 , 时序数据库或分布式数据库 。另外当前的日志LOGGING是没有提供日志查询的前端功能界面的 , 如果需要的话还需要自己开发对应的日志查询功能 。
这个日志功能和我们当前的ESB总线的日志Log完全是类似的 。但是我们ESB这块的能力更加强 , 包括后续的服务运行日志的统计分析和报表查看等 。
Kong网关插件说明
解压安装包的软件 解压安装包并安装步骤


从上图可以看到 , Kong网关是基于OpenResty应用服务器 , OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台 , 其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项 。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关 。而Kong 核心基于OpenResty构建 , 并且拥有强大的插件扩展功能 。
在Http请求到达Kong网关后 , 转发给后端应用之前 , 可以通过网关的各种插件对请求进行流量控制 , 安全 , 日志等各方面的处理能力 。当前Kong的插件分为开源版和社区版 , 社区版还有更多的定制功能 , 但是社区版是要收费的 。
目前 , KONG开源版本一共开放28个插件 , 如下:
acl、aws-lambda、basic-auth、bot-detection、correlation-id、cors、datadog、file-log、galileo、hmac-auth、http-log、ip-restriction、jwt、key-auth、ldap-auth、loggly、oauth2、rate-limiting、request-size-limiting、request-termination、request-transformer、response-ratelimiting、response-transformer、runscope、statsd、syslog、tcp-log、udp-log 。

推荐阅读