1. 什么是Kong

目前互联网后台架构一般是采用微服务,或者类似微服务的形式,应用的请求通常需要访问多个后台系统。如果让每一个后台系统都实现鉴权、限流、负载均衡、审计等基础功能是不合适的,通用的做法是把这些功能抽离出来放到网关层。Kong是目前最流行的网关平台。

  • Nginx = Http Server + Reversed Proxy + Load Balancer

  • Openresty = Nginx + Lua-nginx-module

    openresty是寄生在nginx上,暴露nginx处理的各个阶段的钩子

  • Kong = Openresty + Customized Framework

2. 概念

kong的三个组件:

  • kong Server:基于nginx的服务器,接受API

  • Apache Cassandra/PostgreSQL: 存储操作数据

  • Kong dashboard: 官方UI

kong的API使用Restful风格,每个对象都是一个Object,其中最重要的两个对象是:

  • Service 代表一个后台服务

    配置 需要转发到的上游服务器(upstream server),端口,请求该服务器的路由可以是 “/”

  • Route 是一条规则,告诉kong怎么把网关收到的请求发送到某个特定的后台服务,一个Service可以有多个Routes

    配置

Kong默认绑定4个端口

  • :8000 用来接受用户的HTTP请求,并转发到后台系统

  • :8443 用来接受用户的HTTPS请求,并转发到后台系统

  • :8001 通过HTTP协议提供管理功能的API (Admin API)

  • :8444 通过HTTPS协议提供管理功能的API

  • 这些端口可以在/etc/kong/kong.conf中修改,:8000 和 :8443 默认绑定0.0.0.0;:8001 和 :8444 默认绑定 127.0.0.1

当然我们可以把Admin API作为一个服务通过kong的网关暴露出去,请参考Kong API Loopback不过要注意安全。

3. 安装kong

  • 下载安装包,yum安装

    下载kong的rpm包到本地 https://kong.bintray.com/kong-community-edition-rpm/centos/7/kong-community-edition-0.13.1.el7.noarch.rpm。 然后yum install -y x x x.rpm

    下载pgsql的rpm包 https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-3.noarch.rpm.

    yum install postgresql95 postgresql95-server

  • 安装pgsql

    usr/pgsql-9.5/bin/postgresql95-setup initdb

    修改 vi /var/lib/pgsql/9.5/data/pg_hba.conf 里的 ident 为 trust (否则kong迁移数据库报Ident authentication)

    修改 var/lib/pgsql/9.5/data/postgresql.conf listen_addresses 为‘*’

    设置系统调用 systemctl enable postgresql-9.5 ; systemctl start postgresql-9.5

  • 授权kong数据库

    登录postgresql :sudo -u postgres psql ; create user kong with password 'kong';CREATE DATABASE kong OWNER kong;

  • 迁移kong数据库

    0.15以后 kong migrations bootstrap 以前 kong migrations up

  • 启动kong 默认配置文件 /etc/kong/kong.conf

    有一些配置文件的参数需要改动

    proxy_listen = 0.0.0.0:80, 0.0.0.0:443 ssl kong实际监听的地址

    admin_listen = 0.0.0.0:8001, 127.0.0.1:8444 ssl kong的控制台服务

    client_body_buffer_size = 10240k 这个参数代表请求的body内容的缓冲大小

    kong start;

4. 安装kong-dashboard

使用docker安装是最方便的,否则你需要装一大堆软件

5. 操作kong-dashboard

  • 待续

