web服务器集群系统的设计与实现.docxVIP

  • 11
  • 0
  • 约5.04千字
  • 约 5页
  • 2023-10-09 发布于广东
  • 举报
web服务器集群系统的设计与实现 一、 web集群系统的实现 随着客户数量和密集任务的增加,仅依靠web服务器和单独的web服务器是难以承受的。WEB服务器集群系统成为解决这一问题的最佳方法。WEB服务器集群系统是指2台或2台以上WEB服务器联合向客户提供WEB服务的一种计算机系统。它采用负载均衡策略, 将到达的请求分配给集群中的某台服务器进行处理, 并且通过数据冗余和软件监测等方法实现系统的高可用性。 目前, 国内外很多公司都已推出了商业化的集群系统产品, 如微软的Windows 2003 Server、IBM的Websphere等均支持集群的服务。这些商业化的产品价格较高, 要求特定的软、硬件配置, 产品的专用性较强。也有一些免费的集群方案, 如自由软件项目:Linux服务器集群系统——LVS (Linux Virtual Server) 方案目前得到广泛应用。但是这种方案只适用于Linux系统。 现有的集群系统方案中, 大多数系统负载均衡的粒度为数据报文, 所以用户的一个请求由一台服务器提供, 而下一个请求则很可能由另一台服务器提供。这一点对于一般的网页浏览而言, 由于浏览的内容随机性较大, 不会影响负载均衡的效果。而在某些特殊的WEB服务 (如实时曲线浏览) 中, 一个用户浏览的内容前后相关性很强, 在WEB服务器的数据库中这些内容往往聚集在一起, 如果由不同的服务器响应同一个用户的请求, 反而加大了数据检索的工作量, 加大系统的负载。对于这种情况下负载均衡的粒度还是定为用户较好。 本文提出了一种基于SOCKET的软件实现WEB集群系统方法。这种方法可以在WINDOWS和UNIX系统平台上实现负载均衡和高可用性系统。系统负载均衡的粒度定为用户, 应用于内容相关性较强的WEB服务器系统, 可以取得较好的负载均衡效果。 二、 系统功能模块 本文提出的集群系统是由一个负载均衡器 (配备了相应软件的计算机) 和若干台软件配置完全相同的WEB服务器构成。负载均衡器和WEB服务器之间通过SOCKET通讯。负载均衡器定时地向系统中的每台WEB服务器发送同步信号, 而WEB服务器收到同步信号后, 向负载均衡器传递两方面的数据:WEB服务器进程数据和WEB服务器性能数据。进程数据描述了WEB服务器上的系统关键进程是否运行。只有当负载均衡器收到某台服务器上所有关键进程都正常运行的信息时, 才认为这台WEB服务器可以向用户提供服务, 否则, 认为服务器故障, 不能提供服务。服务器性能数据描述了WEB服务器的性能参数, 如CPU使用率、内存使用率、每秒硬盘数据传送量、每秒网络数据传送量等。负载均衡器可以根据收到的各个工作正常的WEB服务器的性能参数, 利用加权算法, 判定当前负载最轻的服务器, 由它为下一用户请求提供服务。系统的功能模块如图1所示: 为了简化, 图1中只标出一台WEB服务器的模块图及其和负载均衡器之间的通信过程, 在实际集群系统中, 有若干台相同的WEB服务器, 它们的运行方法以及与负载均衡器之间的通信过程都是完全相同的。而负载均衡器和WEB服务器中的本机进程监视模块的作用, 是保证本机的一些重要进程可以常驻内存, 避免用户的不当操作而造成损坏。 三、 系统完成 1. 服务器信息接收模块 为了便于在进程之间传递数据, 系统使用共享内存文件记录每个WEB服务器的运行状态与性能数据。在共享内存中定义了一个无符号整型变量和一个服务器信息表。 无符号整型变量是一个1-65535的循环计数器。计数器初值为1, 随着负载均衡器上的服务器信息接收模块运行, 计数器定时加1, 当计数器值为65535时, 设定再次加1后, 计数器值变为1。 服务器信息表如表1所示, 表中每一行记录了一个WEB服务器的各种参数:一个字符数组记录服务器IP地址, 一个无符号整型数记录服务器当前运行状态是否正常, 一个整型数记录服务器的CPU使用率, 一个整型数记录服务器的内存使用率, 一个长整型数记录服务器的每秒钟内服务器网络传递的数据包数, 一个长整型数记录服务器的每秒钟内服务器硬盘做的读取操作数。整张表可以记录集群系统中所有WEB服务器的性能和状态信息。 负载均衡器上的负载均衡判决模块启动时, 将所有WEB服务器的IP地址写入共享内存, 并将所有的WEB服务器状态数定为0。服务器信息接收模块运行时, 每隔一段时间在共享内存中读取循环计数器的值。它的每个通信子进程或线程根据与之通信的WEB服务器的IP, 在服务器信息表中对应的服务器状态处写入一个值, 如果服务器运行正常, 写循环计数器的值, 如果服务器出现故障, 则写零。性能数据接收模块运行时, 根据与之通信的WEB服务器的IP, 在共享内存中对应的地址写入服务器的性能数据:CPU使用率、内存使用率、网络数据

文档评论(0)

1亿VIP精品文档

相关文档