什么是Goku API Gateway?
(轉載至https://segmentfault.com/a/1190000020948193)
Goku API Gateway (中文名:悟空 API 網關)是一個基於 Golang 開發的運行在企業系統服務邊界上的微服務網關。當您構建網站、App、IOT甚至是開放API交易時,Goku API Gateway 能夠幫你將內部系統中重復的組件抽取出來並放置在Goku上運行,如進行用戶授權、訪問控制、防火牆、數據轉換等;並且Goku 提供服務編排的功能,讓企業可以快速從各類服務上獲取需要的數據,對業務實現快速響應。
Goku API Gateway 的社區版本(CE)擁有完善的使用指南和二次開發指南,代碼使用純 Go 語言編寫,擁有良好的性能和擴展性,並且內置的插件系統能夠讓企業針對自身業務進行定制開發。使用 Goku API Gateway 能讓業務開發團隊更加專注地實現業務。
一套完整的 Goku API Gateway 由一個 控制台 和 若干個 網關節點 組成。節點通過IP地址注冊在控制台中,控制台內的配置項會對所有節點生效。控制台用於配置網關的運行信息,例如訪問策略、轉發的API信息等等;節點用於實際的轉發。當控制台上發布了最新的配置,所有節點都會主動更新自己的運行配置;在控制台發布的配置支持版本管理,可以手動發布和回滾。
Goku API Gateway支持管理多個網關節點的集群,實現讓用戶訪問不同的集群從而訪問不同的服務地址的目的。
下面是以兩個DC(Data Center)為例的部署架構簡圖:
Goku的網關節點除了能夠直接獲取控制台的配置外,也支持采用直接讀取配置文件的方式來使用。配置文件可以通過EOLINKER 官方提供的線上控制台來導出,線上控制台可讓用戶方便修改配置,修改完后導出配置文件,放到節點的服務器上即可。
線上控制台地址:http://goku-console.eolinker.com
使用線上控制台的話無法區分不同集群,如需使用更強功能建議還是部署自己的私有雲控制台。
本文給出幾種Goku API Gateway的部署方式:
一、節點docker+線上控制台
二、節點docker+線上控制台Docker
三、使用安裝包直接安裝
部署安裝時需要用到的鏈接:
- 節點Docker:https://hub.docker.com/r/eoli...
- 控制台Docker:https://hub.docker.com/r/eoli...
- 線上控制台:http://goku-console.eolinker.com
- 安裝包地址:https://github.com/eolinker/g...
一、節點Docker+線上控制台
Goku API Gateway提供節點Docker和控制台Docker,最快的方式就是僅部署節點Docker,然后通過線上控制台來配置網關信息,配置完成后導出文件並上傳到節點服務器,最后啟動節點Docker。
使用步驟
1、配置完畢后,在線上控制台的首頁導出配置:
2、將配置上傳到服務器,啟動docker:
docker run -dt -p {轉發端口號}:6689 \ -v {日志掛載地址}:/app/goku-ce/node/work \ -v {配置文件地址}:/app/goku-ce/node/work/goku-node.json \ eolinker/goku-api-gateway-ce-node
完整配置示例如下:
docker run -dt -p 6689:6689 \ -v /app/goku-ce/node/work:/app/goku-ce/node/work \ -v /app/goku-ce/node/versionConfig_b14a1af4-b961-4dfb-8bfe-d4d157dd651e.json:/app/goku-ce/node/work/goku-node.json \ eolinker/goku-api-gateway-ce-node
用戶通過網關訪問API地址為:{{節點IP:端口}}/{{轉發URL}} 。
二、節點Docker+控制台Docker
(一)部署控制台
1、 創建goku-ce專屬網絡
docker network create --driver bridge --subnet=172.18.12.0/24 --gateway=172.18.12.1 goku-ce
2、運行控制台程序
docker run -dt -p {瀏覽器訪問端口號}:7000 \ -v {sqlite數據庫掛載地址}:/app/goku-ce/console/work \ -e GOKU_ADMIN_PASSWORD={控制台admin密碼} \ --network=goku-ce \ --ip 172.18.12.2 \ --name goku-ce-console \ eolinker/goku-api-gateway-ce-console
完整示例啟動如下:
docker run -dt -p 7000:7000 \ -v /app/goku-ce/work:/app/goku-ce/console/work \ -e GOKU_ADMIN_PASSWORD=123456 \ --network=goku-ce \ --ip 172.18.12.2 \ --name goku-ce-console \ eolinker/goku-api-gateway-ce-console
3、 登錄控制台
打開瀏覽器,輸入 域名/IP+瀏覽器訪問端口號,進入控制台頁面,輸入用戶名(admin)及密碼(啟動設置的admin密碼)進行登錄:
(二)部署網關節點
1、進入控制台,新建節點
節點IP需要和啟動節點docker容器時綁定的IP 一致:
點擊查看 新建節點詳細教程
2、在控制台生成並發布配置
發布配置后,節點會讀取控制台的最新配置來運行。
點擊查看 發布配置的教程鏈接
3、啟動節點docker容器
docker run -dt -p {轉發端口號}:6689 \ --network goku-ce \ --ip {節點IP} \ -v {日志掛載地址}:/app/goku-ce/node/work \ -e GOKU_ADMIN_ADDRESS={控制台IP}:7005 \ eolinker/goku-api-gateway-ce-node
完整示例如下:
docker run -dt -p 6689:6689 \ --network goku-ce \ --ip 172.18.12.3 \ -v /app/goku-ce/work:/app/goku-ce/node/work \ -e GOKU_ADMIN_ADDRESS=172.18.12.2:7005 \ eolinker/goku-api-gateway-ce-node
4、查看節點運行狀態
進入節點管理頁面,若節點的狀態顯示為運行中,則節點正常啟動:
三、通過安裝包直接部署
安裝准備:到Github上下載最新的Release包。
項目地址:https://github.com/eolinker/g...
(一)安裝控制台
1、安裝命令:
mkdir -p {install dir}
mv console-{version}.tar.gz {tmp}/
cd {tmp}/
tar -xzf console-{version}.tar.gz
cd console-{version} && ./install.sh {install dir}
cd {install dir}
2、首次安裝進入{install dir}/console/config文件夾,編輯配置文件內容,配置語法參照yaml。
goku.conf 如下:
admin_bind: 綁定節點獲取配置的地址,形如IP:Port,填寫內網地址或本機地址
listen_port: 管理后台監聽端口,可以開放給外網訪問
db_type: 數據庫類型,v3.1.0只支持 sqlite
db_path: sqlite db的文件路徑
3、進入{install dir}/console文件夾,運行run.sh文件以啟動控制台。
首次運行:
./run.sh start {config file} 管理員賬號 管理員密碼
示例:
./run.sh start config/goku.conf admin 123456
非首次運行:
./run.sh start|restart
4、在瀏覽器輸入服務器IP+程序監聽端口號,進入控制台頁面
注:程序監聽端口號為goku.conf的配置項listen_port的值
(二)、節點安裝
1、安裝命令:
mkdir -p {install dir} mv goku-node-{version}.tar.gz {tmp}/ cd {tmp}/ tar -xzf goku-node-{version}.tar.gz cd goku-node-{version} && ./install.sh {install dir} cd {install dir}
2、在控制台新建節點
(1)登錄控制台,一級菜單選擇 網關節點,創建集群:
(2)進入相應的集群,為不同集群 添加節點:
(3)點擊 新增節點 按鈕,填寫節點信息后點擊 確定:
- 新建節點時的節點IP字段填寫內網IP或本地IP
- 若配置文件(goku.conf)中的admin_bind字段值IP部分為127.0.0.1或localhost,此處節點IP必須填寫127.0.0.1
3、啟動節點程序:
{install dir}/run.sh {start|stop|reload|restart|force-reload} [admin url] [port]
此處的admin url值與配置文件(goku.conf)中的admin_bind字段值一致。
示例:
{install dir}/run.sh start 127.0.0.1:7005 7702
4、檢查節點是否正常運行:
進入控制台的網關節點頁面,若節點的狀態顯示為運行中,則節點正常啟動:
最后,你也可以通過編譯Github上Master分支的代碼,編譯最新的內容來安裝,編譯教程:https://help.eolinker.com/#/tutorial/?groupID=c-372&productID=19
相關鏈接
節點Docker:https://hub.docker.com/r/eoli...
控制台Docker:https://hub.docker.com/r/eoli...
新上控制台:http://goku-console.eolinker.com