Golang Gateway API 搭建教程


原文鏈接

隨着微服務的興起,行業里出現了非常多優秀的微服務網關框架,今天教大家搭建一套國人,用Golang寫的微服務網關框架。

這里啰嗦一句,可能到今天還有人不理解什么是微服務,為什么要用微服務。目前網上相對比較模糊,沒有精確的定義,但大家的意思都差不多,這里個人通俗描述,就是小項目發展到大項目過程中,出於已維護,與穩定性等考慮,將一個整體項目分為多個微小服務。

微服務網關的作用是在用戶第一個網關服務器,你按照業務服務相關需求,給網關分流,相比雲主機廠商提供的負載均衡器,強大在於你可以根據自己業務去分流,同時還以可以實現鑒權、校驗、聚合、緩存等自定義服務,而雲主機的負載均衡器只是一個簡單按照流量給你負載均衡請求,不具有自定義編程性質。

接下來教如何安裝,以及注意事項。

地址:

https://github.com/fagongzi/gateway

功能:

  • 流量控制
  • 熔斷
  • 負載均衡
  • 服務發現
  • 插件機制
  • 路由(分流,復制流量)
  • API 聚合
  • API 參數校驗
  • API 訪問控制(黑白名單)
  • API 默認返回值
  • API 定制返回值
  • API 結果Cache
  • JWT Authorization
  • API Metric導入Prometheus
  • API 失敗重試
  • 后端server的健康檢查
  • 開放管理API(GRPC、Restful)
  • 支持websocket
  • 支持在線遷移數據

1.下載

https://github.com/fagongzi/gateway

2.編譯

cd $GOPATH/src/github.com/fagongzi/gateway/cmd/proxy
go build -o proxy ./...

cd $GOPATH/src/github.com/fagongzi/gateway/cmd/api
go build -o apiserver ./...

3.ECTD安裝

Etcd是一個高可用的 Key/Value 存儲系統,主要用於分享配置和服務發現。

etcd github地址:

https://github.com/etcd-io/etcd

當然,你也可以用命令行安裝

1、安裝

yum install etcd

2、修改配置文件,主要是地址,如果不是很懂,可以看下etcd官方文檔

vim /etc/etcd/etcd.conf 
# [member] ETCD_NAME="k8s_master_ip_name" 
#范例:
etcd1 
ETCD_DATA_DIR="/work/etcd" 
ETCD_LISTEN_PEER_URLS="http://k8s_master_ip:2380" 
ETCD_LISTEN_CLIENT_URLS="http://127.0.0.1:2379,http://k8s_master_ip:2379"

3、啟動

systemctl daemon-reload 
systemctl enable etcd.service 
systemctl start etcd.service

4、測試

IP與端口改為配置的ip地址,如果沒有使用,建議不要隨意變動端口

curl http://127.0.0.1:2379/version 

如果返回{"etcdserver":"3.3.2","etcdcluster":"3.3.0"} 就是安裝成功了

基礎軟件都安裝好了,我們就准備最低三台機器。

運行環境

我們以三台etcd、一台ApiServer,三台Proxy的環境為例

環境信息

組件 環境 說明
etcd集群環境 192.168.1.12 配置服務器
Proxy 192.168.1.13 代理服務器
ApiServer 192.168.1.14 路由配置接口服務器

1.啟動 ApiServer服務

啟動ApiServer服務,看到以下截圖就對了。

 
image.png

2.啟動代理服務

看到以下截圖就對了

 
image.png

3.添加配置

服務都啟動后,我們添加配置路由。

啟動Proxy

./proxy --addr=192.168.1.200:80 --addr-rpc=192.168.1.200:9091 --addr-store=etcd://192.168.1.100:2379,192.168.1.101:2379,192.168.1.102:2379 --namespace=test
./proxy --addr=192.168.1.201:80 --addr-rpc=192.168.1.201:9091 --addr-store=etcd://192.168.1.100:2379,192.168.1.101:2379,192.168.1.102:2379 --namespace=test
./proxy --addr=192.168.1.202:80 --addr-rpc=192.168.1.202:9091 --addr-store=etcd://192.168.1.100:2379,192.168.1.101:2379,192.168.1.102:2379 --namespace=test

用戶的API接入地址可以為:192.168.1.201:80、192.168.1.201:80、192.168.1.202:80其中任意一個

如果能訪問下你后面代理的接口內容,表示成功。

如果覺得配置服務器API,命令行麻煩,可以下載WEB UI的管理控制台。

下載地址:

https://github.com/fagongzi/gateway-ui-vue




免責聲明!

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



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