Kong是一個在Nginx中運行的Lua應用程序,能夠經過lua-nginx模塊實現,Kong不是用這個模塊編譯Nginx,而是與OpenRestry一塊兒發佈,OpenRestry已經包含了lua-nginx-module,OpenRestry是Nginx的一組擴展功能模塊。html
Kong是一個Api Gateway,經過插件的形式提供負載均衡,日誌記錄,身份驗證,速率限制,轉換等功能。nginx
Kong能夠很輕鬆擴展功能,模塊化,能夠運行在任何基礎設施上。git
Route:是請求的轉發規則,按照Hostname和PATH,將請求轉發給Service。github
Services:是多個Upstream的集合,是Route的轉發目標。sql
Consumer:是API的用戶,裏面記錄用戶的一些信息。docker
Plugin:是插件,plugin能夠是全局的,綁定到Service,綁定到Router,綁定到Consumer。數據庫
Certificate:是https證書。bootstrap
Sni:是域名與Certificate的綁定,指定了一個域名對應的https證書。vim
Upstream:是負載均衡策略。後端
Target:是最終處理請求的Backend服務。
安全性
Syslog
監控
轉發代理
認證
速率限制
故障檢測和恢復
……
更多詳情參考:https://docs.konghq.com/hub/
1.1版本之後支持無db模式
加入kong後,每一個客戶端對API的請求將首先到達Kong,而後被代理到最終API,在請求和響應之間,Kong將執行任何已安裝的插件,擴展API功能集,Kong有效的成爲每一個API的入口點。
Kong支持在任何基礎設施上運行,支持docker、packages、vagrant、Homebrew、CloudFormation、AWS、Azure、Kubernetes等。
本次部署基於package方式,部署軟件版本。
軟件 | 版本 |
---|---|
Kong | 1.0.3 |
Postgresql | 9.6 |
Kong-dashboard | 3.5.0 |
01部署Postgresql
docker run -- name postgres - e POSTGRES_PASSWORD = 123456 - p 5432 : 5432 - d postgres : 9.6
02建立用戶及數據庫
登錄
psql
-
U postgres
-
h
10.20
.
1.190
-
p
5432
建立用戶
create user kong
with
password
‘
kong
’;
create database kong owner kong
;
q
03下載安裝包
wget:https://kong.bintray.com/kong...:kong-1.0.3.el7.noarch.rpm
04安裝配置
yum install kong
-
1.0
.
3.el7.noarch
.
rpm
拷貝配置
cp
/
etc
/
kong
/
kong
.
conf
.
default
/
etc
/
kong
/
kong
.
conf
配置
admin_listen
=
0.0
.
0.0
:
8001
,
0.0
.
0.0
:
8444
ssl
pg_host
=
10.20
.
1.190
pg_port
=
5432
pg_user
=
kong
pg_password
=
kong
pg_database
=
kong
保存並退出。
05啓動kong
kong migrations bootstrap
-
c
/
etc
/
kong
/
kong
.
conf
–
vv
kong start
-
c
/
etc
/
kong
/
kong
.
conf
06部署kong-dashboard
dashboard目前只支持kong版本1.0.3,kong最新版本不支持,使用pgbi/kong-dashboard鏡像
啓動dashboard
docker run
-
p
8888
:
8080
pgbi
/
kong
-
kong
-
url http
:
//10.20.1.190:8001
01upstream
02target
03service
04routers
05驗證
06插件
1.Base-auth
建立consumer
建立Basic-auth-credential
服務開啓Basic-auth
驗證
未加用戶信息,沒權限,效果以下:
加入用戶信息後,效果以下:
01Dns SRV
Kong利用Dns輪詢訪問後端應用。
1.架構圖
2.檢查服務域名
使用Dns作服務發現,查看boms-user-service服務以下:
dig @10.20.11.118 -p 8600 boms-user-service.service.dc1.consul SRV
含義解釋:
調用服務域名boms-user-service.service.dc1.consul,經過dns解析找到實例ip+port,如上例中10.20.11.118:8081。
3.修改kong配置
vim 編輯kong.conf,增長: dns_resolver : 127.0 . 0.1 : 8600
4.kong中使用
在kong中手動增長一個service,host填入服務域名,增長router,便可轉發。
5.總結
須要手動在kong中建立服務,而且僅適用consul註冊中心。
https://github.com/faizalprib...
02Agent 輪詢
1.架構圖
agent負責監聽註冊中心,動態調用kong admin API建立upstream、target、service、router等資源。
用戶經過boms平臺調用admin API修改router信息,實現服務轉發功能,在此數據基礎之上在啓用插件,豐富功能。
01命令行
https://docs.konghq.com/1.0.x...
02Admin API
https://docs.konghq.com/1.0.x...
例如:
03插件開發
https://docs.konghq.com/1.0.x... 插件開發工具包。
參考
https://docs.konghq.com Kong官方文檔
https://docs.konghq.com/hub/k... 插件文檔
https://www.lijiaocn.com/%E6%... dns-srv 詳解
https://github.com/faizalprib...