十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
Kong 是在客戶端和(微)服務(wù)間轉(zhuǎn)發(fā)API通信的API網(wǎng)關(guān),通過插件擴展功能。

站在用戶的角度思考問題,與客戶深入溝通,找到廣安網(wǎng)站設(shè)計與廣安網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名與空間、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋廣安地區(qū)。
Kong 的官方網(wǎng)站,https://konghq.com/kong
Kong 的官方 Github 站點:https://github.com/kong/kong
Kong 有兩個主要組件:
Kong Server :基于 nginx 的服務(wù)器,用來接收 API 請求。
Apache Cassandra :用來存儲操作數(shù)據(jù)。
Kong 的數(shù)據(jù)存儲支持兩個組件,Cassandra 和 PostgreSQL 。
Kong 官方推薦的 GUI 工具叫 Kong-Dashboard,但是友好度不太好。
Kong 還有一個 GUI 的工具叫做 KongA,GitHub 地址是 https://github.com/pantsel/konga 。
你可以通過增加更多 Kong Server 機器對 Kong 服務(wù)進行水平擴展,通過前置的負(fù)載均衡器向這些機器分發(fā)請求。根據(jù)文檔描述,兩個Cassandra節(jié)點就足以支撐絕大多數(shù)情況,但如果網(wǎng)絡(luò)非常擁擠,可以考慮適當(dāng)增加更多節(jié)點。
對于開源社區(qū)來說,Kong 中最誘人的一個特性是可以通過插件擴展已有功能,這些插件在 API 請求響應(yīng)循環(huán)的生命周期中被執(zhí)行。插件使用 Lua 編寫,而且 Kong 還有如下幾個基礎(chǔ)功能:HTTP 基本認(rèn)證、密鑰認(rèn)證、CORS( Cross-origin Resource Sharing,跨域資源共享)、TCP、UDP、文件日志、API 請求限流、請求轉(zhuǎn)發(fā)以及 nginx 監(jiān)控。
Kong 包可運行在部分的 Linux 發(fā)行版(包括CentOS、RHEL、Debian、Ubuntu)、Mac OS X 和 Docker 、Kubernetes、AWS-cloud、Google-Cloud 中,無論是本地機還是云端服務(wù)器皆可運行。
除了免費的開源版本,Mashape 還提供了付費的企業(yè)版,其中包括技術(shù)支持、使用培訓(xùn)服務(wù)以及 API 分析插件。
當(dāng)前基于 CentOS 7 進行安裝。
當(dāng)前 Kong 的最新版本是 1.3.0 。
下載軟件包可以從官方地址下載
https://bintray.com/kong/kong-rpm/download_file?file_path=centos/7/kong-1.3.0.el7.amd64.rpm
也可以使用yum 倉庫進行下載,
修改 yum 倉庫的 repo 文件的 baseurl 路徑為:
baseurl=https://kong.bintray.com/kong-rpm/centos/7我們接下來使用 yum 的 epel 源來進行安裝。
yum install epel-release
yum install kong-1.3.0.*.noarch.rpm --nogpgcheck
Kong 在運行過程中可以有數(shù)據(jù)庫,也可以沒有數(shù)據(jù)庫。
如果你要使用數(shù)據(jù)庫,你需要使用 kong.conf 配置文件中去配置啟動數(shù)據(jù)庫作為數(shù)據(jù)存儲的方式,以及相應(yīng)的路由或者 Kong 的代理。
如果你不需要使用數(shù)據(jù)數(shù)據(jù)庫,那么你在 kong.conf 文件中指定一個 kong.yml的聲明式配置文件來作為數(shù)據(jù)存儲的文件。
Kong 支持 PostgreSQL 9.5+ 和 Cassandra 3.xx 來作為他的數(shù)據(jù)存儲數(shù)據(jù)庫。
如果使用數(shù)據(jù)庫:
如果你使用 PostgreSQL ,需要初始化一個數(shù)據(jù)庫和一個用戶,例如:
CREATE USER kong; CREATE DATABASE kong OWNER kong;現(xiàn)在 運行 Kong migrations
kong migrations bootstrap [-c /path/to/kong.conf]如果不使用數(shù)據(jù)庫:
如果要以無db模式運行Kong,應(yīng)該首先生成聲明性配置文件。使用下面的命令在當(dāng)前的文件夾下,生成一個普通的 kong.yml
kong config init 在生成好 kong.yml 文件后,編輯你的 kong.conf 文件,設(shè)置如下參數(shù):
database = off
declarative_config = /path/to/kong.yml
kong start [-c /path/to/kong.conf]如果要停止,請使用如下命令來停止
kong stop重載命令是
kong reload
Kong 默認(rèn)運行在本地的 8001 端口
curl -i http://localhost:8001/
接下來可以快速的連接到 Kong 容器以及他的數(shù)據(jù)庫容器。
需要創(chuàng)建一個自定義的網(wǎng)絡(luò),運行容器發(fā)現(xiàn)并且彼此之間通信,接下來創(chuàng)建一個名稱為 kong-net 的網(wǎng)絡(luò),也可以使用其他名稱。
docker network create kong-net
如果你想要使用 Cassandra 容器
docker run -d --name kong-database \
--network=kong-net \
-p 9042:9042 \
cassandra:3如果你想要使用 PostgreSQL 容器
docker run -d --name kong-database \
--network=kong-net \
-p 5432:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
postgres:9.6
運行 migrations 使用一個短暫的 Kong 容器
docker run --rm \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
kong:latest kong migrations bootstrap在上邊的示例中,需要你自行修改你的 KONG_DATABASE 參數(shù)。
當(dāng) migration 已經(jīng)執(zhí)行,并且數(shù)據(jù)庫已經(jīng)準(zhǔn)備好,啟動 Kong 容器來連接數(shù)據(jù)庫容器,比如:
docker run -d --name kong \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_CASSANDRA_CONTACT_POINTS=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, 0.0.0.0:8444 ssl" \
-p 8000:8000 \
-p 8443:8443 \
-p 8001:8001 \
-p 8444:8444 \
kong:latest
Kong 運行在 8001
curl -i http://localhost:8001/
需要創(chuàng)建一個自定義的網(wǎng)絡(luò),運行容器發(fā)現(xiàn)并且彼此之間通信,接下來創(chuàng)建一個名稱為 kong-net 的網(wǎng)絡(luò),也可以使用其他名稱。
docker network create kong-net在沒有數(shù)據(jù)庫的模式下,不一定需要創(chuàng)建一個專用的網(wǎng)絡(luò),但是創(chuàng)建以后可以更好的用來添加其他內(nèi)容,比如 redis 集群支持的限速插件。
對于本指南的目的,Docker 卷是主機內(nèi)的一個文件夾??梢詫⑵溆成涞饺萜髦械奈募A,我們給卷起一個名字,叫 kong-vol
docker volume create kong-vol使用 如下命令查看 卷的 掛載點路徑
$ docker volume inspect kong-vol
[
{
"CreatedAt": "2019-05-28T12:40:09Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/kong-vol/_data",
"Name": "kong-vol",
"Options": {},
"Scope": "local"
}
]記錄 MountPoint 的路徑,下邊會用到。
按照聲明是配置文件的規(guī)范進行修改配置文件,添加必要的配置項,比如 serveice、route、plugins、consumer 等等,保存配置文件在 MountPoint 的路徑下,本文會放在 /var/lib/docker/volumes/kong-vol/_data/kong.yml
使用如下命令啟動 Kong ,并且使用 -v 參數(shù)掛載數(shù)據(jù)卷,使用 -e 參數(shù)指定必須的環(huán)境變量。
$ docker run -d --name kong \
--network=kong-net \
-v "kong-vol:/usr/local/kong/declarative" \
-e "KONG_DATABASE=off" \
-e "KONG_DECLARATIVE_CONFIG=/usr/local/kong/declarative/kong.yml" \
-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, 0.0.0.0:8444 ssl" \
-p 8000:8000 \
-p 8443:8443 \
-p 8001:8001 \
-p 8444:8444 \
kong:latest
Kong 啟動后,就可以使用了,可以使用如下方式來訪問 Kong
curl -i http://localhost:8001/比如,獲取一個service 的列表
curl -i http://localhost:8001/services
Kong 一切正常,啟動以后會默認(rèn)監(jiān)聽如下端口
:8000 Kong 監(jiān)聽來自客戶端的傳入 HTTP 請求,并將其轉(zhuǎn)發(fā)到上游服務(wù)。:8443 Kong 監(jiān)聽來自 HTTPS 流量,這個端口的行為類似于 :8000,只是用來監(jiān)控 HTTPS 的請求,沒有轉(zhuǎn)發(fā)功能,這個端口可以在配置文件里關(guān)閉。:8001 Admin API 接口用來對 Kong 的監(jiān)聽服務(wù)進行配置。:8444 Admin API 監(jiān)聽 HTTPS 的流量。本文描述了 Kong 是什么,以及如何在 CentOS 下和 Docker 下進行安裝。Kong 是 OpenResty 的一個應(yīng)用組件,如果要從源碼安裝 Kong 的話,需要先安裝 OpenResty,具體參考 Compile Source