Kong網(wǎng)關(guān)-初探

1 Kong網(wǎng)關(guān)介紹

Kong是在Nginx的基礎(chǔ)上構(gòu)建的,更確切的說(shuō)Kong是在Nginx中運(yùn)行的Lua應(yīng)用程序,Kong包含了OpenResty。Kong 提供了大量的插件和動(dòng)態(tài)管理API功能雷客。
Kong 大致功能特性

  • 動(dòng)態(tài)路由: Kong 的背后是 OpenResty+Lua,所以從 OpenResty 繼承了動(dòng)態(tài)路由的特性
  • 熔斷
  • 健康檢查
  • 日志: 可以記錄通過(guò) Kong 的 HTTP滓鸠,TCP猜敢,UDP 請(qǐng)求和響應(yīng)。
  • 鑒權(quán): 權(quán)限控制耐量,IP 黑白名單飞蚓,同樣是 OpenResty 的特性
  • 監(jiān)控: Kong 提供了實(shí)時(shí)監(jiān)控插件
  • 認(rèn)證: 如數(shù)支持 HMAC, JWT, Basic, OAuth2.0 等常用協(xié)議
  • 限流
  • REST API: 通過(guò) Rest API 進(jìn)行配置管理,從繁瑣的配置文件中解放
  • 可用性: 天然支持分布式
  • 高性能: 背靠非阻塞通信的 nginx廊蜒,性能自不用說(shuō)
  • 插件機(jī)制: 提供眾多開(kāi)箱即用的插件趴拧,且有易于擴(kuò)展的自定義插件接口,用戶可以使用 Lua 自行開(kāi)發(fā)插件

2 安裝包準(zhǔn)備

Kong的一些配置存儲(chǔ)可以是單機(jī)文件山叮,也可以是postgre著榴,cassandra。本文使用cassandra做Kong的數(shù)據(jù)庫(kù)屁倔。

3 安裝單機(jī)版

3.1 安裝Cassandra

Cassandra cqlsh 依賴了python2.7 我使用的Centos7自帶脑又。假設(shè)已經(jīng)安裝了JDK1.8.
Cassandra目前也是單機(jī)部署。

tar -xvf apache-cassandra-3.11.6-bin.tar.gz
cd apache-cassandra-3.11.6

Cassandra 不推薦使用root用戶啟動(dòng)服務(wù)锐借,我們創(chuàng)建一個(gè)cassandra組和用戶

   groupadd cassandra
   useradd cassandra -g cassandra
   su - cassandra
   chown -R cassandra:cassandra apache-cassandra-3.11.6

需要修改Cassandra配置文件问麸,找到以下屬性進(jìn)行修改

[root@sybj-int-26 apache-cassandra-3.11.6]# cd conf/
[root@sybj-int-26 conf]# vim cassandra.yaml 
# cassandra 節(jié)點(diǎn)之間的監(jiān)聽(tīng)地址
listen_address: 10.0.3.26
# rpc 監(jiān)聽(tīng)地址
rpc_address: 10.0.3.26
seed_provider:
    # Addresses of hosts that are deemed contact points. 
    # Cassandra nodes use this list of hosts to find each other and learn
    # the topology of the ring.  You must change this if you are running
    # multiple nodes!
    - class_name: org.apache.cassandra.locator.SimpleSeedProvider
      parameters:
          # seeds is actually a comma-delimited list of addresses.
          # Ex: "<ip1>,<ip2>,<ip3>"
          - seeds: "10.0.3.26"

修改conf/jvm.options配置文件,設(shè)置一下內(nèi)存

-Xms6G
-Xmx6G

啟動(dòng)Cassandra

[cassandra@sybj-int-26 apache-cassandra-3.11.6]$ cd bin
[cassandra@sybj-int-26 bin]$ ./cassandra

添加到開(kāi)機(jī)啟動(dòng)

[Unit]
Description=Cassandra Server Service
After=network.service
 
[Service]
Type=simple
Environment=JAVA_HOME=/usr/local/jdk1.8.0_231
 
PIDFile=/opt/ylbzj/apache-cassandra-3.11.6/bin/cassandra.pid
User=cassandra
Group=cassandra
ExecStart=/opt/ylbzj/apache-cassandra-3.11.6/bin/cassandra -p /opt/ylbzj/apache-cassandra-3.11.6/bin/cassandra.pid
ExecStop=/bin/kill -s QUIT $MAINPID

[Install]
WantedBy=multi-user.target

3.1 安裝Kong

Cassandra單機(jī)版安裝到了10.0.3.26钞翔,另找一臺(tái)機(jī)器10.0.3.25安裝Kong Gateway

 yum install kong-2.0.2.*.noarch.rpm --nogpgcheck

執(zhí)行安裝命令后严卖,安裝成功,但是會(huì)報(bào)一個(gè)腳本錯(cuò)誤布轿,暫時(shí)不處理哮笆。
kong安裝成功后配置文件在/etc/kong/目錄

