跳至主要內容

kong

钝悟...大约 2 分钟分布式分布式通信RPC分布式分布式应用RPC

Kong

Kongopen in new window 是一个云原生、快速、可扩展和分布式的微服务抽象层(也称为 API 网关,API 中间件)。

关键词:nginx,api网关,微服务

简介

为什么选择 Kong



Quickstart

安装配置

本文仅以 Centos7 为例。

Kong 支持在多种环境下安装。

官方安装说明:https://konghq.com/install/open in new window



以下为 Centos7 安装步骤:

(1)下载 rpm 安装包到本地

(2)安装 Kong

$ sudo yum install epel-release
$ sudo yum install kong-community-edition-0.14.1.*.noarch.rpm --nogpgcheck

(3)准备数据库

Kong 需要存储数据,支持两种数据库:PostgreSQL 9.5+open in new windowCassandra 3.x.xopen in new window

本人选择了 PostgreSQL,安装方法可以参考 —— PostgreSQL 安装open in new window

安装 PostgreSQL 后,配置一个数据库和数据库用户:

CREATE USER kong;
CREATE DATABASE kong OWNER kong;

(4)执行 Kong 迁移

执行以下命令:

$ kong migrations up [-c /path/to/kong.conf]

注意:永远不应同时运行迁移;一个 Kong 节点应该只执行一次迁移。

(5)启动 Kong

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

(6)测试启动成功

$ 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)添加第一个服务

$ curl -i -X POST \
  --url http://localhost:8001/services/ \
  --data 'name=example-service' \
  --data 'url=http://mockbin.org'

应答类似下面形式:

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)为服务添加路由

$ curl -i -X POST \
  --url http://localhost:8001/services/example-service/routes \
  --data 'hosts[]=example.com'

应答类似下面形式:

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 转发请求

$ curl -i -X GET \
  --url http://localhost:8000/ \
  --header 'Host: example.com'

参考资料

https://www.itcodemonkey.com/article/5980.htmlopen in new window

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.7