kong 的使用起來很簡單,對於熟悉Nginx的大神來講,就更不在話下了。不過在使用前先來介紹下其內的一些基本概念,以便咱們在使用時不會感到懵逼。數據庫
從上圖中能夠看出其中8000/8443分別是Http和Https的轉發端口,等介於Nginx的80端口,而8001端口即是默認的管理端口,咱們能夠經過Http Restful API來動態管理Kong的配置。segmentfault
如: 咱們來看一個典型的Nginx的配置對應在Kong上是怎麼樣的
下面是一個典型的Nginx 配置後端
upstream helloUpstream { server localhost:3000 weight=100; } server { listen 80; location /hello { proxy_pass http://helloUpstream; } }
這是一個典型的Nginx 轉發配置我在就很少囉嗦了。
下面咱們來看看其對應Kong中的配置架構
# 配置 upstream curl -X POST http://localhost:8001/upstreams --data "name=helloUpstream" # 配置 target curl -X POST http://localhost:8001/upstreams/hello/targets --data "target=localhost:3000" --data "weight=100" # 配置 service curl -X POST http://localhost:8001/services --data "name=hello" --data "host=helloUpstream" # 配置 route curl -X POST http://localhost:8001/routes --data "paths[]=/hello" --data "service.id=8695cc65-16c1-43b1-95a1-5d30d0a50409" curl -X POST http://localhost:8001/routes --data "hosts[]=a.com,b.com,*.abc.com" --data "service.id=8695cc65-16c1-43b1-95a1-5d30d0a50409"
這一切配置都是經過其Http Restful API 來動態實現的,無需咱們在手動的 reload Nginx.conf 。開發的同窗看到這是否是感受到很幸福了。負載均衡
在上述的配置中涉及到了幾個概念:upstrean、target、service、route等概念,它們是Kong的幾個核心概念,也是咱們在使用Kong Api 時常常打交道的,下面咱們就其幾個核心概念作一下簡單的說明。curl
Upstream 對象表示虛擬主機名,可用於經過多個服務(目標)對傳入請求進行負載均衡。例如:service.v1.xyz 爲Service對象命名的上游host是service.v1.xyz對此服務的請求將代理到上游定義的目標。微服務
目標IP地址/主機名,其端口表示後端服務的實例。每一個上游均可以有多個target,而且能夠動態添加Target。url
因爲上游維護Target的更改歷史記錄,所以沒法刪除或者修改Target。要禁用目標,請發佈一個新的Targer weight=0,或者使用DELETE來完成相同的操做。spa
顧名思義,服務實體是每一個上游服務的抽象。服務的示例是數據轉換微服務,計費API等。插件
服務的主要屬性是它的URL(其中,Kong應該代理流量),其能夠被設置爲單個串或經過指定其protocol, host,port和path。
服務與路由相關聯(服務能夠有許多與之關聯的路由)。路由是Kong的入口點,並定義匹配客戶端請求的規則。一旦匹配路由,Kong就會將請求代理到其關聯的服務。
路由實體定義規則以匹配客戶端的請求。每一個Route與一個Service相關聯,一個服務可能有多個與之關聯的路由。與給定路由匹配的每一個請求都將代理到其關聯的Service上。
Service 和 Route 的組合(以及它們之間的關注點分離)提供了一種強大的路由機制,經過它能夠在Kong中定義細粒度的入口點,從而使基礎架構路由到不一樣上游服務。
Consumer 對象表示服務的使用者或者用戶。您能夠依靠Kong做爲主數據庫存儲,也能夠將使用者列表與數據庫映射,以保持Kong與現有的主數據存儲之間的一致性。
插件實體表示將在HTTP請求/響應生命週期期間執行的插件配置。它是如何爲在Kong後面運行的服務添加功能的,例如身份驗證或速率限制。
將插件配置添加到服務時,客戶端向該服務發出的每一個請求都將運行所述插件。若是某個特定消費者須要將插件調整爲不一樣的值,您能夠經過建立一個單獨的插件實例,經過service和consumer字段指定服務和消費者 。
這一章讀起來比較枯燥,主要介紹瞭如下幾個知識點。
1: Kong 的轉發和路由端口: 8000 和 8443
2: 介紹了Kong 中的幾個核心概念, Upstream、Route、Service、Consumer、Targe、 Plugin 的做用。
3: 介紹了 核心組件的對應的關係
想了解更多關於Kong網關的請移步 >>>>> 企業級API網關Kong