一、kong的介绍和安装

Kong是一个基于Openresty开发的网关平台,可以基于插件的形式控制网关的认证、负载、限速等。

Kong默认插件

  1. 身份认证:Kong提供了Basic Authentication、Key authentication、OAuth2.0 authentication、HMAC authentication、JWT、LDAP authentication认证实现。

  2. 安全:ACL(访问控制)、CORS(跨域资源共享)、动态SSL、IP限制、爬虫检测实现。

  3. 流量控制:请求限流(基于请求计数限流)、上游响应限流(根据upstream响应计数限流)、请求大小限制。限流支持本地、Redis和集群限流模式。

  4. 分析监控:Galileo(记录请求和响应数据,实现API分析)、Datadog(记录API Metric如请求次数、请求大小、响应状态和延迟,可视化API Metric)、Runscope(记录请求和响应数据,实现API性能测试和监控)。

  5. 转换:请求转换(在转发到upstream之前修改请求)、响应转换(在upstream响应返回给客户端之前修改响应)。

  6. 日志:TCP、UDP、HTTP、File、Syslog、StatsD、Loggly等。

在docker上运行kong

1.安装pg

docker run -d --name kong-database \
              -p 5432:5432 \
              -e "POSTGRES_USER=kong" \
              -e "POSTGRES_DB=kong" \
              postgres:9.5

2.初始化postgres数据库

docker run --rm \
    --link kong-database:kong-database \
    -e "KONG_DATABASE=postgres" \
    -e "KONG_PG_HOST=kong-database" \
    -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
    kong:0.12.3 kong migrations up

3.运行起来kong

docker rm $(docker ps -a -q)
docker run -d --name kong \
    --link kong-database:kong-database \
    -e "KONG_PG_HOST=kong-database" \
    -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
    -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
    -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
    -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
    -e "KONG_ADMIN_LISTEN=0.0.0.0:8001" \
    -e "KONG_ADMIN_LISTEN_SSL=0.0.0.0:8444" \
    -p 8000:8000 \
    -p 8443:8443 \
    -p 8001:8001 \
    -p 8444:8444 \
    kong:0.12.3

centos安装

1.1 centos6安装pgsql数据库

Install the repository RPM:

yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-6-x86_64/pgdg-centos10-10-2.noarch.rpm

Install the client packages:

yum install postgresql10

Optionally install the server packages:

yum install postgresql10-server

Optionally initialize the database and enable automatic start:

service postgresql-10 initdb
chkconfig postgresql-10 on
service postgresql-10 start

1.2 centos7安装pgsql数据库

Install the repository RPM:

yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm

Install the client packages:

yum install postgresql10

Optionally install the server packages:

yum install postgresql10-server

Optionally initialize the database and enable automatic start:

/usr/pgsql-10/bin/postgresql-10-setup initdb
systemctl enable postgresql-10
systemctl start postgresql-10

2.创建pgsql用户

进入数据库

su - postgres
psql

得到:

psql (9.3.2)  
Type "help" for help.  
  
postgres=#

修改密码

postgres=# \password postgres  

创建用户和数据库

postgres=# CREATE USER kong WITH PASSWORD 'kong';  
postgres=# CREATE DATABASE kong OWNER kong;  

3.修改pgsql配置文件

/var/lib/pgsql/data/postgresql.conf

listen_addresses = 'localhost'  
修改为:
listen_addresses = '*'  

pg_hba.conf修改:
会看到如下样式的规则:

# TYPE    DATABASE        USER            ADDRESS                 METHOD  
  host    all             all             127.0.0.1/32            md5  
  local   all             postgres                                peer  

type:

local — Unix-domain socket  
host — plain or SSL-encrypted TCP/IP socket  
hostssl — is an SSL-encrypted TCP/IP socket  
hostnossl — plain TCP/IP socket  

METHOD:

md5 -- 客户端需要提供密码来进行md5算法处理  
ident -- 根据操作系统获取连接的客户端的用户名,并且使用指定匹配查询用户名  
trust -- 任何连接到PostgreSQL的人都可以作为任何用户并且不需要提供密码  
peer -- 从操作系统中获取用户名,并确认用户名是否匹配数据库用户名  

我们添加一个

host all all 127.0.0.1/32 trust

4.下面安装kong

centos6:

https://bintray.com/kong/kong-community-edition-rpm/download_file?file_path=centos/6/kong-community-edition-0.13.0.el6.noarch.rpm

centos7:

https://bintray.com/kong/kong-community-edition-rpm/download_file?file_path=centos/7/kong-community-edition-0.13.0.el7.noarch.rpm

安装:

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

源码安装:

安装make命令

yum install -y gcc gcc-c++

安装openresty
openssl openssl-devel 或者使用yum安装

wget https://openresty.org/download/openresty-1.11.2.5.tar.gz
./configure --prefix=/opt/openresty-1.11.2.5 \
--with-luajit \
--with-http_realip_module \
--with-pcre-jit \
--with-ipv6 \
--with-http_realip_module \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_v2_module \
--with-openssl=../openssl-1.0.2o --with-pcre=../pcre-8.40 -j4 --with-zlib=../zlib-1.2.11

$ export PATH="$PATH:/opt/openresty-1.11.2.5/bin"

安装luarocks

http://luarocks.github.io/luarocks/releases/luarocks-2.4.3.tar.gz

./configure --prefix=/opt/luarocks-2.4.3 \
  --lua-suffix=jit \
  --with-lua=/opt/openresty-1.11.2.5/luajit \
  --with-lua-include=/opt/openresty-1.11.2.5/luajit/include/luajit-2.1

提示找不到unzip的时候,安装unzip

wget https://downloads.sourceforge.net/infozip/unzip60.tar.gz
make prefix=/usr MANDIR=/usr/share/man/man1 \
 -f unix/Makefile install

设置环境变量

$ export PATH="$PATH:/opt/luarocks-2.4.3/bin"

安装kong

luarocks install kong 0.12.3-0

5.修改配置文件

proxy_listen = 0.0.0.0:80
admin_listen = 0.0.0.0:8001

nginx_worker_processes = 1

database = postgres
pg_host = 127.0.0.1 
pg_port = 6432
pg_user = kong 
pg_password = kong
pg_database = kong   

6.初始化数据库

初始化数据配置:

kong migrations up [-c /etc/kong/kong.conf]

7.启动kong

kong start -c kong.conf

可以访问127.0.0.1:8001就OK

可以安装一个管理端

# Install Kong Dashboard
npm install -g kong-dashboard

# Start Kong Dashboard
kong-dashboard start --kong-url http://127.0.0.1:8001
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容