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

使用BeetleX在Linux下部署.NET多站点服务的更多相关文章

  1. Linux下部署FTP服务器

    Linux下部署FTP服务器 下载安装包 在这里介绍的是离线部署FTP,首先下载对应的rpm包,下载链接为: 下载vsftpd服务 下载FTP客户端 安装ftp服务器 关闭防火墙 service ip ...

  2. linux下部署项目问题

    1. 今天linux下部署thinkphp项目,数据库用的mysql. 页面其他都是正常的,但是从数据库中取出的数据都是乱码.最后查了资料 解决方案: 在ThinkPHP里面 Library\Thin ...

  3. linux 下部署nodejs(两种方式)

    本次博客的编写时用的系统环境,刚装好的Centos 6.4  64位虚拟机. 另外关于linux 其他系统的安装 可以参考https://github.com/joyent/node/wiki/Ins ...

  4. Linux下部署Symfony2对app/cache和app/logs目录的权限设置

    在linux下部署完Symfony2,可能在访问的时候会报app/logs或者app/cache目录没有写权限的错误.在linux下,如果我们在命令行登陆的用户和web应用服务器(apache.ngi ...

  5. linux下部署php项目-Apache、php、mysql关联

    linux下部署php项目环境可以分为两种,一种使用Apache,php,mysql的压缩包安装,一种用yum命令进行安装. 使用三种软件的压缩包进行安装,需要手动配置三者之间的关系.apache和p ...

  6. Linux下部署多个Tomcat(完整)

    Linux下部署多个Tomcat 1.环境:1.1.Centos 5.01.2.apache-tomcat-6.0.18 2.需要解决一下几个问题2.1.不同的tomcat启动和关闭监听不同的端口2. ...

  7. Linux 下部署Django项目

    Linux 下部署Django项目   说明:本文所使用的环境为CentOS 6+Python2.7+Django1.11 安装Django.Nginx和uWSGI 1.确定已经安装了2.7版本的Py ...

  8. Linux下部署SSM,通过启动tomcat即可运行

    Linux下部署SSM项目 1. Java环境配置(JRE&JDK) 安装JDK8:sudo yum install java-1.8.0-openjdk 将操作系统配置为默认使用JDK8:s ...

  9. linux 下部署web 程序

    linux 下部署web 程序 1. 创建ucenter用户 一般情况下,发布应用程序都不是使用root用户的,需要创建一个普通用户来发布程序: 创建ucenter用户: useradd -d /uc ...

随机推荐

  1. mysql8的深坑

    主要记录下自己的出坑过程,有些其实并不是mysql8的问题,但是由于这个版本产生的阻塞时间最长,所以一并记录: 1-项目代码别人能运行,我本地运行不了 定位后发现是由于本地代码运行数据库连接失败,后来 ...

  2. 【BZOJ4398】福慧双修 题解(建图优化)

    题目链接 题目大意:给定一张$n$个点$m$条边的无向图,每条边两个方向的权值不一定相同.问从$1$出发不重复走一条边回到$1$的最短路径. ------------------- 暴力不太会.大概是 ...

  3. 面经手册 · 第2篇《数据结构,HashCode为什么使用31作为乘数?》

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 在面经手册的前两篇介绍了<面试官都问我啥>和<认知自己的技术栈盲区 ...

  4. 新手阅读 Nebula Graph 源码的姿势

    摘要:在本文中,我们将通过数据流快速学习 Nebula Graph,以用户在客户端输入一条 nGQL 语句 SHOW SPACES 为例,使用 GDB 追踪语句输入时 Nebula Graph 是怎么 ...

  5. 003_对go语言中的工作池代码练习的一些思考和改进

    在进行工作池的代码练习时候,我发现了一个有趣的事情,首先看下面一段代码: package main import "fmt" import "time" fun ...

  6. Java Redis系列3(Jedis的使用+jedis连接池技术)

    Jedis的使用 什么是Jedis? 一款Java操作redis数据库的工具 使用步骤 1.下载redis所需的java包 2.使用步骤 import org.junit.Test; public c ...

  7. 【LeetCode/LintCode 题解】约瑟夫问题 · Joseph Problem

    n个人按顺序围成一圈(编号为1~n),从第1个人从1开始报数,报到k的人出列,相邻的下个人重新从1开始报数,报到k的人出列,重复这个过程,直到队伍中只有1个人为止,这就是约瑟夫问题.现在给定n和k,你 ...

  8. C#LeetCode刷题之#496-下一个更大元素 I(Next Greater Element I)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4026 访问. 给定两个没有重复元素的数组 nums1 和 num ...

  9. Vue 使用mixin抽取共通方法

    引入原因: 当一段逻辑在不同的地方使用时 step-1: 定义mixin文件,methods里有一个handleToLink方法 /** * this mixin file will be used ...

  10. JDK1.8源码学习-String-hashCode方法为什么选择数字31作为乘子

    1. 背景 某天,我在写代码的时候,无意中点开了 String hashCode 方法.然后大致看了一下 hashCode 的实现,发现并不是很复杂.但是我从源码中发现了一个奇怪的数字,也就是本文的主 ...