Kong系列之入门(上)
说明:作者Qicz将有可能随时的修订本文的内容,为了保证内容的一致性和严谨性,作者Qicz保留本文的所有权利。未经作者Qicz本人同意,不得转载或者以其他方式使用这些内容。
本文作为kong系列的入门,主要内容如下:
- Api gateway概述
- Kong安装
- Kong.conf
一、Api gateway概述
1、从gateway说起
wikipedia上给gateway了很多定义,gateway是一个入口或者门口,可以说是一个网络间数据或协议交换的物理设备(Router),也可以是设备之前协议转化或数据共享的程序,而这样的程序就是我们这里讨论的重点。
在微服务甚至又出现的宏服务时代,gateway作为一个入口程序,关联着上游服务的数据交互、权限管控、链路跟踪、限流等等,那么kong也在这样的时代背景下应运而生。而且是站在巨人的肩上成长了起来。
这个巨人就是nginx,高性能的代理服务器。
Kong官网 介绍,Kong是一个运行在Nginx中的基于Lua - Nginx模块实现的Lua应用程序。Kong与OpenResty一起发布的,以此替代在Nginx中还需编译Lua - Nginx模块,OpenResty已经包含了lua- Nginx模块。OpenResty不是Nginx的一个分支,而是一组扩展其功能的模块。
Kong是一个基于云的、快速的、可伸缩的分布式微服务抽象层(也称为API网关或API中间件)。2015年作为开源项目发布,其核心价值是高性能和可扩展性。
2、为何选择Kong?
如果您正在为web、移动或物联网构建服务,那们您可能还需要通用功能来运行您的实际软件。Kong可以充当微服务请求的网关(或侧卡),同时通过插件提供负载平衡、日志记录、身份验证、速率限制、转换等功能。
Kong的构建遵循以下主要原则:
- 高性能:亚毫秒级处理延迟,可支持关键任务用例和高吞吐量。
- 可扩展性:带有可插拔的体系结构,可通过Kong的Plugin SDK扩展Lua或GoLang中的Kong。
- 可移植性:要在每个平台,每个云上运行,并通过我们的现代Ingress Controller本地支持Kubernetes。
3、功能特性
- Cloud-Native:与平台无关,Kong可以在任何平台上运行-从裸机到容器-并且可以在本机上的每个云上运行。
- Kubernetes-Native:使用官方的Ingress Controller通过本地Kubernetes CRD声明性地配置Kong,以路由和连接所有L4 + L7通信。
- 动态负载平衡:在多个上游服务之间平衡流量。
- 基于哈希的负载平衡:具有一致的哈希/粘性会话的负载平衡。
- 断路器:智能跟踪不健康的上游服务。
- **运行状况检查:**主动和被动监视上游服务。
- 服务发现:在第三方DNS解析器(例如Consul)中解析SRV记录。
- 无服务器:直接从Kong调用和保护AWS Lambda或OpenWhisk功能。
- WebSockets:通过WebSockets与您的上游服务进行通信。
- gRPC:与gRPC服务进行通信,并通过日志记录和可观察性插件观察流量
- OAuth2.0:轻松将OAuth2.0身份验证添加到您的API。
- 记录:通过HTTP,TCP,UDP或磁盘记录对系统的请求和响应。
- 安全性:ACL,僵尸程序检测,允许/拒绝IP等…
- Syslog: 系统日志记录.
- SSL:为基础服务或API设置特定的SSL证书。
- 监视:实时监视提供关键的负载和性能服务器指标。
- 转发代理:使Kong连接到透明的中介HTTP代理。
- 认证:HMAC,JWT,Basic等。
- 速率限制:基于许多变量的阻止和限制请求。
- 转换:添加,删除或处理HTTP请求和响应。
- 缓存:在代理层缓存并提供响应。
- CLI:从命令行控制Kong群集。
- REST API:Kong可以使用其RESTful API进行操作,以实现最大的灵活性。
- 地理复制:跨不同区域的配置始终是最新的。
- 故障检测和恢复:如果您的Cassandra节点之一发生故障,则 Kong不会受到影响。
- 集群:所有Kong节点自动加入集群,并在各个节点之间更新其配置。
- 可伸缩性:Kong本质上分布,只需添加节点即可水平扩展。
- 性能:Kong通过扩展和使用NGINX作为核心轻松处理负载。
- 插件:可扩展的体系结构,用于向Kong和API添加功能。
二、Kong安装
这里重点讲解db模型的Kong安装,db-less的请自行查看官网。
1、环境准备
- 操作系统 CentOS 7
- 数据库 PostgreSQL
- kong版本2.1.3
2、安装Kong
参考地址:https://docs.konghq.com/install/centos/
2.1 使用rpm包安装
下载rpm包 https://bintray.com/kong/kong-rpm/download_file?file_path=centos/7/kong-2.1.3.el7.amd64.rpm
使用命令安装:
|
|
2.2、使用repository安装,执行如下命令
|
|
3、安装PostgreSQL
3.1 安装PostgreSQL
安装9.5以上版本即可,这里使用PostgreSQL最新版本。
参考地址:https://www.postgresql.org/download/linux/redhat/
|
|
需要获得sudo权限。
3.2 用户角色
|
|
3.3 导入Kong的数据
|
|
4、Kong目录结构
4.1 默认安装目录:/usr/local/kong
|
|
4.2 kong.conf所在目录/etc/kong
5、Kong启动
5.1 直接启动
|
|
5.2 使用systemd启动
Start Kong
|
|
Stop Kong
|
|
随系统一起启动
|
|
关闭随系统启动
|
|
Restart Kong
|
|
查看Kong状态
|
|