Kong 是在客户端和(微)服务间转发 API 通信的 API 网关,通过插件扩展功能。Kong 有
两个主要组件:
Kong Server :基于 nginx 的服务器,用来接收 API 请求。
Apache Cassandra :用来存储操作数据。
你可以通过增加更多 Kong Server 机器对 Kong 服务进行水平扩展,通过前置的负载均衡器向这些机器分发请求。根据文档描述,两个 Cassandra 节点就足以支撑绝大多数情况,但如果网络非常拥挤,可以考虑适当增加更多节点。
对于开源社区来说,Kong 中最诱人的一个特性是可以通过插件扩展已有功能,这些插件在 API 请求响应循环的生命周期中被执行。插件使用 Lua 编写,而且 Kong 还有如下几个基础功能:HTTP 基本认证、密钥认证、CORS( Cross-origin Resource Sharing,跨域资源共享)、TCP、UDP、文件日志、API 请求限流、请求转发以及 nginx 监控。
Kong 包可运行在某些 Linux 发行版、Mac OS X 和 Docker 中,无论是本地机还是云端服务器皆可运行。
除了免费的开源版本,Mashape 还提供了付费的企业版,其中包括技术支持、使用培训服务以及API 分析插件。
安装前准备
安装好docker稳定版本
会docker 的基本使用
了解kong概念和使用(文档地址: https://getkong.org/docs/)
概念术语
upstream: 是对上游服务器的抽象;
target: 代表了一个物理服务,是 ip + port 的抽象;
service: 是抽象层面的服务,他可以直接映射到一个物理服务(host 指向 ip + port),也可以指向一个 upstream 来做到负载均衡;
route: 是路由的抽象,他负责将实际的 request 映射到 service。
默认情况下,KONG监听的端口为:
8000: 此端口是KONG用来监听来自客户端传入的HTTP请求,并将此请求转发到上有服务器;
8443: 此端口是KONG用来监听来自客户端传入的HTTP请求的。它跟8000端口的功能类似,但是它只是用来监听HTTP请求的,没有转发功能。可以通过修改配置文件来禁止它;
8001: Admin API,通过此端口,管理者可以对KONG的监听服务进行配置;
8444: 通过此端口,管理者可以对HTTP请求进行监控.
Kong安装
这里以0.13.x 以上的版本为例子,废弃了API实体对象的使用。
创建docker网络
docker network create kong-net
安装数据库,kong支持 postgres( postgres9.5以上)和Apache Cassandra
创建启动数据库,这里以postgres9.5作为数据库来存储数据,如下:
$ docker run -d --name kong-database --network=kong-net -p 5432:5432 -e "POSTGRES_USER=kong" -e "POSTGRES_DB=kong" postgres:9.6
数据库准备,初始化Kong数据
docker run --rm --network=kong-net -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-database" kong:0.14.1 kong migrations up
启动kong
docker run -d --name kong --network=kong-net -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-database" -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" -e "KONG_PROXY_ERROR_LOG=/dev/stderr" -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" -p 8000:8000 -p 8443:8443 -p 8001:8001 -p 8444:8444 kong:0.14.1
查看kong是否正在运行
$ curl -i http://localhost:8001
如出现以下则表示没问题:
通过Restful Admin API 管理kong,参考地址:https://docs.konghq.com/0.14.x/admin-api/
启动Kong Dashboard
官方推出了dashboard来管理Kong,界面清爽,使用方便,我们接着往下看。
创建并运行Kong dashboard容器
docker run -d --network=kong-net --link kong:kong -p 8008:8080 pgbi/kong-dashboard start --kong-url http://kong:8001 --basic-auth kong=kong
然后访问 http://IP:8008
登录账号:kong 密码:kong,如下图:
启动postgre admin 4
创建并运行postgre admin 4容器
docker run -d -p 8009:80 --network=kong-net --link kong-database:kong-database -e "PGADMIN_DEFAULT_EMAIL=admin@admin.com" -e "PGADMIN_DEFAULT_PASSWORD=admin@admin.com" -d dpage/pgadmin4
然后访问 http://IP:8009
登录账号:admin@admin.com,密码:admin@admin.com
创建server,起个名字Host=XXX port:5432 用户名密码为kong
参考文档
1.kong官方文档:https://getkong.org/docs/
2.docker安装kong:https://blog.csdn.net/freewebsys/article/details/80428830
3.选择Kong作为你的API网关:https://www.itcodemonkey.com/article/5980.html
原文:https://blog.51cto.com/13555423/2444153