Kong
Kong 是一个云原生、快速、可扩展和分布式的微服务抽象层(也称为 API 网关,API 中间件)。
关键词:nginx
,api网关
,微服务
简介
为什么选择 Kong
Quickstart
安装配置
本文仅以 Centos7 为例。
Kong 支持在多种环境下安装。
官方安装说明:https://konghq.com/install/
以下为 Centos7 安装步骤:
(1)下载 rpm 安装包到本地
(2)安装 Kong
1 2
| $ sudo yum install epel-release $ sudo yum install kong-community-edition-0.14.1.*.noarch.rpm --nogpgcheck
|
(3)准备数据库
Kong 需要存储数据,支持两种数据库:PostgreSQL 9.5+ 和 Cassandra 3.x.x
本人选择了 PostgreSQL,安装方法可以参考 —— PostgreSQL 安装
安装 PostgreSQL 后,配置一个数据库和数据库用户:
1 2
| CREATE USER kong; CREATE DATABASE kong OWNER kong;
|
(4)执行 Kong 迁移
执行以下命令:
1
| $ kong migrations up [-c /path/to/kong.conf]
|
注意:永远不应同时运行迁移;一个 Kong 节点应该只执行一次迁移。
(5)启动 Kong
1
| $ kong start [-c /path/to/kong.conf]
|
(6)测试启动成功
1
| $ curl -i http://localhost:8001/
|
至此,安装配置完成。
使用 Kong
- 启动(必须确保执行过
kong migrations up
) - kong start [-c /path/to/kong.conf]
-c /path/to/kong.conf
参数用来指定用户的配置
- 停止 -
kong stop
- 重启 -
kong reload
配置服务
(1)添加第一个服务
1 2 3 4
| $ curl -i -X POST \ --url http://localhost:8001/services/ \ --data 'name=example-service' \ --data 'url=http://mockbin.org'
|
应答类似下面形式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| HTTP/1.1 201 Created Content-Type: application/json Connection: keep-alive
{ "host":"mockbin.org", "created_at":1519130509, "connect_timeout":60000, "id":"92956672-f5ea-4e9a-b096-667bf55bc40c", "protocol":"http", "name":"example-service", "read_timeout":60000, "port":80, "path":null, "updated_at":1519130509, "retries":5, "write_timeout":60000 }
|
(2)为服务添加路由
1 2 3
| $ curl -i -X POST \ --url http://localhost:8001/services/example-service/routes \ --data 'hosts[]=example.com'
|
应答类似下面形式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| HTTP/1.1 201 Created Content-Type: application/json Connection: keep-alive
{ "created_at":1519131139, "strip_path":true, "hosts":[ "example.com" ], "preserve_host":false, "regex_priority":0, "updated_at":1519131139, "paths":null, "service":{ "id":"79d7ee6e-9fc7-4b95-aa3b-61d2e17e7516" }, "methods":null, "protocols":[ "http", "https" ], "id":"f9ce2ed7-c06e-4e16-bd5d-3a82daef3f9d" }
|
此时,Kong 已经关注这个服务,并准备代理请求。
(3)通过 Kong 转发请求
1 2 3
| $ curl -i -X GET \ --url http://localhost:8000/ \ --header 'Host: example.com'
|
参考资料
https://www.itcodemonkey.com/article/5980.html