• API网关系列之Kong的介绍以及安装


    一、API网关产生背景

      在微服务的架构中,一个大的应用会被拆分成多个小的单一的服务提供出来,这些小的服务有自己的处理,有自己的数据库(也可以共用),也许语言也是不一样的,他们可以部署在一个或多个服务器上,其实也就是对复杂的应用进行了解耦,那为什么微服务需要API网关呢?

      首先我们看看微服务后产生的问题:

    • 客户端需要知道多个服务地址
    • 通用的功能怎么处理?例如鉴权、流量控制、日志等
    • 以前一个功能可能是一次请求就可以完成,现在可能要多个服务一起进行才可以,那如何减少客户端请求的时间呢?

      由于以上几点的问题,所以在所有的服务前面还需要定义一个代理,即API网关,所有的客户端请求都必须经过API网关代理到真实的服务地址,这也可以有效的避免真实地址的暴露,同时API网关也可以集成鉴权、流量控制、日志、API聚合、黑白名单等。

    二、kong的介绍

      Kong是由Mashape开发的并且于2015年开源的一款API网关框架,基于nginx以及 OpenResty 研发,主要特点是高性能以及其强大的扩展性,由于本身是基于nginx进行开发,因此网上很多关于nginx的调优等资料都可以用到kong的上面,包括负载均衡、或者充当web服务器等

      kong的扩展是通过插件机制进行的,并且也提供了插件的定制示例方法,插件定义了一个请求从进入到最后反馈到客户端的整个生命周期,所以可以满足大部分的定制需求,本身kong也已经集成了相当多的插件,包括CORS跨域、logging、限流、转发、健康检查、熔断等,API聚合功能从github上看也已经进入开发阶段。

      kong插件介绍地址:https://konghq.com/plugins/.

      kong相关文档地址:https://getkong.org/docs/

    三、kong的安装

      本次安装是在CentOS7.3下进行

    步骤一、pg数据库安装,一步步执行如下的脚本

    //获取下载的rpm
    yum install https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-3.noarch.rpm
    //执行安装
    yum install postgresql95-server
    //初始化数据库
    /usr/pgsql-9.5/bin/postgresql95-setup initdb
    //设置开机启动
    systemctl enable postgresql-9.5
    //启动服务
    systemctl start postgresql-9.5

    步骤二、pg数据库远程访问设置(如果不需要的话,那也可以不用管)

      修改/var/lib/pgsql/9.5/data/pg_hba.conf,增加如下配置

      修改/var/lib/pgsql/9.4/data/postgresql.conf,修改以下配置

    步骤三:kong服务安装

      由于官网repo仓库的版本才更新到0.10.4版本(估计官方忘记或者太懒了),所以目前只能用rpm包的方式进行安装,rpm包下载地址:https://bintray.com/kong/kong-community-edition-rpm/download_file?file_path=centos/7/kong-community-edition-0.12.3.el7.noarch.rpm

    下载好后,到文件目录下执行:

    rpm -ivh kong-community-edition-0.12.3.el7.noarch.rpm
    kong version

    步骤四、数据库配置

      kong连数据库,需要我们在pg上建立密码为kong的kong用户,数据库名也为kong

    su - postgres//进入数据库
    -bash-4.2$ psql
    postgres=# CREATE USER kong WITH PASSWORD 'kong'; CREATE DATABASE kong OWNER kong;//建立数据库以及用户

    步骤五、修改kong配置

      进入/usr/local/share/lua/5.1/kong/templates目录,修改kong_defaults.lua里的pg_password=kong,保存

    步骤六、启动

    kong migrations up//初始化数据库
    kong start//启动命令

      Kong 在启动后,一个是 8000,一个是 8001,8000端口是请求进入端口,用户发送请求先到 Kong 项目的 8000 端口,kong根据配置的规则转发到真实的后台服务地址。而8001 端口则是管理端口,插件设置、API的增删改查、以及负载均衡等一系列的配置都是通过8001端口进行管理  

      最后、浏览器访问IP:8000,如果出现{"message":"no API found with those values"}

      注意点:如果有防火墙的话,最好先关掉防火墙

    四、总结

      kong在我看来是可以很好的完成了API网关的职责,基于nginx开发,插件开发方便,支持负载均衡,支持日志等,对于K8S也可以轻松部署使用

      这次介绍比较简单,大家如果有不同的建议、意见或者问题的话,可以留言一起讨论,kong有打算是写成一个系列的,目前自己也在摸索当中,可能会不定期更新,谢谢大家

    作者: Mango

    出处: http://www.cnblogs.com/OMango/

    关于自己:专注.Net桌面开发以及Web后台开发,开始接触微服务、docker以及k8s等互联网相关(越来越觉得自己像运维了)

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,如有问题, 可站内留言联系.

      

  • 相关阅读:
    007 多元线性回归
    006 一元线性回归
    013 调整数组顺序使奇数位于偶数前面
    012 数值的整数次方
    011 二进制中1的个数
    010 矩形覆盖
    009 变态跳台阶
    008 调台阶
    007 斐波那契数列
    005 回归分析
  • 原文地址:https://www.cnblogs.com/OMango/p/8576594.html
Copyright © 2020-2023  润新知