为什么使用API-Gateway
- 方便客户端维护– 每个请求方不用管理多个api url,统一访问api-gateway即可
- 接口重构时调用方不须了解接口本身等拆分和聚合
- 客户端无须关心接口协议
- 统一权限控制、接口请求访问日志统计
- 安全,是保护内部服务而设计的一道屏障
Kong是一款基于Nginx_Lua模块写的高可用微服务网关,由于Kong是基于Nginx的,所以可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Server,来应对大批量的网络请求。
Kong主要有三个组件:
- Kong Server :基于nginx的服务器,用来接收API请求。
- Cassandra/PostgreSQL :用来存储操作数据。
- Kong dashboard:官方推荐UI管理工具,当然,也可以使用 restfull 方式 管理admin api
安装PostgreSQL
1、安装
sudo apt-get install postgresql-9.5
2、配置
1、修改配置文件postgresql.conf
sudo vim /etc/postgresql/9.5/main/postgresql.conf
修改以下2行
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
PostgreSQL 数据库安装完成。
4、修改PostgreSQL数据库默认用户 postgres 的密码
数据库会创建一个 postgres 用户作为数据库的管理员,密码随机的,所以需要先去修改密码,方式如下:
(1)PostgreSQL登录
sudo -u postgres psql
# -u postgres 是使用 postgres 用户登录的意思
# psql 是使用 psql 客户端登录
(2)修改postgres 用户密码
ALTER USER postgres WITH PASSWORD 'postgres';
(3)退出PostgreSQL客户端
\q
5、修改linux系统postgres用户的密码
PostgreSQL会创建一个默认的linux用户postgres,修改该用户密码的方法如下:
(1)删除用户postgres的密码
sudo passwd -d postgres
(2)设置用户postgres的密码
sudo -u postgres passwd
系统提示输入新的密码
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
6、创建数据库和用户给kong 使用
sudo -u postgres psql
create database "kong_db";
CREATE USER kong_user WITH PASSWORD 'kong_pass';
GRANT ALL PRIVILEGES ON DATABASE "kong_db" to kong_user;
至此,数据库准备完毕
部署kong
1、安装之前先安装依赖包
sudo apt-get install netcat openssl libpcre3 dnsmasq procps
在 https://getkong.org/install/ubuntu/ 下载最新的kong的deb安装包
sudo dpkg -i kong-2.0.2.xenial.amd64.deb
2、配置 kong
安装完成之后会生成 kong.conf.default,可以参考内容进行修改
sudo vim /etc/kong/kong.conf
内容如下
数据库准备好存储,现在需要执行kong migrations来初始化数据库表
kong migrations up
kong start
kong stop
现在kong 已经全部安装完成。可以使用命令行工具进行测试
curl -i http://localhost:8001/