之前項目上api的接口用的是自己nginx搭建的反向代理接口,覺得功能性比較查差,故而另辟蹊徑找到了kong作為接口網關服務。
kong會把所有的後端接口對應的資料放到cassandra資料庫中,對外隻暴漏自己的接口,這樣對于前端的開發人員來說就透明了許多,也友善了許多,後端的運維人員管理起來也友善了許多。
檢查kong是不是正常啟動了,預設不修改配置檔案的情況下會報連接配接不上PostgreSQL,這裡先忽略,繼續裝cassandra
正常啟動的話會輸出:[OK] Started
kong的監聽端口:
這裡就不示範安裝了,yum也行,綠色版解壓也行。java1.7 或者1.8都可以,注意cassandra3.0必須要jdk1.8版本才行。這裡我們由于kong的支援版本是2.x,這裡介紹2.x的安裝。
估計會報這個錯誤
cqlsh是cassandra的用戶端查詢工具
cqlsh客戶的工具需要python2.7支援,centos6.x預設是python2.6版本,這裡我新安裝下python2.7
首先安裝 python 工具需要的額外軟體包 SSL, bz2, zlib
因為yum使用python2.6 故而要改一下yum的環境,不然yum将沒法使用
解決cqlsh報錯問題,下面的步驟可能要耗費很長的時間,建議大家耐心等等
小編發現kong的配置檔案總計三處
最開始的時候,小編裝好資料庫和kong,啟動kong的時候,修改了/etc/kong/kong.conf.default的配置連接配接資料庫的類型為cassandra,啟動的時候死活就是連不上啊,報的還是連不上PostgreSQL資料庫,而且每次重新開機kong服務後,修改後的配置檔案被重置了。真實奇葩,猜想必然這個配置檔案不是主配置檔案啊。
/usr/local/share/lua/5.1/kong/templates/kong_defaults.lua----->主配置檔案,那咱就來看看這個檔案的具體内容吧。
kong 增加api調用
原有接口調用通路路徑:
<a href="http://192.168.1.100:5105/notice/getNotice">http://192.168.1.100:5105/notice/getNotice</a>
添加調用規則語句:
#--url 指定本地的kong通路連接配接
#--d name 指定添加的api的規則名稱
#-d upstream_rul 指定通路原api的host以及端口
#-d request_path 指定請求路徑
添加api規則後通路語句:
<a href="http://192.168.5.250:8000/notice/getNotice">http://192.168.5.250:8000/notice/getNotice</a>
對某個通路規則進行使用者驗證設定
設定語句文法:
#--url 要對那個通路規則進行設定,apis後面對應的是上面設定的api通路規則中設定的name關鍵字,其餘為固定格式
#--data 設定權限通路關鍵字
增加一個使用者:
#--url 規定格式
#--data username 設定增加的使用者名稱
為消費者添加證書:
#--url 倒數第二個請求路徑為要授予的使用者名稱
#--data key 設定的密碼
通過key通路api請求--
or
<a href="http://192.168.5.250:8000/notice/getNotice?apikey=test_randomNum123456">http://192.168.5.250:8000/notice/getNotice?apikey=test_randomNum123456</a>
删除api規則
檢視kong的所有api規則資訊
<a href="http://192.168.5.250:8001/apis">http://192.168.5.250:8001/apis</a>
下載下傳node綠色版,版本5.11.1
<a href="https://nodejs.org/en/blog/release/v5.11.1/">https://nodejs.org/en/blog/release/v5.11.1/</a>
解壓後,追加node中的bin目錄到PATH環境變量中即可。
參考文獻[1]中說:這個神奇的腳本檔案會幫我們下載下傳、配置、安裝依賴庫,可以節約我們大量的時間和精力。
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
編譯(注意:此步驟非常耗時)
-j4選項是make對多核處理器的優化,如果不成功請使用 make
解決辦法:sudo yum -y install glibc-devel.i686 glibc-devel
sudo make install
這裡面有一個放長重要的東西,非常重要,小編這個坑足足邁了3次才邁過去。
Compatibility matrix
Kong-Dashboard versions
Kong versions
Node versions
1.x.x
0.6.x, 0.7.x, 0.8.x, 0.9.x
2.x.x
0.10.x
3.x.x
0.9.x, 0.10.x, 0.11.x
>= 6.0.0
Install Kong Dashboard
npm install -g kong-dashboard@v1
Start Kong Dashboard
kong-dashboard start
To start Kong Dashboard on a custom port
kong-dashboard start -p [port]
To start Kong Dashboard with basic auth
kong-dashboard start -a user=password
這樣啟動會在背景運作,斷掉終端程序還在
nohup kong-dashboard start -p 8080 -a xin=sir >kong-dashboard.log &
如果kong有使用者名和密碼那麼選擇Basic auth,配置注意位址(kong的管理位址,預設為http://kong server機器或綁定的域名:8001)後面不要多加"/"如下圖 否則點選API會出現not found api之類的提示,當然也要確定kong server正常運作中
新增API與使用新增的API時,需要注意如果需要使用位址方式指向api即 需要勾選strip-request path 如果使用head中帶請求位址的方式,需要在head中帶 X-Host-Override post.demo (即request host)
通路kong:8000/version/getVersion 就能看到你想看的畫面啦。
可配置項:
year:年
month: 月
day: 天
minute:分鐘,這裡我們配置3,表示每分鐘不能超過3次調用。
Second: 秒
計算頻率的次元:月/天/分鐘/秒, 假如同時配置多個次元,會同時生效。
驗證:連續一分鐘内請求,第四次,報錯
{
"message": "API rate limit exceeded"
}
根據年、月、日、時、分、秒設定限流規則,多個限制同時生效。
比如:每天不能超過10次調用,每分不能超過3次。
當一分鐘内,通路超過3次,第四次就會報錯。
當一天内,通路次數超過10次,第十一次就會報錯。
啟動方式:
問題一:
可能會出現的問題,當使用源碼安裝的時候,啟動後通路8080端口如果出現Not Found,這個多半是因為沒有建構npm造成的。
問題二:
cassandra資料庫啟動後自動down掉,日志報錯報錯說jdk需要大于1.7_25這個更新jdk就可以了。
使用zabbix擷取參數 進行頁面監控就可以了
本文轉自 xinsir999 51CTO部落格,原文連結:http://blog.51cto.com/xinsir/2058768,如需轉載請自行聯系原作者