API网关--Kong的实践的更多相关文章

  1. 唯品会API网关设计与实践--转

    原文地址:https://609518.kuaizhan.com/86/70/p4108366952248f 刘璟宇Leo 唯品会资深研发工程师,在大型高性能分布式系统设计和开发方面有丰富的经验.目前 ...

  2. API 网关 Kong

    什么是 API 网关? 所谓网关,主要作用就是连接两个不同网络的设备,而今天所讲的 API 网关是指承接和分发客户端所有请求的网关层. 为什么需要网关层?最初是单体服务时,客户端发起的所有请求都可以直 ...

  3. Api网关Kong集成Consul做服务发现及在Asp.Net Core中的使用

    写在前面   Api网关我们之前是用 .netcore写的 Ocelot的,使用后并没有完全达到我们的预期,花了些时间了解后觉得kong可能是个更合适的选择. 简单说下kong对比ocelot打动我的 ...

  4. API网关Kong系列(一)初识

    最近工作需要,加上国内Kong的文章相对缺乏(搜来搜去就那么两篇文章),而且官方文档在某些demo上也有一些过时的地方,遂提笔记录下这些,希望能有帮助. 先随大流介绍下KONG(主要参考官网): 官方 ...

  5. API网关——Kong实践分享

    概述 01 什么是Kong Kong是一个在Nginx中运行的Lua应用程序,可以通过lua-nginx模块实现,Kong不是用这个模块编译Nginx,而是与OpenRestry一起发布,OpenRe ...

  6. API网关Kong系列(三)添加服务

    进入之前部署好的kong-ui,默认第一次登陆需要配置kong服务的地址 进入API菜单,点击+号 按照要求填入相关信息 至此完成,可以使用诸如 https://your.domain.com:208 ...

  7. API网关Kong系列(二)部署

    部署环境: [OS] centos 6.8(如果是centos6.5,请自行先升级到6.8,否则不支持docker) [Docker] Client version: 1.7.1 Client API ...

  8. API网关Kong部署和使用文档

    KONG安装使用说明 系统版本:ubuntu14 1.下载安装包 $ wget https://github.com/Mashape/kong/releases/download/0.8.3/kong ...

  9. API网关Kong系列(四)认证配置

    目前根据业务需要先介绍2种认证插件:Key Authentication 及 HMAC-SHA1 认证  Key Authentication 向API添加密钥身份验证(也称为API密钥). 然后,消 ...

随机推荐

  1. 【PG】Greenplum-db-6.2.1的安装部署

    目录 1配置host文件(所有节点) 2 配置用户 3 配置/etc/sysctl.conf文件 4 limit文件,后面添加[不影响安装] 5 安装greenplum-db-6.2.1-rhel7- ...

  2. DOM解读

    DOM解读 DOM概念 - document object model:文档对象模型 操作文档的一套方法,document是一个对象,是dom的顶级对象,属于window的一个对象,并且可以说是最出色 ...

  3. 代号为 Kyria 的 Manjaro Linux 19.0 系统正式发布

    Xfce版本仍然是主打,此版本Xfce更新到4.14,并且主要致力于在桌面和窗口管理器上完善用户体验. KDE版本提供了功能强大.成熟且丰富的Plasma 5.17桌面环境,此版本进行了完全重新设计. ...

  4. Google Sign In

    我们平常也经常使用QQ,微信账号,登录其他应用.最近公司让我给网站添加一个谷歌账号登录.我来这里记录一下,莫怪~~~莫怪~~~ 1. 申请一个账号登录ID:  https://developers.g ...

  5. annaconda的安装及使用

    一.安装 1.安装包下载: 方式1:官网:https://www.anaconda.com/distribution/ 方式2:清华镜像源:https://mirrors.tuna.tsinghua. ...

  6. STM32时钟配置方法

    一.在STM32中,有五个时钟源,为HSI.HSE.LSI.LSE.PLL. ①HSI是高速内部时钟,RC振荡器,频率为8MHz. ②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率 ...

  7. Jenkins分布式构建与并行构建

    Jenkins分布式构建与并行构建 jenkins的架构 Jenkins采用的是"master+agent(slave)"架构.Jenkins master负责提供界面.处理HTT ...

  8. Spring框架——IOC 自动装载

    IOC自动装载有两种形式 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...

  9. shell编程学习之使用jq对json数据进行提取

    shell编程学习之使用jq对json提取 jq命令允许直接在命令行下对JSON进行操作,包括分片.过滤.转换等 ,jq是用C编写,没有运行时依赖,所以几乎可以运行在任何系统上.预编译的二进制文件可以 ...

  10. dnSpy C#逆向工具

    dnSpy下载地址:https://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/dnSpy.shtml ...