Next-Generation API Platform for Multi-Cloud and Hybrid Organizations. Connect all your microservices and APIs with the industry’s most performant, scalable and flexible API platform.
在 Kong 的官网赫然的写了上面的一句话,翻译起来有点别扭,我就不直译了,大家自己看英文更能理解。简单来说 Kong 就是下一代的 API 网关,用起来就对了。
Kong 是在客户端和服务端之间的 API 网关,Kong 作为网关可以统一转发请求,并且因为 Kong 是基于 Nginx 的,所以本身支持水平扩展;另外 Kong 可以对请求做统一的限流,认证和授权管理,而且这些功能都是基于插件式,即插即用,根据自身业务的特性,可以选择合适的插件来控制相关业务。如果已有的插件不适合,还可以自己开发相应的插件,不过插件的开发是基于 lua 的。
安装步骤
安装数据库
因为 Kong 的底层存储是采用 PostgreSQL 9.5+ 或者 Cassandra 3.x.x 的,所以我们在安装 Kong 之前需要先安装数据库,阿粉这里采用的是 PostgreSQL 9.5,并且服务器是 CentOS7 的版本。
修改完密码过后,我们进行第二步操作,创建用户,密码和数据库,输入语句
CREATE USER kong WITH PASSWORD 'kong123';
我这里因为之前已经创建过这个用户了,所以提示已经存在,正常是显示
CREATE ROLE
的
然后再输入
CREATE DATABASE kong OWNER kong;
创建数据库,并且把这个数据库授权给
kong
用户,输入
GRANT ALL PRIVILEGES ON DATABASE kong to kong;
同样的,我这边已经创建
kong
数据库了,所以显示错误,正常是可以创建成功的。
这里需要我们输入密码了,这里的密码就是我们上面步骤 1 设定了
postgres123
,输入即可,如果提示
psql: FATAL: password authentication failed for user "postgres"
说明密码不对,如果正常进去,那我们再退出来用设置的
kong
用户再去登录看看。输入
psql -U kong -W
再输入之前
kong
的密码,如何能正常的如下图进去说明整个配置都正确。
如果提示
psql: FATAL: Peer authentication failed for user "kong"
可能检查你的配置文件是否修改,以及修改后是否重启。
最后我们修改一下
postgresql.conf
文件,设置支持远程访问,
vim /var/lib/pgsql/9.5/data/postgresql.conf
,将
listen_addresses
修改为下图一致,然后保存退出,重启即可。
到这里,数据库的部分就已经完成了,总结一个小点,
peer
模式的
postgres
用户不用密码可以登入,
md5
模式下需要密码才能登入。因为
Kong
是有密码的远程登录,所以我们要配置密码以及支持远程访问。
修改
kong
配置文件,先拷贝一份配置文件
cp kong.conf.default kong.conf
然后编辑一下对应的数据库,用户名和密码,这里的用户名和密码就是上面配置的
kong
和
kong123
调整一下
kong admin api
的访问地址,后面会用到
输入
kong start
启动
kong
如果出现下面提示,则输入
kong migrations bootstrap
然后再次启动
kong
Error: /usr/local/share/lua/5.1/kong/cmd/utils/migrations.lua:16: Database needs bootstrapping or is older than Kong 1.0.
To start a new installation from scratch, run 'kong migrations bootstrap'.
To migrate from a version older than 1.0, migrated to Kong 1.5.0 first. If you still have 'apis' entities, you can convert them to Routes and Services using the 'kong migrations migrate-apis' command in Kong 1.5.0.
Run with --v (verbose) or --vv (debug) for more details