天天看點

微服務開發及部署_簡簡單單基于docker部署微服務網關

本文整理于今年3月,收錄在個人開源倉庫JavaScriptCollection中,其中很多概念不乏借鑒、摘抄自官網,便于複習相關概念,有興趣的可以直接去倉庫Clone文檔學習、參考!

基本概念

Kong 是在用戶端和(微)服務間轉發API通信的API網關,通過插件擴充功能。Kong 有兩個主要元件:

  • Kong Server :基于nginx的伺服器,用來接收 API 請求。
  • Apache Cassandra:用來存儲操作資料。

可以通過增加更多 Kong Server 機器對 Kong 服務進行水準擴充,通過前置的負載均衡器向這些機器分發請求。根據文檔描述,兩個Cassandra節點就足以支撐絕大多數情況,但如果網絡非常擁擠,可以考慮适當增加更多節點。

對于開源社群來說,Kong 中最誘人的一個特性是可以通過插件擴充已有功能,這些插件在 API 請求響應循環的生命周期中被執行。插件使用 Lua 編寫,而且Kong還有如下幾個基礎功能:HTTP 基本認證、密鑰認證、CORS( Cross-origin Resource Sharing,跨域資源共享)、TCP、UDP、檔案日志、API 請求限流、請求轉發以及 nginx 監控。

Kong可運作在某些 Linux 發行版、Mac OS X 和 Docker 中,無論是本地機還是雲端伺服器皆可運作。

Kong是一個在Nginx運作的Lua應用程式,由lua-nginx-module實作。Kong和OpenResty一起打包發行,其中已經包含了lua-nginx-module。OpenResty不是Nginx的分支,而是一組擴充其功能的子產品。

kong可以在多種環境下進行安裝部署,官方對于不同的環境都有說明,支援的環境有:

微服務開發及部署_簡簡單單基于docker部署微服務網關

應用場景

簡單來說,kong作為API網關,作用無非就是提供API路由服務;當然,kong通過一些元件、插件可以實作路由認證、路由管理,也能完成熔斷、限流等操作。是以kong的應用場景非常豐富;功能強大的kong,目前我運用到的功能其實還是鮮少的,強大的功能就有待後續去學習了,先不展開了,可以看看官網...

最後,由于目前自己的網站項目部署都是基于docker的,是以後面會提供相應的docker部署方式.如果是叢集不是,也會相應的總結一套docker-compose方式,進行文檔說明.

這篇文章将詳細講解docker下部署kong服務的過程,會涉及到一些docker操作,在閱讀前預設已熟練docker的基礎使用

安裝說明

在前面已經有關于kong的簡單介紹,kong的實質其實是基于nginx開發的網關,不過相比nginx反鎖的配置,kong通過插件甚至可視化的圖形界面管理,簡化了網關搭建、使用的過程。并通過資料庫的形式,對配置進行持久化儲存,提高了整體效率。

如果你閱讀過官網相關的說明,kong可以在多種環境下進行部署,本文将圍繞docker展開

安裝過程

建立網絡

這裡提到的建立網絡,實質是docker容器中網關的建立,docker有bridge、host等通信方式,先建立基本的bridge網絡,實作docker容器間的資料通信、通路。

實際效果:

微服務開發及部署_簡簡單單基于docker部署微服務網關

建立資料庫

kong作為網關,需要保留相關的路由配置資訊,是以需要用到資料庫,目前官方支援Cassandra、PostgreSQL兩種作為資料庫,以此來建構容器服務,這裡采用PostgreSQL建構kong-database容器,友善後續使用

從上面的docker指令可以看出,建構名為kong-database的資料庫容器,暴露端口為5432,同時接入kong-net橋接網絡裡面(其實還可以指定ip)

實際效果:

微服務開發及部署_簡簡單單基于docker部署微服務網關

遷移資料庫

在前面的kong-database中隻是簡單建立了名為kong的資料庫,并沒有對資料庫裡面的表進行很好的結構限制,是以可以用官方提供的docker指令,遷移資料庫,定義好表的各種結構

需要注意的是,KONG_PG_HOST是需要要求kong-database容器和遷移容器在一個docker network網段内,此處可以使用容器名進行通路,完全是依賴docker網關,在相同的一個橋接網絡下,實作容器互相通路

部署kong

上面的指令,需要暴露8000、8001、8443、8444四個端口,其中應用端口為8000和8443 ,分别代表着http和https請求;管理端口為8001和8444,也是分别支援http和https

實際效果:

微服務開發及部署_簡簡單單基于docker部署微服務網關

檢驗kong

檢驗kong及對應的資料庫是否安裝成功,可以執行docker ps指令檢視目前正在運作的容器,如果有确實且重新開機後依然沒有效果,那麼安裝過程一定有問題,需要自己細心檢查;

在保證容器正常運作的情況下,可以直接通路8000端口,檢視相關效果;

http://you-ip:8000

微服務開發及部署_簡簡單單基于docker部署微服務網關

因為目前沒有進行路由設定,是以應用端也就沒有比對到路由;

http://you-ip:8001

微服務開發及部署_簡簡單單基于docker部署微服務網關

通路管理端口時,可以看到有關kong的很多配置和插件,這裡沒有一一列舉,自己可以好好嘗試。至此,kong的簡單部署操作也就告一段落。後續講解有關konga的部署