天天看點

Kong04- Kong 四大參考說明配置檔案指令行參考Admin API 參考Proxy 參考負載均衡參考小結

Kong 的官方有很多詳細的參考說明,比如配置檔案、指令行、Admin API、代理、負載均衡,接下來我們簡單看一下,都提供什麼内容。

本文主要基于 Kong 1.3 版本進行描述,如有更新,請檢視最新文檔。

配置檔案

通過對配置檔案的 深入了解,可以優化 Kong 叢集、使用的資料庫、配置 Nginx ,

官方的參考資料是

Configuration Reference

Kong 在啟動時,可以通過

-c

或者

--conf

參數來指定配置檔案,比如:

kong start -c /path/to/kong.conf           

可以使用 check 指令來校驗配置檔案的文法正确性,

$ kong check <path/to/kong.conf>
configuration at <path/to/kong.conf>
 is valid            

Kong 的配置在加載的時候也會去找同名的環境變量,所有也可以通過環境變量來配置 Kong,而且環境變量的優先級高于配置檔案。可以通過環境變量來配置 Kong 這樣友善了基于容器的部署和運作。如果要使用環境變量,需要以

KONG_

字段開頭。

指令行參考

所提供的CLI(指令行接口)允許您啟動、停止和管理 Kong 執行個體。CLI 可以管理本地節點(如在目前機器上)。可以參考官網文檔

CLI Reference

主要由如下指令

全局标記

所有的指令都可以使用如下參數

  • --help : 列印指令的幫助資訊
  • --v : 打開詳情模式
  • --vv : 打開 debug 模式

可用的指令

  • kong check 檢查配置檔案文法等等
  • kong config 使用申明式配置檔案。
  • kong health 檢查該節點上的 kong 是否在運作
  • kong migration 管理 Kong 的資料庫
  • kong prepare 此指令準備Kong字首檔案夾及其子檔案夾和檔案。
  • kong quit 優雅的退出 Kong 執行個體
  • kong reload 重載 kong 執行個體配置
  • kong restart 重新開機 kong 執行個體
  • kong start 啟動 kong 執行個體
  • kong stop 停止 kong 執行個體
  • kong version 列印版本資訊

Admin API 參考

Admin API 的說明可以參考官網文檔:

Admin API Reference

Admin API 接受 2 兩種連接配接類型在每個終端。

分别是

  • application/x-www-from-urlencoded
  • application/json

共有 9 個對象,分别是:

  • Service Object
  • Route Object
  • Consumer Object
  • Plugin Object-Precedence
  • Certificate Object
  • CA Certificate Object
  • SNI Object
  • Upstream Object
  • Target Object

Proxy 參考

在本文檔中,我們将通過詳細解釋Kong的路由功能和内部工作原理來介紹它的代理功能。

Kong 公開了幾個接口,可以通過兩個配置屬性進行調整:

  • proxy_listen,它定義了一個位址/端口清單,Kong将在這些位址/端口上接受來自客戶機的公共通信,并将其代理到您的上遊服務(預設為8000)。
  • admin_listen,它還定義了一個位址和端口清單,但是這些應該被限制為隻能由管理者通路,因為它們公開了Kong的配置功能:Admin API(預設情況下為8001)。 Proxy Reference

Kong 經常用到的術語有:

  • client : 指下遊客戶向 Kong 代理端口送出請求。
  • upstream service :指自己位于 Kong 後面的 API/Service,用戶端請求被轉發到這些API/Service。
  • Service : 顧名思義,服務實體是上遊服務的抽象。服務的示例包括資料轉換微服務、計費API等。
  • Route : 這是指 Kong 路由實體。Route 是進入 Kong 的入口點,并為要比對的請求定義規則,然後路由到給定的服務。
  • Plugin : 指 Kong 的 “plugins”,它是在代理生命周期中運作的業務邏輯片段。插件可以通過管理 API 進行配置——可以是全局的(所有傳入的流量),也可以是在特定的路由和服務上配置。

負載均衡參考

Kong 為多個後端服務提供了多種負載平衡請求的方法: 一種簡單的基于 DNS 的方法,另一種是更動态的環形平衡器,該平衡器還允許在不需要DNS伺服器的情況下進行服務注冊。

負載均衡可以參考官網文檔

Load Balancing Reference

來了解。

基于 DNS 的負載均衡

當使用基于 DNS 的負載平衡時,後端服務的注冊是在 Kong 之外完成的,而 Kong 隻接收來自 DNS 伺服器的更新。

如果主機名沒有解析為上遊名稱或 DNS 主機檔案中的名稱,則使用包含主機名(而不是IP位址)的主機定義的每個服務都将自動使用基于 DNS 的負載平衡。

DNS 記錄 ttl 設定(生存時間)決定資訊重新整理的頻率。當使用 ttl 為 0 時,每個請求都将使用自己的 DNS 查詢進行解析。這将帶來性能損失,但是更新/更改的延遲将非常低。

A 記錄

一個 A 記錄對應一個或者多個 IP 位址,是以,當主機名解析為 A 記錄時,每個後端服務必須有自己的IP位址。

因為沒有權重資訊,是以所有條目在負載平衡器中都将被視為同等權重,并且平衡器将進行直接的循環。

SRV 記錄

SRV記錄包含所有IP位址的權重和端口資訊。後端服務可以通過IP位址和端口号的唯一組合來辨別。是以,一個IP位址可以在不同的端口上承載相同服務的多個執行個體。

因為權重資訊是可用的,是以每個條目将在負載平衡器中獲得自己的權重,并執行權重循環。

DNS 的優先級

1、前面解析的最後一個成功類型

2、SRV 記錄

3、A記錄

4、CNAME 記錄

這些可以在配置檔案的

dns_order

進行配置。

基于 Ring-balancer 的負載均衡

使用 Ring-balancer 時,後端服務的添加和删除将由 Kong 處理,不需要 DNS 更新。Kong 将作為服務注冊處。節點可以通過一個HTTP請求添加/删除,并将立即啟動/停止接收流量。

配置 Ring-balancer 工作需要有 Upstream 和 target 兩個實體。

  • target : 帶有後端服務所在端口号的IP位址或主機名,例如。“192.168.100.12:80”。每個目标都獲得一個額外的權重,以訓示它獲得的相對負載。IP位址可以是IPv4和IPv6格式。
  • upstream : 一個

    virtual hostname

    ,可用于路由的

    host

    字段,例如一個 upstream 是 weather.v2 會收到服務 host=weather.v2.service 的所有請求。

小結

本來大緻講述了 Kong 的配置檔案、指令行、代理、負載均衡等内容。