重要的Web服务在正常工作的同时,必然需要建立一套对应的备份系统,来确保数据的安全性以及不间断性。这里的意外主要指的是电源的中断、服务器硬件的自然损坏、服务器系统软件的崩溃,以及各种形式的黑客攻击导致的数据丢失或者页面信息的篡改等突发情况。
图一、服务器工作分配示意图 |
通常的备份是由人工定期将数据拷贝至另一台服务器上,或者购买特殊的硬件备份系统来完成。现在我们需要一种新的备份体系,它能做到定时备份,在意外发生时及时启动备用系统并通知管理员。
我们的备份服务器安置在至少有一段空间距离的另一个机房中,备份服务器也拥有独立的公网IP,并和其他服务器组成单独的局域网,它们可通过局域网IP相互访问。另外,我们最好再设置一台服务器(在下文中称为监测/分配服务器)让它完成判断其他服务器工作状态和及时切换用户访问目标地址以启动备份服务的任务。
其次是操作系统和相应的设置。为了保证安全,避免黑客利用同样的系统漏洞攻击,除了及时打补丁以外,最好为服务器安装第三种系统。通常服务器会使用Windows 2000 或者 Linux 系统,那么我们就可以为备份服务器安装Windows 2003。同时不要忘记设置一个复杂而长的系统密码。然后我们将Web服务器的硬盘通过局域网IP映射到这台机器上,这样我们就能通过程序方便地备份数据了。
为节省资源,我们可以将多个服务集中在一台备份服务器上进行备份,但这就要求这台服务器的性能必须可靠且安全级别很高,同时安装杀毒软件和软硬件防火墙也是必要的。
接下来我们将对备份和监测/分配服务器做详细配置。
备份工作
之前我们已经把Web服务器的硬盘映射到了备份服务器上,这样就使得备份工作可以顺利进行。只要用任何一种编程语言编制一个定时执行的小程序,把源文件夹中的Web页面文件、脚本文件、图片资源和数据库文件等原封不动地拷贝到对应的本地文件夹中就可以了。
定时拷贝可以在访问量小的凌晨执行,以减少对服务的影响。另外,还可以采取监视文件改动的方法进行备份,就是让程序随时扫描源文件夹中文件的修改时间,发现有变化就进行拷贝,这种方法可以做到真正的实时备份。
注意:在拷贝的同时,还要确认一下文件的合法性,以避免将被人篡改过的页面复制过来。
搭建备份服务器Web服务环境
为了让备份的文件在原服务器故障时代替其进行工作,我们必须在备份服务器上搭建一套相同的运行环境,比如安装IIS还有相应的数据库。由于我们的Web服务器不止一个,系统可能不同,所用的脚本文件也就可能不同,因此我们还需安装相应的脚本解析程序。
目前对于PHP等在Linux下运行的脚本也有了Win32的版本,可以直接和IIS配合使用。如果管理员不习惯,也可以安装Apache的Win32版本。
注意:不同的服务器软件不要使用相同的端口,以避免冲突。
安装好的服务在平时不需要运行,以防止文件在拷贝复制中出现错误。我们可以在必要时通过程序启动它们。
监测服务器运作状况
我们利用监测/分配服务器对给Web服务包括备份服务器进行运行监测,以及时发现硬件故障、系统故障、数据库错误和恶意攻击等。我们需要在编写的检测程序中分别判断,检测程序定时主动连接Web页面。对于硬件故障,如电源故障发生后,将导致服务的全部停止,因此连接请求会得不到回应。
对于系统故障(包括服务器软件故障),程序会发现响应过慢或者回应异常(比如返回找不到页面的错误信息)。对于数据库故障程序,也会同样收不到对数据库请求的响应,由此可以进行判断。而对于黑客攻击程序的工作要多一些,因为黑客往往只是篡改网页(主要是网站首页)的内容,我们就不能根据前几项检查来发现错误,当在前几项检查都通过以后,程序需要获取网站首页和关键页的页面文件内容,然后通过与本地保存的文件作对比来判断真伪。
意外发生时自动切换及警报
为实现意外发生时自动切换以启动备份服务,我们在监测/分配服务器上安装了服务器软件,并提供虚拟域名解析功能(Apache和IIS都可以实现)。而且,受保护的Web服务器域名对应IP地址都被DNS解析到监测/分配服务器的IP上。也就是说,访问者不管键入哪一个域名,都会被解析到监测/ 分配服务器上,然后利用它的虚拟域名功能进行二次分配。
通常不同的域名会被解析到本地相应文件夹中的一个默认文档上,如Index.html。我们可以让这个文件只负责转向的功能。在文件中写上如 就可以实现。所指向的IP可以是Web服务器的,也可以是备份服务器的,这要靠检测程序来决定。从图2我们可以了解监测/分配服务器工作原理。
图二、监测/分配服务器工作原理示意图 |
当检测程序发现异常后,首先发出指令终止备份服务器的备份工作,启动备份服务器的Web服务和数据库。然后修改Index.html文件中的 IP,使之指向备份服务器。最后通过邮件服务器,向管理员发出警报邮件并通过扬声器发出警报音。当一切完成后,对于访问者来说是觉察不出前后的变化的。也就是说,我们通过这个系统做到了及时备份以及无缝的切换。
值得注意的是,为了防止备份服务器拷贝错误页面,我们应该在每次备份开始前都进行检测。这可以通过备份程序和监测程序之间的通讯来实现,而这两个程序也最好直接做成系统的服务。
服务器相互监督与辅助监测
从上面的情况看,在我们的整个系统中,每一次访问首先到达的都是监测/分配服务器。这台服务器虽然工作量不大,但是如果它不能正常工作(特别是虚拟域名停止工作)会造成所有服务器都不能被访问。因此,有必要利用其他服务器监督此服务器的工作情况。
如果发现问题,也同样需要发警报邮件和警报音。此外,我们还可以在管理员的工作场所利用一台普通PC随时自动对Web服务进行访问测试,一旦这个辅助的检测器发现异常,也会发出警报以使我们的服务器更加安全。
手动维护
虽然有了自动备份和监测系统,管理员的手动维护工作也还是不可缺少的。服务器在运行了一段时间以后,会产生一些垃圾文件,比如没有被及时清除而残留的Session和Temp文件。同时随着时间的推移,日志文件也会越来越多地占据硬盘空间,所以必须进行清理。同时及时给各服务器系统打补丁,升级服务软件、病毒库和防火墙也是必不可少的工作。
随着网络的发展,网络生活的普及,Web主页和服务日益成为了一个部门或者企业的网络形象的代言,因此它们扮演的角色也变得越来越重要,服务器的安全性也得要了前所未有的重视。本文所写的内容是笔者在南开大学网络中心工作的实际成果和经验总结,通过长时间的测试运行,实践证明此系统可以很好地完成多Web服务系统备份的各项任务,从而从最大程度上保证了各个重要Web服务的正常运行。
(责任编辑:城尘)