API网关--Kong的实践
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 sslkong实际监听的地址admin_listen = 0.0.0.0:8001, 127.0.0.1:8444 sslkong的控制台服务client_body_buffer_size = 10240k这个参数代表请求的body内容的缓冲大小kong start;
4. 安装kong-dashboard
使用docker安装是最方便的,否则你需要装一大堆软件
安装文档 https://github.com/PGBI/kong-dashboard
docker run --rm -p 8080:8080 pgbi/kong-dashboard start --kong-url http://172.17.0.9:8001 --basic-auth user=passwd
--rm 当容器exits时自动移除
--basic-auth user=passwd 设置控制台登录账号密码
--kong-url kong的控制台服务
5. 操作kong-dashboard
待续
API网关--Kong的实践的更多相关文章
- 唯品会API网关设计与实践--转
原文地址:https://609518.kuaizhan.com/86/70/p4108366952248f 刘璟宇Leo 唯品会资深研发工程师,在大型高性能分布式系统设计和开发方面有丰富的经验.目前 ...
- API 网关 Kong
什么是 API 网关? 所谓网关,主要作用就是连接两个不同网络的设备,而今天所讲的 API 网关是指承接和分发客户端所有请求的网关层. 为什么需要网关层?最初是单体服务时,客户端发起的所有请求都可以直 ...
- Api网关Kong集成Consul做服务发现及在Asp.Net Core中的使用
写在前面 Api网关我们之前是用 .netcore写的 Ocelot的,使用后并没有完全达到我们的预期,花了些时间了解后觉得kong可能是个更合适的选择. 简单说下kong对比ocelot打动我的 ...
- API网关Kong系列(一)初识
最近工作需要,加上国内Kong的文章相对缺乏(搜来搜去就那么两篇文章),而且官方文档在某些demo上也有一些过时的地方,遂提笔记录下这些,希望能有帮助. 先随大流介绍下KONG(主要参考官网): 官方 ...
- API网关——Kong实践分享
概述 01 什么是Kong Kong是一个在Nginx中运行的Lua应用程序,可以通过lua-nginx模块实现,Kong不是用这个模块编译Nginx,而是与OpenRestry一起发布,OpenRe ...
- API网关Kong系列(三)添加服务
进入之前部署好的kong-ui,默认第一次登陆需要配置kong服务的地址 进入API菜单,点击+号 按照要求填入相关信息 至此完成,可以使用诸如 https://your.domain.com:208 ...
- API网关Kong系列(二)部署
部署环境: [OS] centos 6.8(如果是centos6.5,请自行先升级到6.8,否则不支持docker) [Docker] Client version: 1.7.1 Client API ...
- API网关Kong部署和使用文档
KONG安装使用说明 系统版本:ubuntu14 1.下载安装包 $ wget https://github.com/Mashape/kong/releases/download/0.8.3/kong ...
- API网关Kong系列(四)认证配置
目前根据业务需要先介绍2种认证插件:Key Authentication 及 HMAC-SHA1 认证 Key Authentication 向API添加密钥身份验证(也称为API密钥). 然后,消 ...
随机推荐
- 最全Redis基础知识
NoSQL概述 什么是NoSQL NoSQL不仅仅是SQL,它是Not Only SQL 的缩写,也是众多非关系型数据库的统称NoSQL和关系型数据库一样,也是用来存储数据的仓库. 为什么需要NoSQ ...
- celery异步任务 定时任务
以前项目中用到过 celery ,但是没怎么记笔记,现在在记一下,方便以后用. Celery.png 问:Celery 是什么? 答:Celery 是一个由 Python 编写的简单.灵活.可靠的 ...
- element UI中的tab切换栏
html代码:(用的是el-tab组件) <el-tabs v-model="activeIndex" type="border-card" @tab-c ...
- 建议10:建议使用splice删除数组
删除数组元素的方法有很多种,最简单就是利用length属性来截断数组,但这种方法比较笨,进能够截断尾部元素.在JS中,由于数组其实就是对象,因此可以使用delete运算符可以从数组中移除元素 var ...
- linux下怎么找到某些命令出自于哪个包
我们经常会遇到新装机器或者用别人的linux机器的时候找不到某个命令出自哪个软件包而不知道如何安装的情况,用如下命令可以解决 yum provides TARGET 举例说明: #要找到lsb-rel ...
- Natas5 Writeup(Cookie伪造)
Natas5: 提示不允许进入,没有登录,burp抓包,查看cookie信息后发现存在loggedin项,且值为0,猜测该值代表是否登录,将其修改为1,得到flag. flag:aGoY4q2Dc6M ...
- python基于scrapy框架的反爬虫机制破解之User-Agent伪装
user agent是指用户代理,简称 UA. 作用:使服务器能够识别客户使用的操作系统及版本.CPU 类型.浏览器及版本.浏览器渲染引擎.浏览器语言.浏览器插件等. 网站常常通过判断 UA 来给不同 ...
- 大数据软件安装之Hadoop(Apache)(数据存储及计算)
大数据软件安装之Hadoop(Apache)(数据存储及计算) 一.生产环境准备 1.修改主机名 vim /etc/sysconfig/network 2.修改静态ip vim /etc/udev/r ...
- cisco应用
1.修改VLAN show arp:查看设备的ip地址和mac地址的对应关系,一般查看的是设备ARP缓存 show mac-address-table:查看各端口所学习到的MAC show ip ar ...
- navicat使用、pymysql连接数据库
内容回顾 select distinct 字段1,字段2,... from 表名 where 分组之前的过滤条件 group by 分组条件 having 分组之后过滤条件 order by 排序字段 ...