APP下载

开源系统自动监控大量虚拟主机

2011-11-09陈琳王彬

中国教育网络 2011年8期
关键词:列表日志开源

文/陈琳 王彬

开源系统自动监控大量虚拟主机

文/陈琳 王彬

当虚拟主机数量达到几十个甚至上百时,手工管理方式已不能满足要求,对虚拟主机的日常运行管理、维护及对虚拟主机用户的技术支持服务迫切需要自动化的系统进行管理。山东大学选择多种开源软件进行整合,开发出一套虚拟主机管理监控系统。

管理虚拟机的需求

虚拟主机是采用特殊的软件技术,把一台服务器划分为若干个“虚拟”的主机。然而当虚拟主机数量达到几十个甚至上百时,手工管理方式已不能满足要求,对虚拟主机的日常运行管理、维护及对虚拟主机用户的技术支持服务迫切需要自动化的系统进行管理。

虚拟主机主要有基于Windows操作系统的和基于Linux操作系统的两种,目前基于Linux的开源虚拟主机管理系统多是国外人员研发,采用单机方式,中文支持不理想,且运行环境依赖软件多、安装设置复杂,可用性不强。

山东大学根据工作需要对虚拟主机管理监控系统提出以下需求:

1.虚拟主机管理监控系统可以支持Linux操作系统,以便于在主流的虚拟主机环境Linux+Apache+PHP中采用B/S方式来管理操作系统;

2. 应用系统必须分别部署到不同的服务器上,并且可以进行集中管理;

3. 支持多语言环境,可以通过不同的应用环境管理虚拟主机服务器本身和虚拟主机站点;

4. 服务器管理员通过系统登录后可以发布系统通知、按不同的服务器查看各自虚拟主机磁盘空间使用情况;

5. 新的添加的服务器可以方便地纳入系统的管理中;可以灵活地增加、删除虚拟主机,显示虚拟主机列表,可以为虚拟主机分配数据库、磁盘配额,并且在创建虚拟主机时从可用服务器中选择,可以查看网站访问日志的统计信息,可以修改虚拟主机用户的密码;

6. 虚拟主机管理员登录后可以查看系统通知,查看自己所管理的虚拟主机的空间使用情况、网站访问日志统计,可以修改自己的网站密码和数据库密码;

7.登录系统采用用户名、密码、验证码相结合的方式,必须考虑管理端和被管理服务器间数据通讯的安全性,管理系统开发中必须考虑安全性、具有一定的防止SQL注入、跨站攻击能力。

虚拟主机管理监控系统的设计

我们采用分布式设计方案,即用户可以在任意一台主机上登录,管理所有的虚拟主机和物理机节点,鲁棒性强,使用方便。普通用户和管理员用户程序分开,运行安全稳定。

系统的创新点

针对现在市面上主流的虚拟主机管理软件产品,山东大学利用开源软件开发了一套虚拟主机管理监控系统,具有以下创新点:

1.对等方式服务器架构,鲁棒性强。在所有的服务器上部署相同的虚拟主机管理软件,服务器之间直接通信、共享资源、协同工作,每个服务器有着相同的功能,无主从之分,任意一台主机既可作为受控服务器而被其他的控制端所使用,又可以作为控制端的计算机来访问网络中的其他虚拟主机节点,没有专用的Web服务器。这样就能够提供分布式访问。即使一台服务器宕机也不会影响网络中的其他服务器和整个虚拟主机网络,所以系统的健壮性强;

2.本系统跨平台支持Linux以及AIX、Solaris等Unix系统,并且系统方便部署,鉴于 Perl 先天的优势,能够方便地实现对系统命令的调用和前台CGI对接。本系统在使用中支持中英等多国语言;

3.加密数据传输,可以安全地传递指令和数据。我们使用RSA公钥加密来加密主机之间的数据,以保障信息不被窃取;

4.纯Web界面管理,不需要任何客户端软件,方便用户在网络环境下操作;

5.使用开源开发工具及数据库,使系统的安全性更强,二次开发能力也更好。

系统的优势

普通情况下,虚拟主机管理监控网络中的所有系统都是对等的(如图1所示),这样可以有很高的系统冗余性,并且保证系统的稳定和安全。

然而,当管理员从任何一台计算机登录时,提供Web服务的服务器就充当虚拟主机管理监控系统中的Client, Client负责从网络中其他的主机上取回信息,生成Web页面,并响应用户请求,完成用户发出的命令(如图2所示)。

用户所登录的那台服务器上存放其他服务器的公钥,用来加密数据。用户只需登录到系统中就可以管理其他服务器,而不用输入密码,这减少了密码输入的次数,且密码不用在服务器间传输,提高了安全性。

虚拟主机管理监控系统优化用户权限管理,参照sudo,定制用户执行命令的权限,过滤特殊字符,对各种注入攻击起到一定的防范作用。

主机的访问统计通过读取Apache日志实现,对日访问量、月访问量和年访问量进行统计。

