在理工科的一些科研团队实验室中,一般或多或少都会有那么几台服务器。此文主要就高校实验室环境下的服务器及应用部署做些简要的经验介绍。

硬件选型

诸如内存/CPU/硬盘等选型在高校里似乎并不那么重要,一般这种东西最后都被作为『固定资产』处理,老师们自己并不需要掏一分钱… 买来之后往往也是由底下的学生代劳搭建各项服务。硬件选型总的来说还是得看需求,高性能计算?——GPU加速为王道。

服务器底层虚拟化系统

对于高校实验室这种环境,服务器承担的角色往往是多样化的,不同的软件及需求往往需要在不同的操作系统下开发测试,这个时候虚拟化技术就派上用场了。底层使用虚拟化技术将服务器硬件资源虚拟化,在虚拟化之上可以灵活根据开发需求分配相应资源。

想必不少人都用过盗版的VMware桌面虚拟化软件,对软件开发有点敬畏的人可能会选择使用开源的Virtualbox作为桌面虚拟化软件。用过的人都知道虚拟化带来的便利,比如我的主机是Linux,但是偶尔要打开一些只能在Win下用的软件,双系统的方案未尝不可,但是切换麻烦啊,这个时候在虚拟机里边装个Windows就比较方便了。其实除了桌面虚拟化,服务器上也是可以用虚拟化方案的,而且技术更为成熟。其中做的比较好的就是VMware了,目前最新版本是5.5,可以到这里下载,由于文件比较多,一般选择如下两个软件:

  1. VMvisor——用于实现服务器虚拟化的底层操作系统,对应官网上的『ESXi 5.5 Update 2 ISO image (Includes VMware Tools)』
  2. viclient——用于更方便的管理虚拟机,如在虚拟机之上安装不同操作系统及配置资源,对应官网上的『VMware vSphere Client 5.5 Update 2』
    具体安装说明可见ESXi安装教程的『Download and Burn the ESXi Installer ISO Image to a CD or DVD』小节。我一般倾向于使用U盘安装,安装过程可参考VMware ESXi 5安装图文教程

安装前最好确认下是否兼容相应的服务器硬件,比如Dell的就在官方给出了他们修改过的镜像VMware ESXi 5.5 Image Driver Details | Dell US

虚拟机添加及使用方式

底层虚拟化操作系统(ESXi)安装好之后,使用viclient即可非常方便的增加不同的操作系统,这个步骤和桌面虚拟化安装新的操作系统是一样一样的。底下的一张图很好的展示了ESXi主机、虚拟机和viclient三者之间的关系。
ESXi-viclient-Server

你可以将上层的虚拟机系统看成是完全独立的操作系统,使用方式均可通过『远程桌面连接-适用于Windows的RDP』、『VNC-适用于Linux下图形接入』和『SSH-适用于Linux,较为通用』。这样就不必为服务器单独配一个显示器了,计算全部交给服务器,使用的时候在本机远程连接进去就好,相当于只用了本机的显示器,大家同时使用互不干扰,——『云计算』是也。

实验室环境下的服务器操作系统部署及安装到这里就讲完了,具体细节就得请各位亲自操刀了咯。接下来就自己目前主要使用的一台服务器做一些简单的实例分享。

服务器部署实例

以我目前主要维护的一台服务器为例,服务器配置:4核8线程、64G内存和4T机械硬盘,服务器型号是Dell的T620 塔式服务器。其上安装的系统及用途如下:

  • 底层虚拟化系统:ESXi 5.5(未使用包含Dell驱动的image,也许是有些硬件没使用到,目前还没发现问题),license为发邮件索取的,一般的服务器硬件资源使用应该不会超过他们的限制。
  • Windows XP SP3 32bit:某些古老或者特殊的行业软件只能跑在这种系统上,装一个还是挺有用的。
  • Windows Server 2008:主要给其他人跑Matlab用,文件的交互可采用网络邻居或者同步软件。
  • Debian:主力服务器,适合部署追求稳定的服务。
  • Arch Linux:接入服务器(ssh入口),适合部署和测试一些较新的服务。
  • Ubuntu:不少人喜欢用这个发行版,部分服务在这上面部署起来方便点,我只在交叉编译Linux内核时用过一次…
  • CentOS:说实话,这个我几乎没用过。据说也是比较稳定的,缺点是包太老,而且需要自己维护,加入EPEL源会好一点。

如果不需要特别限制的话,CPU资源尽量分配到最大,比如以上服务器最多能提供8核就分配8个vCPU。内存大小看情况,10G/20G/30G随意分配。

一些有意思的服务及应用

  1. 接入实验室内部的VPN:softEther VPN部署起来方便一点,一个软件即实现了L2TP/IPSEC, PPTP, OPENVPN等VPN协议,但是需要注意禁掉一些UDP连接的端口,我发现softEther VPN使用UDP与筑波大学(该软件的作者即为筑波大学的)的几台服务器进行通信,不确定是不是使用了其客户端进行配置后所导致的。digitalocean上有一篇教你如何部署这款软件的文章-How to Setup a Multi-Protocol VPN Server Using SoftEther
  2. Seafile 全平台私有云同步软件,有WebDAV接口,这个在iPad上太方便了,有了这个我基本就没用过iTunes同步了。使用Seafile进行各系统下的文件同步,同时可采用群组区分和使用内部wiki。Seafile自带的wiki功能可与文件进行整合,比如分享一些内部常用的资料及教程什么的很有用。虽然我非常提倡公开共享一些有用的资源,但是不见得有些老师有这种想法。如果是公开的分享放在实验室内部服务器上就不合适了,一方面是安全问题,一方面是会给实验室的网络及服务器占用过多资源。
  3. 科学上网组件,用于正常地进行科研工作和技术学习。详情见我之前整理过的sjtug/kxsw,这里不过多展开,具体原因你懂的…

其他服务及应用可自行开发脑洞…

开通这些服务往往需要将内网某一服务器的特殊端口映射至外网,这个一般需要拿到网关路由器/交换机的管理员权限,大多数实验室的路由器都是用的初始密码,不是初始密码的话可以问问楼层的网管。

网络拓扑及外网访问

ESXi可以认为给上层虚拟机提供了一个二层的虚拟交换机,虚拟机与局域网其他计算机在同一子网下。利用这一特点及在虚拟机服务器上搭建的VPN,我们就可以通过从外网无障碍远程访问局域网内部计算机了。实验室IP往往还有另一大用处——在外出差或者在家也可以利用学校的网络资源,如一些PT/BT资源和学术数据库资源等。

要实现实验室局域网的外网访问一般有三种方式:

  1. 路由器上通过端口映射(虚拟服务器)将内部服务器端口映射至外网。端口开的多话有安全隐患,建议只映射部分常用端口。
  2. 通过VPN接入内部局域网,只需要在路由器上将相应VPN协议的端口映射出去即可。通过VPN接入后即相当于已处于实验室内部局域网,不需要再在路由器上开放过多的端口,较为安全。
  3. 如果不能拿到路由器/交换机上的管理员权限,在交大可通过WiFi获得10.x.x.x的内网IP,这个在交大内部是可以路由的,也就是说可以通过这个IP进入实验室内网。由于服务器底层采用VMware ESXi做了一层虚拟化之后,再在USB口上插入无线网卡系统是无法识别的,这个时候就需要在ESXi上启用DirectPath I/O了,即可将某一USB网卡直连至相应虚拟机系统下。