API網關--Kong的實踐


1. 什么是Kong

目前互聯網后台架構一般是采用微服務,或者類似微服務的形式,應用的請求通常需要訪問多個后台系統。如果讓每一個后台系統都實現鑒權、限流、負載均衡、審計等基礎功能是不合適的,通用的做法是把這些功能抽離出來放到網關層。Kong是目前最流行的網關平台,其插件機制使其具有高可擴展性,可以很方便的為路由和服務提供各種插件,並且網關需要的特性包括:動態路由熔斷健康檢查鑒權監控認證等等

  • Nginx = Http Server + Reversed Proxy + Load Balancer

  • Openresty = Nginx + Lua-nginx-module,openresty是寄生在nginx上,暴露nginx處理的各個階段的鈎子, 使用lua擴展nginx。

  • Kong = Openresty + Customized Framework,kong作為OpenResty的一個應用程序

2. 概念

kong的三個組件:

  • kong Server:基於nginx的服務器,接受API

  • Apache Cassandra/PostgreSQL: 存儲操作數據

  • Kong dashboard: 官方UI

kong的API使用Restful風格,每個對象都是一個Object,其中最重要的兩個對象是:

  • Service 代表一個后台服務

    配置 需要轉發到的上游服務器(upstream server),端口,請求該服務器的路由可以是 “/”

  • Route 是一條規則,告訴kong怎么把網關收到的請求發送到某個特定的后台服務,一個Service可以有多個Routes

    配置

Kong默認綁定4個端口

  • :8000 用來接受用戶的HTTP請求,並轉發到后台系統

  • :8443 用來接受用戶的HTTPS請求,並轉發到后台系統

  • :8001 通過HTTP協議提供管理功能的API (Admin API)

  • :8444 通過HTTPS協議提供管理功能的API

  • 這些端口可以在/etc/kong/kong.conf中修改,:8000 和 :8443 默認綁定0.0.0.0;:8001 和 :8444 默認綁定 127.0.0.1

當然我們可以把Admin API作為一個服務通過kong的網關暴露出去,請參考Kong API Loopback不過要注意安全。

3. 安裝kong

  • 下載安裝包,yum安裝

    下載kong的rpm包到本地 https://kong.bintray.com/kong-community-edition-rpm/centos/7/kong-community-edition-0.13.1.el7.noarch.rpm。 然后yum install -y x x x.rpm

    下載pgsql的rpm包 https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-3.noarch.rpm.

    yum install postgresql95 postgresql95-server

  • 安裝pgsql

    usr/pgsql-9.5/bin/postgresql95-setup initdb

    修改 vi /var/lib/pgsql/9.5/data/pg_hba.conf 里的 ident 為 trust (否則kong遷移數據庫報Ident authentication)

    修改 var/lib/pgsql/9.5/data/postgresql.conf listen_addresses 為‘*’

    設置系統調用 systemctl enable postgresql-9.5 ; systemctl start postgresql-9.5

  • 授權kong數據庫

    登錄postgresql :sudo -u postgres psql ; create user kong with password 'kong';CREATE DATABASE kong OWNER kong;

  • 遷移kong數據庫

    0.15以后 kong migrations bootstrap 以前 kong migrations up

  • 啟動kong 默認配置文件 /etc/kong/kong.conf

    有一些配置文件的參數需要改動

    proxy_listen = 0.0.0.0:80, 0.0.0.0:443 ssl kong實際監聽的地址

    admin_listen = 0.0.0.0:8001, 127.0.0.1:8444 ssl kong的控制台服務

    client_body_buffer_size = 10240k 這個參數代表請求的body內容的緩沖大小

    kong start;

4. 安裝kong-dashboard

使用docker安裝是最方便的,否則你需要裝一大堆軟件

5. 操作kong-dashboard

  • 待續

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM