在windows下常用IIS來部署.NET的多站點服務,但在Linux下就沒這麼方便了;雖然可以使用一些代理伺服器如nginx,jexus等來反代或部署應用,但nginx對.NET應用的託管就相對沒這麼方便了,jexus的確是個不錯的服務應用;在這裡介紹一下BeetleX來完成這一功能,BeetleX提供了一個HTTP和WS的反代元件服務Bumblebee,元件的新版本提供服務程式管理模組,可以通過這一功能輕易地在Linux中為.NET提供多站部署能力。
簡介
Beetlex在這裡還是簡單介紹一下,它是一款開源網路通訊服務元件,通過它可以實現各種基於TCP通訊的應用服務。而這裡介紹的是基於BeetleX擴充套件的HTTP和WS通訊閘道器元件Bumblebee;為了提供更靈活的擴充套件性Bumblebee是以元件的方式提供;因此想使用這個元件進行一個閘道器和程式容器來管理的話還是需要寫個外殼程式來啟動它。Bumblebee是以.net core2.1進行開發,只要應用是基於.net core2.1或更高版本都可以使用,並可同時執行在Linux或Windows下。雖然要自己引入元件來編寫伺服器,由於靈活的外掛機制所以可以引用對應的管理外掛即可達到一個非常簡便的管理服務。可以通過
https://beetlex.io/__system/bumblebee/index.html
檢視基於Bumblebee部署的多.NET網站示例
使用
一般情況下要需要構建一個控制檯程式,然後引用最新版本的BeetleX.bumblebee
(https://www.nuget.org/packages/BeetleX.Bumblebee/)
引用元件後即可以定義相應的Gateway物件,並啟動相關服務
var g = new Gateway(); g.HttpOptions(o => { o.LogLevel = BeetleX.EventArgs.LogType.Warring; o.LogToConsole = true; o.Port = 80; o.SetDebug(); }); g.OutputServerAddress = true; g.SetRoute("*", null).AddServer("http://192.168.2.25:9090","http://192.168.2.26:9090","http://192.168.2.27:9090"); g.Open();
以上就是提供一個簡單的閘道器負載服務,並把所有請求負載到三臺服務上。由於元件提供了視覺化的管理外掛,所以接下來就不介紹程式碼的使用;如果想通過程式碼來定義自己的功能,可以檢視元件的相關程式碼。
程式管理類
在新版本中可以通過Gateway.ProcessCenter來管理相關服務程式的工具,相關類的具體行為方法如下:
public void Add(ServiceInfo info) public void Update(string id, ServiceInfo info) public void Start(string id) public void Stop(string id) public void Remove(string id)
由於元件提供管理外掛進行UI操作,在這裡就不詳細介紹。
引用管理外掛
元件提供的管理外掛也是免費的,提供大部分有限的功能線上管理。前面貼圖展示的功能就是這個免費外掛所提供的功能。在程式中只需要引用BeetleX.Bumblebee.Configuration的最新版本,並通過程式碼載入這個外掛即可在服務中方便到它
g.LoadPlugin(typeof(Bumblebee.Configuration.Management).Assembly)
更多資料可以檢視 http://doc.beetlex.io/
服務程式管理
這功能是最新版引用,管理外掛也提供這一管理模組;通過點選Process選單來開啟服務程式管理模組。
可以根據自己的需要來新增Web服務程式,以上截圖是針對 http://beetlex.io/ 官網的多服務站點配置。
以上是針對 http://webbenchmark.beetlex.io/ 配置,裡面的資訊主要用於描述啟動的檔名,執行目錄和對應的啟動引數等待。其他引數主要用於描述服務,路由和啟動等。
-
Host
指定可以訪問的HTTP服務地址,這個地址會自動新增到閘道器的服務中 -
Route
指定相應路由規則下訪問該服務 -
AutoStart
當閘道器啟動的時候自動啟動該程式服務
相關操作
每個程式都提供簡單的操作,主要包括有啟動,重啟,停止和檢視日誌等等。而這個日誌只是用於檢視程式服務輸出的控制檯的資訊內容。
總結
通過以上介紹是不是對BeetleX進行多站服務部署感非常簡單,由於BeetleX是基於反代的方式來進行代理訪問,所以在服務程式管理上並不只是管理.NET的服務程式,只要服務是基於HTTP或WS不管是不是.NET服務都可以通過BeetleX進行管理並整合到統一的服務中。更重要的一點BeetleX可以部署到Linux或windows等多平臺下,並可以良好地支援TLS實現安全可靠的網站服務。