ubuntu部署kong以及安装Kong Dashboard

时间:2024-03-23 17:29:52

        最近研究网关,网关是主要统一出口、权限管理等功能,之前自己使用openresty根据项目需求自己写了一个网关,最近打算升级网关,所有研究了两天的kong,记录一下kong的部署流程。

 

为什么使用API-Gateway

1. 方便客户端维护– 每个请求方不用管理多个api url,统一访问api-gateway即可
2. 接口重构时调用方不须了解接口本身等拆分和聚合
3. 客户端无须关心接口协议
4. 统一权限控制、接口请求访问日志统计
5. 安全,是保护内部服务而设计的一道屏障

      当然也有一个很大的缺点,api-gw很可能成为性能瓶颈,因为所有的请求都经过这里,可以通过横向扩展和限流解决这个问题。

  在众多API GATEWAY框架中,Mashape开源的高性能高可用API网关和API服务管理层——KONG(基于NGINX)特点尤为突出,它可以通过插件扩展已有功能,这些插件(使用lua编写)在API请求响应循环的生命周期中被执行。于此同时,KONG本身提供包括HTTP基本认证、**认证、CORS、TCP、UDP、文件日志、API请求限流、请求转发及NGINX监控等基本功能。目前,Kong在Mashape管理了超过15,000个API,为200,000开发者提供了每月数十亿的请求支持。

  Kong是一款基于Nginx_Lua模块写的高可用,由于Kong是基于Nginx的,所以可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Server,来应对大批量的网络请求。

 

ubuntu部署kong以及安装Kong Dashboard

Kong主要有三个组件:

  • Kong Server :基于nginx的服务器,用来接收API请求。
  • Cassandra/PostgreSQL :用来存储操作数据。
  • Kong dashboard:官方推荐UI管理工具,当然,也可以使用 restfull 方式 管理admin api

安装PostgreSQL 

对于postgreSQL网上有关文档说要使用9.5以上版本,建议使用最新版本,本人使用的9.5版本。

添加一个非官方源

sudo vim /etc/apt/sources.list.d/pgdg.list
# 添加以下内容
deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main

导入key,刷新

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | \
  sudo apt-key add -
sudo apt-get update

安装

sudo apt-get install postgresql-9.5

配置

(1)修改配置文件postgresql.conf

sudo vim /etc/postgresql/9.5/main/postgresql.conf 

需要修改的内容如下

listen_addresses = '*'password_encryption = on

(2).修改配置文件pg_hba.conf

sudo vim /etc/postgresql/9.5/main/pg_hba.conf

需要修改的内容如下,尾部加上

host all all 0.0.0.0 0.0.0.0 md5

(3)重启postgresql

sudo service postgresql restart

(4) 修改口令
安装过程中,系统已经添加了postgres的用户,并且这个用户的环境变量都设置好了,命令行工具很丰富.

sudo passwd postgres

然后切换到用户,修改postgre数据库的密码

su - postgres

(5) 建立数据库给kong用

psql postgres psql 

先创建用户

CREATE USER kong_user WITH PASSWORD 'kong_pass'; 

创建数据库,并给用户授权

create database "kong_db"; GRANT ALL PRIVILEGES ON DATABASE "kong_db" to kong_user;

至此,数据库准备完毕,当然还有另外一个选择Apache Cassandra
 

部署kong

安装之前先保证如下软件安装

sudo apt-get install netcat openssl libpcre3 dnsmasq procps

在https://getkong.org/install/ubuntu/下载最新的kong的deb安装包,然后

sudo dpkg -i kong-0.8.3.*.deb


配置kong
kong的配置相对简单,我这里只是简单的配置了数据库.

sudo vim /etc/kong/kong.conf 

ps:部署好之后会生成 kong.conf.default,可以修改之后进行修改,

ubuntu部署kong以及安装Kong Dashboard

数据库准备

按照上述postgresql安装,已经准备好存储,现在需要执行kong migrations来初始化数据库表

$ kong migrations up

这里我没有指定配置文件,使用的都是kong默认的配置,也可以指定自定义配置文件

#kong.conf的路径,默认是/etc/kong/kong.conf
$ kong migrations up [-c /path/to/kong.conf]

kong的默认表已经创建好了。

 

#默认kong插件在如下目录,自定义插件后续加在这里

cd /usr/local/share/lua/5.1/kong/plugins/

#启动kong,这里没有用到nginx-kong.conf

$ kong start [-c /path/to/kong.conf]

#停止kong

$ kong stop
$ kong start

#使用kong

curl -i http://localhost:8001/

接口接入kong测试

# 原接口

访问上海天气预报的接口 :https://www.sojson.com/open/api/weather/json.shtml?city=上海

#接口注册kong

curl -i -X POST   --url  http://localhost:8001/apis/   --data 'name=weather-api'   --data 'hosts=www.sojson.com'   --data 'upstream_url=https://www.sojson.com/open/api/weather/json.shtml'

name是全局唯一,后续对注册接口的插件修改都可以用到,host放在header里指定,upstream_url是转发的真实的下游接口

 

注册成功,则pg数据库的apis表会添加一条记录

#通过kong访问此天气接口

curl -i -X GET 
  --url http://localhost:8000?city=上海 
  --header 'Host: www.sojson.com'

ubuntu部署kong以及安装Kong Dashboard

kong实现了接口转发~

注意注册时,’hosts’, ‘uris’ or ‘methods’三个参数至少有一个必须指定

 

安装kong-dashboard

1、安装node与npm

sudo apt install nodejs-legacy
sudo apt install npm

升级npm为最新版本

sudo npm install [email protected] -g

 

安装用于安装nodejs的模块n

sudo npm install -g n

然后通过n模块安装指定版本的nodejsn模块更多介绍请参考官方文档

//安装官方最新版本
sudo n latest
//安装官方稳定版本
sudo n stable
//安装官方最新LTS版本
sudo n lts

我们通过安装稳定版本的nodejs,然后通过node -v可以发现node安装成功

2、安装kong dashboard

npm install -g kong-dashboard

启动:

kong-dashboard start --kong-url http://localhost:8001 --port 8088

最后访问:

ubuntu部署kong以及安装Kong Dashboard