在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實現安全可靠的網站服務。