在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实现安全可靠的网站服务。