十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
Kong 是在客戶端和(微)服務(wù)間轉(zhuǎn)發(fā) API 通信的 API 網(wǎng)關(guān),通過(guò)插件擴(kuò)展功能。Kong 有
墊江ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書(shū)銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書(shū)合作)期待與您的合作!兩個(gè)主要組件:
Kong Server :基于 nginx 的服務(wù)器,用來(lái)接收 API 請(qǐng)求。
Apache Cassandra :用來(lái)存儲(chǔ)操作數(shù)據(jù)。
你可以通過(guò)增加更多 Kong Server 機(jī)器對(duì) Kong 服務(wù)進(jìn)行水平擴(kuò)展,通過(guò)前置的負(fù)載均衡器向這些機(jī)器分發(fā)請(qǐng)求。根據(jù)文檔描述,兩個(gè) Cassandra 節(jié)點(diǎn)就足以支撐絕大多數(shù)情況,但如果網(wǎng)絡(luò)非常擁擠,可以考慮適當(dāng)增加更多節(jié)點(diǎn)。
對(duì)于開(kāi)源社區(qū)來(lái)說(shuō),Kong 中最誘人的一個(gè)特性是可以通過(guò)插件擴(kuò)展已有功能,這些插件在 API 請(qǐng)求響應(yīng)循環(huán)的生命周期中被執(zhí)行。插件使用 Lua 編寫(xiě),而且 Kong 還有如下幾個(gè)基礎(chǔ)功能:HTTP 基本認(rèn)證、密鑰認(rèn)證、CORS( Cross-origin Resource Sharing,跨域資源共享)、TCP、UDP、文件日志、API 請(qǐng)求限流、請(qǐng)求轉(zhuǎn)發(fā)以及 nginx 監(jiān)控。
Kong 包可運(yùn)行在某些 Linux 發(fā)行版、Mac OS X 和 Docker 中,無(wú)論是本地機(jī)還是云端服務(wù)器皆可運(yùn)行。
除了免費(fèi)的開(kāi)源版本,Mashape 還提供了付費(fèi)的企業(yè)版,其中包括技術(shù)支持、使用培訓(xùn)服務(wù)以及API 分析插件。
安裝前準(zhǔn)備
安裝好docker穩(wěn)定版本
會(huì)docker 的基本使用
了解kong概念和使用(文檔地址: https://getkong.org/docs/)
概念術(shù)語(yǔ)
upstream: 是對(duì)上游服務(wù)器的抽象;
target: 代表了一個(gè)物理服務(wù),是 ip + port 的抽象;
service: 是抽象層面的服務(wù),他可以直接映射到一個(gè)物理服務(wù)(host 指向 ip + port),也可以指向一個(gè) upstream 來(lái)做到負(fù)載均衡;
route: 是路由的抽象,他負(fù)責(zé)將實(shí)際的 request 映射到 service。
默認(rèn)情況下,KONG監(jiān)聽(tīng)的端口為:
8000: 此端口是KONG用來(lái)監(jiān)聽(tīng)來(lái)自客戶端傳入的HTTP請(qǐng)求,并將此請(qǐng)求轉(zhuǎn)發(fā)到上有服務(wù)器;
8443: 此端口是KONG用來(lái)監(jiān)聽(tīng)來(lái)自客戶端傳入的HTTP請(qǐng)求的。它跟8000端口的功能類似,但是它只是用來(lái)監(jiān)聽(tīng)HTTP請(qǐng)求的,沒(méi)有轉(zhuǎn)發(fā)功能。可以通過(guò)修改配置文件來(lái)禁止它;
8001: Admin API,通過(guò)此端口,管理者可以對(duì)KONG的監(jiān)聽(tīng)服務(wù)進(jìn)行配置;
8444: 通過(guò)此端口,管理者可以對(duì)HTTP請(qǐng)求進(jìn)行監(jiān)控.
Kong安裝
這里以0.13.x 以上的版本為例子,廢棄了API實(shí)體對(duì)象的使用。
創(chuàng)建docker網(wǎng)絡(luò)
docker network create kong-net
安裝數(shù)據(jù)庫(kù),kong支持 postgres( postgres9.5以上)和Apache Cassandra
創(chuàng)建啟動(dòng)數(shù)據(jù)庫(kù),這里以postgres9.5作為數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)數(shù)據(jù),如下:
$ docker run -d --name kong-database \
--network=kong-net \
-p 5432:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
postgres:9.6
數(shù)據(jù)庫(kù)準(zhǔn)備,初始化Kong數(shù)據(jù)
docker run --rm \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
kong:0.14.1 kong migrations up
啟動(dòng)kong
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:0.14.1
查看kong是否正在運(yùn)行
$ curl -i http://localhost:8001
如出現(xiàn)以下則表示沒(méi)問(wèn)題:
通過(guò)Restful Admin API 管理kong,參考地址:https://docs.konghq.com/0.14.x/admin-api/
啟動(dòng)Kong Dashboard 或者 konga
官方推出了dashboard來(lái)管理Kong,界面清爽,使用方便,我們接著往下看。
創(chuàng)建并運(yùn)行Kong dashboard容器
docker run -d \
--network=kong-net \
--link kong:kong -p 8008:8080 pgbi/kong-dashboard start \
--kong-url http://kong:8001 \
--basic-auth kong=kong
然后訪問(wèn) http://IP:8008
登錄賬號(hào):kong 密碼:kong,如下圖:
Konga安裝過(guò)程
當(dāng)前KONG的社區(qū)版是沒(méi)有dashboard的,但是付費(fèi)的企業(yè)版是有帶的,并且還有一些企業(yè)版才能使用的插件以及升級(jí)后的企業(yè)版插件。所以對(duì)于使用社區(qū)版的用戶而言,排除自己去擼一個(gè)dashboard的這種選擇,第三方開(kāi)源的dashboard無(wú)疑是選。當(dāng)前GitHub上還在更新維護(hù)的dashboard有三個(gè),分別是kong-dashboard,kongdash 和 konga。
說(shuō)道Kong的管理GUI,網(wǎng)上說(shuō)的比較多的都是kong-dashboard,但目前最新版(v3.6.0)似乎并未支持最新版本的Kong。而目前在github能找到star比較多的就是konga了。konga不僅支持了Kong的最新版本(service和route的拆分新特性)同時(shí)支持管理員的權(quán)限控制和多個(gè)Kong連接池的管理。Konga由于自帶了用戶權(quán)限控制和Kong連接池管理,所以需要一些數(shù)據(jù)持久化處理。默認(rèn)支持的數(shù)據(jù)庫(kù)有mongodb、postgres、mysql。這里我們選擇的是PostgresSQL,原因是KONG連接的數(shù)據(jù)庫(kù)也是PGSQL,這樣可以減少數(shù)據(jù)庫(kù)的部署。
啟動(dòng)一個(gè)容器準(zhǔn)備Konga的數(shù)據(jù)庫(kù)
docker run --rm --network=kong-net pantsel/konga -c prepare -a postgres -u postgresql://kong@kong-database:5432/konga_db
當(dāng)遷移運(yùn)行了,我們可以啟動(dòng) Konga
docker run -p 1337:1337 \
--network=kong-net \
-e "DB_ADAPTER=postgres" \
-e "DB_HOST=kong-database" \
-e "DB_USER=kong" \
-e "DB_DATABASE=konga_db" \
-e "KONGA_HOOK_TIMEOUT=120000" \
-e "NODE_ENV=production" \
--name konga \
pantsel/konga
After a while, Konga will be available at:
訪問(wèn) http://IP:1337
啟動(dòng)postgre admin 4
創(chuàng)建并運(yùn)行postgre admin 4容器
docker run -d -p 8009:80 \
--network=kong-net \
--link kong-database:kong-database \
-e "PGADMIN_DEFAULT_EMAIL=admin@admin.com" \
-e "PGADMIN_DEFAULT_PASSWORD=admin@admin.com" \
-d dpage/pgadmin4
然后訪問(wèn) http://IP:8009
登錄賬號(hào):admin@admin.com,密碼:admin@admin.com
創(chuàng)建server,起個(gè)名字Host=XXX port:5432 用戶名密碼為kong
參考文檔
1.kong官方文檔:https://getkong.org/docs/
2.docker安裝kong:https://blog.csdn.net/freewebsys/article/details/80428830
3.選擇Kong作為你的API網(wǎng)關(guān):https://www.itcodemonkey.com/article/5980.html
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。