修改Kong配置文件

  cd /etc/hong
  cp kong.conf.default kong.conf
  vim kong.conf
數(shù)據(jù)庫(kù)使用cassandra
database = cassandra

# cassandra 服務(wù)地址
cassandra_contact_points = 10.0.3.26 

cassandra_port = 9042 

# Kong poll 數(shù)據(jù)庫(kù)的周期配置。
db_update_frequency = 5 

# 使用Cassandra數(shù)據(jù)庫(kù)需要指定此配置驮捍,數(shù)據(jù)變更傳播到 kong 集群的最大時(shí)間是 db_update_frequency + db_update_propagation 秒疟呐。(cassandra的數(shù)據(jù)一致性延遲)。
db_update_propagation = 5 

# 該配置項(xiàng)的時(shí)間(單位秒)是 kong 緩存數(shù)據(jù)庫(kù)實(shí)體的時(shí)間(包括緩存命中或者穿透)东且,該存活時(shí)間是一種保護(hù)措施启具,以防 kong 節(jié)點(diǎn)漏掉處理緩存無(wú)效事件,避免舊數(shù)據(jù)長(zhǎng)時(shí)間沒(méi)有被清理珊泳。當(dāng)緩存生存時(shí)間到了鲁冯,緩存值將會(huì)被清理掉拷沸,下一次將會(huì)從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)并再次緩存起來(lái)
db_cache_ttl = 3600 

啟動(dòng)

# 初始化數(shù)據(jù)庫(kù)
kong migrations bootstrap
# 啟動(dòng)
kong start

測(cè)試Admin 服務(wù),能否訪問(wèn)

[root@sybj-int-25 kong]# curl -i  http://localhost:8001
HTTP/1.1 200 OK
Date: Thu, 26 Mar 2020 09:14:00 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
Server: kong/2.0.2
Content-Length: 8959
X-Kong-Admin-Latency: 160
  1. 添加服務(wù)
[root@sybj-int-25 ~]# curl -i -X POST   --url http://localhost:8001/services/   --data 'name=test_baidu'   --data 'url=http://baidu.com'
HTTP/1.1 201 Created
Date: Thu, 26 Mar 2020 10:08:55 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
Server: kong/2.0.2
Content-Length: 289
X-Kong-Admin-Latency: 11

{"host":"baidu.com","created_at":1585217335,"connect_timeout":60000,"id":"49f4423b-87b9-45f1-a57b-c7f6f3fd4b40","protocol":"http","name":"test_baidu","read_timeout":60000,"port":80,"path":null,"updated_at":1585217335,"retries":5,"write_timeout":60000,"tags":null,"client_certificate":null}
  1. 添加服務(wù)路由
[root@sybj-int-25 ~]# curl -i -X POST   --url http://localhost:8001/services/test_baidu/routes --data 'hosts[]=baidu.com'
HTTP/1.1 201 Created
Date: Thu, 26 Mar 2020 10:13:09 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
Server: kong/2.0.2
Content-Length: 427
X-Kong-Admin-Latency: 24

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市薯演,隨后出現(xiàn)的幾起案子撞芍,更是在濱河造成了極大的恐慌,老刑警劉巖跨扮,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件序无,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡衡创,警方通過(guò)查閱死者的電腦和手機(jī)帝嗡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)璃氢,“玉大人哟玷,你說(shuō)我怎么就攤上這事∫灰玻” “怎么了巢寡?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)椰苟。 經(jīng)常有香客問(wèn)我抑月,道長(zhǎng),這世上最難降的妖魔是什么尊剔? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任爪幻,我火速辦了婚禮,結(jié)果婚禮上须误,老公的妹妹穿的比我還像新娘挨稿。我一直安慰自己,他們只是感情好京痢,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布奶甘。 她就那樣靜靜地躺著,像睡著了一般祭椰。 火紅的嫁衣襯著肌膚如雪臭家。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,475評(píng)論 1 312
  • 那天方淤,我揣著相機(jī)與錄音钉赁,去河邊找鬼。 笑死携茂,一個(gè)胖子當(dāng)著我的面吹牛你踩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼带膜,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼吩谦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起膝藕,我...
    開(kāi)封第一講書(shū)人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤式廷,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后芭挽,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體滑废,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年览绿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了策严。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片穗慕。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡饿敲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出逛绵,到底是詐尸還是另有隱情怀各,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布术浪,位于F島的核電站瓢对,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏胰苏。R本人自食惡果不足惜硕蛹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望硕并。 院中可真熱鬧法焰,春花似錦、人聲如沸倔毙。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)陕赃。三九已至卵蛉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間么库,已是汗流浹背傻丝。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留诉儒,地道東北人葡缰。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親运准。 傳聞我的和親對(duì)象是個(gè)殘疾皇子幌氮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容