固定链接 在滴滴云上搭建 API-Gateway Kong 实践

在滴滴云上搭建 API-Gateway Kong 实践

在滴滴云上搭建 API-Gateway Kong 实践

1. 什么是 API-Gateway ?什么是 Kong ?

API-Gateway 是微服务架构体系中一个比较重要的组件,它通常构成所有微服务的入口,它的职责比较多,其较为通用的一些功能是:

  • 路由:路由是 API-Gateway 最重要的功能,基于路由 API-Gateway 通常能根据请求的特征,将流量导向不同的服务,或是不同服务的不同版本;或是同一服务的不同单元。
  • 协议转换:在 API-Gateway 层可完成基本的协议转换,比如简单的 HTTPS 至 HTTP。
  • 聚合数据:数据聚合的功能通常是指将不同 API-Gateway 后的服务返回后,统一返回。
  • 认证:不同的服务之间常常有一些共有的逻辑需要处理,比如权限认证,由于 API-Gateway 恰巧在各个微服务的前端,可以在 API-Gateway 实现权限的认证,比如可以在 API-Gateway 层实现 Cookie 或 Token 的认证。
  • 限流:可以做针对请求,针对服务的流量控制。
  • 熔断:可以在后端服务异常时或者被限流保护时,进行统一的错误返回。

常见的 API-Gateway 的方案比较多,比较常见的有:TyK,Kong,Netflix zuul,api-umbrella 等。其中 Kong 是本文要介绍的主题。

Kong 是在客户端和(微)服务间转发 API 通信的 API 网关,通过插件扩展功能。Kong 有两个主要组件:

  • Kong Server :基于 Nginx 的服务器,用来接收 API 请求。
  • PostgreSQL:用来存储操作数据。

可以通过增加更多 Kong Server 机器对 Kong 服务进行水平扩展,通过前置的负载均衡器向这些机器分发请求。

Kong 比较突出的一个特性是可以通过插件扩展已有功能,这些插件在请求响应循环的生命周期中被执行。插件使用 Lua 编写,而且 Kong 还有如下几个基础功能:HTTP 基本认证、密钥认证、CORS( Cross-origin Resource Sharing,跨域资源共享)、TCP、UDP、文件日志、限流、路由, 监控。

Kong 是一个在 Nginx 运行的 Lua 应用程序,由 lua-nginx-module 实现。 Kong 和 OpenResty 一起打包发行,其中已经包含了 lua-nginx-module。 OpenResty 不是 Nginx 的分支,而是一组扩展其功能的模块。

下面介绍 Kong 的部署过程。

2. 环境准备

  • OS: CentOS 7.4
  • 虚拟机:2CPU 4G内存 40G SSD本地存储

上述的虚拟机在滴滴云上完成购买,通过此链接完成。

购买完成后,可通过下面的命令登录服务器,并用 sudo -i 命令切换到 root 账户:

下面的操作步骤,均会基于此会话进行,按步骤做应该会得到同样的效果。

3. Kong 部署

Kong 的部署需要完成下面三个组件的部署:

  • PostgreSQL 的安装及配置
  • Kong Server 的安装
  • Kong Dashboard 的安装

3.1 PostgreSql 安装及配置

3.1.1 安装

使用下面的命令,完成 postgresql-10 的安装:

至此 postgresql-10 完成,下面开始配置过程。

3.1.2 配置

配置 PostgreSQL 数据库,并创建 Kong 相关的数据库信息,首先修改数据库的可访问配置:

将文件中的对应配置项,改为下面的内容:

再修改下面的文件:

同样将文件中的对应项,改成对应的配置:

然后再重启服务,命令如下:

服务重启后,上面的配置应该会生效,下面建立相关的 Kong 相关的数据库信息:

至此, postgresql-10 的安装及配置完成, Kong 相关的数据库信息也完成录入,可以用下面的命令简单测试:

如果配置成功,会与如上的输出一致,接着进行 Kong Server 的安装。

3.2 Kong Server 的安装

首先通过下面的命令,获取 Kong 的安装包:

然后再通过下面的命令进行安装:

通过上面的命令,Kong 应该会被正常安装成功,可以用下面的命令完成测试:

至此,Kong 安装完成。下面安装 Kong Dashboard 。

3.3 Kong Dashboard 的安装

Kong Dashboard,可方便对 Kong 进行配置。 安装过程如下:

从上面的信息中,可看出 Kong Dashboard 在 8080 端口上提供服务,可以在浏览器中,通过 IP:8080 的方式访问。

但是在访问前,由于滴滴云默认的安全组配置是不打开 8080 端口的,因此,需要先到滴滴云的控制台对应的 DC2 云服务器上,添加对 8080 端口访问两条安全组的规则。

滴滴云默认为每个云服务器绑定了一个 default 的安全组,因此这里选择直接在此安全组上编辑,效果如下:

添加上面的安全组配置后,既可以在浏览器中打开 IP:8080 访问 Kong Dashboard,效果如下:

Kong Dashboard 可完成 Servies,Routes 的管理,功能就不具体介绍,推荐按教程,安成搭建,再自己体验。

到此,整个安装过程完成。

本文作者:doop-ymc

您的留言将激励我们越做越好