Kong 是一个开源的 API GW 及微服务管理层,基于 Nginx, Cassandra 或者 PostgreSQL 构建,最初由 Mashape 开发,用于为其 API Marketplace 管理超过 15,000 个 API 和微服务,并于 2015 年开源。Kong 具有如下优点:
可扩展性:通过简单地添加更多的机器,Kong 可以轻松地水平缩放,这意味着您的平台可以处理几乎任何负载,同时保持低延迟。
模块化:可以通过添加新的插件来扩展,并通过 RESTful Admin API 轻松配置所有插件。
平台无关性:Kong 可以运行在任何地方,包括本地数据中心及公有云,支持物理机,虚机及容器部署。
目前 Kong 的最新版本为 0.10.2,支持的插件如下:
认证:Basic Authentication, Key Authentication, OAuth2.0 Authentication, OAuth 2.0 Introspection, HMAC Authentication, JWT, LDAP Authentication
安全:ACL, CORS, Dynamic SSL, IP Restriction, Bot Detection
流控:Rate Limiting, Response Rate Limiting, Request Size Limiting
无服务器架构:AWS Lambda, OpenWhisk
分析监控:Galileo, Datadog, Runscope
内容转换:Request Transformer, Response Transformer, Correlation ID
日志:TCP/UDP/HTTP Logging, File Logging, Syslog, StatsD, Loggly
通过 AWS Lambda 插件,Kong 可以作为一个统一的 API 前端,接收用户的请求,并调用不同的 lambda 函数做相关的处理,最后将结果返回给客户端,目前 Lambda 插件支持如下 region:
us-east-1, us-east-2, ap-northeast-1, ap-northeast-2, ap-southeast-1, ap-southeast-2, eu-central-1, eu-west-1
Kong 的安装
Kong 支持多种安装方式,对于在 AWS 上运行 Kong 的情况,主要有三种:
通过 marketplace 安装,此安装方式会在一台 EC2 上同时安装 Kong 及其存储数据库 Cassandra,适合单机部署或者测试环境
通过 CloudFormation 安装,CloudFormation 安装方式目前支持如下 region,可以通过配置选择存储数据库的类型 Cassandra 还是 PostgreSQL,或者不由 CloudFormation 创建存储数据库
通过 yum 在 EC2 上安装
本文主要讲解第三种方式的安装过程,安装 Kong 0.10.1 版本
第一步 配置 Kong 的数据存储
Kong 支持两种 datastore:Cassandra 和 PgSQL,方便起见,这里利用 AWS RDS 创建 PgSQL 作为数据存储
注意事项:
RDS 的安全组需要放行 5432 端口
记录 RDS 创建过程中设置的用户名,密码及数据库名
比如:username/password:ivan/ivan
DB:kong
第二步 安装配置 Kong (Amazon Linux)
yum update –y
wget https://github.com/Mashape/kong/releases/download/0.10.1/kong-0.10.1.aws.rpm
yum install kong-0.10.1.aws.rpm –nogpgcheck
cp /etc/kong/kong.conf.default /etc/kong/kong.conf
vim /etc/kong/kong.conf,
修改配置如下
database = postgres
pg_host = postgre-kong.XXXXXXXX.rds.cn-north-1.amazonaws.com.cn
pg_port = 5432
pg_user = ivan
pg_password = ivan
pg_database = kong
简单测试
第三步 创建 AMI,利用 ELB,Autoscaling Group 构建高可用架构
注意,如果 EC2 上已经启动过 kong,那么会将生成的 id 也打包进入 AMI,导致基于 AMI 生成的多台机器的 id 相同,从而无法建立集群,创建 AMI 前需要删除 id
rm –f /usr/local/kong/serf/serf.id
参考:
https://github.com/Mashape/kong/issues/1751
检查集群状态
第四步 创建 Lambda 函数并且测试
第五步 配置 Kong API GW 并调用 Lambda
5.1.配置 API
测试
5.2.配置 Lambda 插件
测试
第六步 配置启用额外的插件
6.1 为 API 开启 key 认证
配置用户并绑定 key
测试
6.2 为 API 限速
6.3 基于 IP 地址的过滤
作者介绍
余骏,AWS 解决方案架构师,负责基于 AWS 的云计算方案架构的咨询和设计,同时致力于 AWS 云服务在国内的应用和推广。在加入 AWS 之前,他在思科中国担任系统工程师,负责方案咨询和架构设计,在企业私有云和基础网络方面有丰富经验。
本文转载自 AWS 技术博客。
原文链接:
评论