php實戰kong做微服務架構一(kong簡介與安裝)
- 序言
- 作業環境
- kong介紹
- 使用kong的優勢
- 主要三組件
- 安裝
- kong安裝
- PostgreSQL安裝
- 配置
- PostgreSQL相關設定
- kong配置
- kong測驗
- 初始化資料庫
- 服務開啟
- curl測驗
- kong監聽的埠
- kong圖形化管理
- 安裝
- 安全訪問
- 安裝遇到的問題以及解決方法
序言
在一些分布式系統中,我們會在內部服務之前加一道屏障來保護我們的內部系統,并且可以統一管理內部服務,幫助開發者或用戶更便捷的使用服務,不用考慮安全、流量等問題,
關于安全、限流、黑白名單等問題,我們統一在網關層對進行處理,內部服務只需關注業務實作,
在實際應用中,我們希望請求的API,網關對它們有統一的管理維護等功能,這樣可以更好的管理專案,以后有新的服務只需在網關統一注冊,就可以支持既有的安全、限流、黑白名單等功能,豈不美哉~~~
在當下已經有了眾多優秀的專案幫助我們完成這一需求,例如kong,本文關于如何安裝kong做了詳細說明,
作業環境
Linux version 3.10.0-957.21.3.el7.x86_64
kong介紹
API網關專案,基于NGINX和Apache Cassandra或PostgreSQL構建的,提供RESTful介面,用于管理和配置服務,路由,插件和使用者,
允許開發者管理服務和API的整個生命周期,以及所有服務中代理組織的資訊,
最重要的是,它使用戶能夠簡化跨混合云和多云部署的API和微服務的管理,

使用kong的優勢
分散應用程式或服務并過渡到微服務
打造完善的API開發人員生態系統
主動識別與API相關的例外和威脅
保護和管理API 或服務,并改善整個組織的API可見性
主要三組件
Kong Server:基于nginx的服務器,用來接收api請求,
Apache Cassandra或PostgreSQL:用來存盤操作資料,
Kong Dashboard:UI管理工具,
安裝
kong安裝
yum install -y https://kong.bintray.com/kong-community-edition-rpm/centos/7/kong-community-edition-0.13.1.el7.noarch.rpm
PostgreSQL安裝
下載安裝
yum install 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
配置
PostgreSQL相關設定
初始化PostgreSQL資料庫并啟用自動啟動
/usr/pgsql-9.5/bin/postgresql95-setup initdb
systemctl enable postgresql-9.5
systemctl start postgresql-9.5
切換到PostgreSQL用戶并啟動PostgreSQL
$ sudo -i -u postgres
$ psql
創建一個賬號密碼為kong的用戶
$ psql>create user kong with password 'kong';
創建一個kong 資料庫
$ psql>create database kong owner kong;
在IPv4下,本地連接替換ident為md5或者trust,允許kong用戶在本地與資料庫通信
修改/var/lib/pgsql/9.5/data/pg_hba.conf
把這個組態檔中的認證 METHOD的ident修改為trust或者md5
kong配置
組態檔位置: /etc/kong/kong.conf.default
cp /etc/kong/kong.conf.default /etc/kong/kong.conf
vi /etc/kong/kong.conf 修改以下內容
pg_host = 127.0.0.1 #資料庫主機地址
pg_port = 5432 #資料庫埠
pg_user = kong #資料庫登錄用戶名
pg_password = kong #資料庫登錄密碼
pg_database = kong #資料庫名
組態檔位置: /usr/local/share/lua/5.1/kong/templates/kong_defaults.lua
修改以下內容
pg_password = kong #修改為自己的資料庫密碼
kong測驗
初始化資料庫

服務開啟

curl測驗

kong監聽的埠
-
代理埠:Kong接收傳入流量的地方,
8000: 監聽來自客戶端的http請求,將請求轉發給提供對應服務的服務器,
8443: 監聽來自客戶端的https請求,將請求轉發給提供對應服務的服務器, -
管理員API:Kong公開其管理API的埠,因此,在生產中,應將此埠進行防火墻保護,以防止未經授權的訪問,
8001:提供Kong的Admin API,可以使用該API通過HTTP操作Kong,
8443:提供相同的Kong Admin API,但使用HTTPS,
kong圖形化管理
注意:如果沒有npm,還需先安裝:yum install npm
安裝
-
安裝dashboard

-
啟動dashboard
kong-dashboard start --kong-url http://localhost:8001

-
訪問

安全訪問
- 用自定義埠啟動 Kong Dashboard
kong-dashboard start \ --kong-url http://localhost:8001 \ --port [port] - 使用權限認證啟動 Kong Dashboard
kong-dashboard start \ --kong-url http://kong:8001 \ --basic-auth user1=password1 user2=password2
安裝遇到的問題以及解決方法
- 用戶 “kong” Ident 認證失敗(作者忘記修改身份驗證了…)
解決方法:Error: [postgres error] could not retrieve current migrations: [postgres error] FATAL: Ident authentication failed for user "kong" Run with --v (verbose) or --vv (debug) for more details修改/var/lib/pgsql/9.5/data/pg_hba.conf 把這個組態檔中的認證 METHOD的ident修改為trust或者md5 - npm下載太慢
解決方法:切換鏡像源 沒有使用cnpm.....總是不習慣 設定: npm config set registry https://registry.npm.taobao.org 然后再使用npm下載,眨眼間就下完了~~~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/262131.html
標籤:其他
