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

1、API网关产生背景nginx

  在微服务的架构中,一个大的应用会被拆分红多个小的单一的服务提供出来,这些小的服务有本身的处理,有本身的数据库(也能够共用),也许语言也是不同的,他们能够部署在一个或多个服务器上,其实也就是对复杂的应用进行了解耦,那为何微服务须要API网关呢?
git

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

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

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

2、kong的介绍sql

  Kong是由Mashape开发的而且于2015年开源的一款API网关框架,基于nginx以及 OpenResty 研发,主要特色是高性能以及其强大的扩展性,因为自己是基于nginx进行开发,所以网上不少关于nginx的调优等资料均可以用到kong的上面,包括负载均衡、或者充当web服务器等
docker

  kong的扩展是经过插件机制进行的,而且也提供了插件的定制示例方法,插件定义了一个请求从进入到最后反馈到客户端的整个生命周期,因此能够知足大部分的定制需求,自己kong也已经集成了至关多的插件,包括CORS跨域、logging、限流、转发、健康检查、熔断等,API聚合功能从github上看也已经进入开发阶段。
数据库

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

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

 

3、kong的安装浏览器

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

步骤1、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

步骤2、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

步骤4、数据库配置

  kong连数据库,须要咱们在pg上创建密码为kong的kong用户,数据库名也为kong

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

步骤5、修改kong配置

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

步骤6、启动

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

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

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

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

 

4、总结

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

  此次介绍比较简单,你们若是有不一样的建议、意见或者问题的话,能够留言一块儿讨论,kong有打算是写成一个系列的,目前本身也在摸索当中,可能会不按期更新,谢谢你们

 

做者: Mango

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

关于本身:专一.Net桌面开发以及Web后台开发,开始接触微服务、docker以及k8s等互联网相关(愈来愈以为本身像运维了)

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

相关文章
相关标签/搜索