在该系统实现过程中,我们充分注意细节,比如,用户语言可以根据用户当前浏览器语言来设定,当用户浏览器语言为英文时,虚拟主机管理用户界面显示为英文,当浏览器语言为中文时显示为中文,这样就能充分满足不同用户的需求。后端的实现采用Linux系统通用的 Gettext 国际化方式,结构清晰,过程严谨。在Apache控制方面,该系统提供了普通模式和高级模式,在普通模式下用户可以根据系统提示来更改配置,只需要填写相关项目就可以方便地更改配置,高级模式下用户可以自行编写Apache配置文件,定制性强,可根据需要来更改Apache配置,方式多种多样,使用方便,灵活性强。在用户登录时添加验证码的实现方式保证用户登录的安全性。

系统开发模块的分析

针对系统的设计需求,我们应用了多种开源软件进行整合开发。例如处理磁盘配额问题,采用Quota 来进行管理;对于远程主机调用的问题,采用 SSH方法;我们使用 Apache为用户提供 Web 服务;对于FTP 服务我们采用vsftp;对于系统的数据库,我们采用MySQL软件 。另外,我们需要对虚拟主机信息进行监控,所以选择了Awstats、Cacti和CutyCapt。

我们对系统开发模块进行具体分析。

1.用户登录模块

在虚拟主机网络中所有主机的数据库上都保存一份管理员的用户名和密码。当用户登录时,首先看到的是登录页面,页面上有验证码, 需要用户输入验证码才能进行用户名和密码的验证。在用户提交表单后,先检查验证码是否正确,如果不正确,则返回登录页面,如果正确,则继续进行用户名和密码验证。当所有验证都通过时,将Sessionid写入用户Cookie,返回给用户管理页面。

部分代码实现:

2.系统验证登录和退出

用户进行每一步操作时都要进行是否登录的验证,以阻止未登录用户直接调用某个页面进行操作,这是由单独的模块进行:每次用户进行操作时,都对用户sessionid 与已经登录的sessionid进行比较,如果二者相同,则认为用户已经登录。用户登出时,服务器清空Session。

3.系统新增节点

当系统增加服务器节点时,先在新增加的实体机节点上配置、授权一台虚拟主机管理网络中的主机访问,再在这台授权过的主机上增加节点。增加节点时,虚拟主机管理会更新所有主机上的主机列表,复制当前的列表到新增主机上,授权数据库,并同步RSA公钥,完成授权。

部分代码实现:

4.主机列表及其负载情况

因为主机列表分布在不同的服务器上,分别由不同的服务器来维护,因此在登录时要从虚拟主机网络中的服务器取回主机列表信息,包括用户名、用户信息、磁盘配额等(这一步通过数据库连接进行)。

5.系统消息列表的维护

每一台服务器都维护一个消息列表,读取通知时只需在本地读取即可。但在发布通知和修改删除通知时,需要在所有服务器上推送消息,保证消息列表的可靠性。

6.添加虚拟主机

添加虚拟主机时首先需要选取服务器,服务器接收到表单,判断服务器是本地服务器还是远程服务器,若是本地服务器,则在本地新建虚拟主机,若是远程服务器,则在远程服务器进行远程过程调用RPC来新建虚拟主机。在主机新建时,要调用到Apache控制模块来完成Apache配置。

新建虚拟主机时需要配置vsftpd、Apache、MySQL和 Quota,这是由过程调用产生的。

部分代码实现:

7.配置Apache控制模块

该模块完成Apache的配置、修改、删除、重启工作,在连接远程主机完成工作时,需要进行加密连接,远程调用。

部分代码实现:

8.查看FTP日志

用户从查看FTP日志的页面上选择一个要查看FTP日志的主机或者用户,FTP日志模块就会读取本地或者远程日志,返回给用户,在远程读取时进行加密连接。

9.系统附加功能

为了更好地完善虚拟主机管理系统的功能,添加照片墙和访问管理等开源软件的支持以方便用户的使用。

(1)照片墙

照片墙后台选用Qt库来实现,Cutycapt生成页面快照,genSnapWall来调用xvfb和Cutycapt共同完成快照,将结果存于服务器上,照片墙可方便地展现网站快照,直观地显示管理虚拟主机的现状。

(2)Awstats

Awstats是一个免费、简洁、强大、有个性的统计工具。它可以统计站点中的如下信息:访问量、访问次数、页面浏览量、点击数、数据流量等;精确到每月、每日、每小时的数据;访问者国家;访问者IP;Robots/Spiders的统计;访客持续时间;对不同Files type 的统计信息;Pages-URL的统计;访客操作系统浏览器等信息;其他信息(搜索关键字等等)。

(作者单位为山东大学网络与信息中心)

猜你喜欢

列表日志开源
一名老党员的工作日志
学习运用列表法
扶贫日志
扩列吧
五毛钱能买多少头牛
2019开源杰出贡献奖
雅皮的心情日志
游学日志
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0