热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Linux集群技术在Web服务器中的应用

文章标题:Linux集群技术在Web服务器中的应用。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  引言

  网络的普及使各类电子商务、电子政务网站的流量剧增,系统瓶颈问题日益严重,直接影响了用户请求的响应时间,在高峰期有的请求甚至被拒绝。面对这种情况,一般来说有两种解决方案:一是升级硬件、购买性能更好的服务器等,但花费较多,而且效果不一定很理想,显然不是最好的解决方案;二是利用集群技术,在原有的硬件投资基础上,添加几台新的服务器,组建负载均衡集群系统。集群计算模式是比较经济的计算模式,允许用户把普通商用硬件系统组成机群,并根据需要随时增加新的硬件。既提高了系统的性能,同时也降低了成本。本文简要地讨论了一个用于企业Web服务的集群系统的设计思路,并给出了重点模块的设计与实现过程。

  1.集群技术

  集群技术是一种计算机系统之间连接的方式,运用它可以将分散的计算系统连接起来完成原来单独节点的计算系统无法完成的任务。最早的集群系统就是出于这样的并行处理的目的出现的。但是随着计算机性能的快速发展和网络不安全因素的增加,系统的稳定性和可靠性是主要面临解决的问题。于是开始使用集群方式将两台以上的设备连接起来,当整个集群系统中发生单点或局部多点故障时,集群中其他的计算机将自动来接替出故障的设备。最典型的例子就是双机热备份,两台一样的计算机系统,使用集群软件连接起来,其中一台作为另一台的备份,当主机系统崩溃时,另一台来接替它的任务。除此以外,利用集群系统的高并行性能进行复杂的科学、工程计算,也是非常有经济价值的做法。

  集群技术可以有效地解决开放系统的稳定、抗压和负载平衡问题,建立一个集群系统的主要目的在于:

  (1)现有的应用得以保障。

  (2)提高性价比。

  (3)实现资源共享。

  (4)提高灵活性和可扩展性。

  (5)增强实用性和容错性。

  (6)灵活的可伸缩性。

  2.设计目标及系统架构

  设计一个基于Linux的集群系统,它能够不断监视集群中各台服务器的负载状况,并且将来自外网的Web请求转发到内部网中的某一台实际服务器上执行。具体来说,拥有以下的功能:

  (1)服务转发。能接受来自外部网中的多种基于TCP/IP的服务请求,并将它们转发到当前负载最轻的机器上执行。

  (2)动态负载平衡。平衡器能够监视内部网中的实际服务器的负载状况并且找到负载最轻的机器。

  (3)连接持续性。来自外网的同一客户的所有请求必须转发到内网中的同一台服务器上进行处理。

  该集群系统由调度机、服务器1、服务器2以及服务器N等机器组成。其中调度机作为内网和外网的接口。能够接收外网的用户请求.并将此用户请求发送到服务器1到服务器N中的某台机器上,当服务器处理完该请求以后,就将处理完的结果发送给调度机,然后再由调度机将结果返回给外部网的用户。试验环境中外网中的客户机器的IP地址为211.80.248.100,调度机有两个IP地址,一个是外网的211.80.248.99。一个是内网的192.168.1.1。调度机上运行的操作系统内核为Linux 2.2.x。内部网中有N台服务器,IP地址分别为192.168.1.2、192.168.1.3...192.168.1.N,上面运行的操作系统也是Linux操作系统.都将192.168.1.1设为网关.并且都增加了通往211.80.248.0网络的路由。负载调度的目的就是将客户发向调度机的请求按照内网机器当前负载的情况分发到各个服务器上。

  系统实现了IP级的负载平衡。当外网客户向调度机发送一个请求时,在调度机的IP层对此请求的目标地址进行替换.将目标地址替换为内网中负载最轻的服务器的IP地址。然后将此请求再次转发出去。当内网中的服务器处理完请求后.将处理结果发往调度机,调度机再次在IP层将目标地址替换为发出请求的外网中的客户的IP地址。然后将回应转发给客户。

  系统主要分为IP伪装模块、IP端口转发模块和调度模块。其中IP端口转发模块的实现比较简单。只需在Linux的某个内核文件中增加适当的转发规则,并调用IP伪装模块的功能就能实现,因此文中没有详细介绍该模块。

  3.IP伪装

  IP地址中的那些私有地址是无法直接与Internet上的机器通讯的,如果它们想与Internet上的机器通讯,需要采用网络地址翻译(NAT)机制。IP伪装机制实际上就是一种M-1的动态网络地址翻译,它能够将多个内网中的IP地址映射到一个与Internet相连接的外网IP地址上,这样无法直接与Internet上的机器通讯的内网机器就可以通过这台映射机器与外界进行联络。网络地址端口翻译是对网络地址翻译的一种扩展。它将许多网络地址以及TCP/UDP端口翻译为一个IP地址和TCP/UDP端口,本集群系统采用的就是网络地址端口翻译机制。为了使Linux支持IP伪装,必须重新编译Linux内核并安装、激活IP伪装模块。

  IP伪装模块的主要工作包括:

  (1)接收内网发向外网的所有请求。

  (2)内网中的连接请求通过调度机转发到外网。

  (3)将内网发向外网中的所有请求的源地址隐藏,使所有请求看上去都是由调度机发送的。

  (4)建立HASH表来记录已经建立的所有连接。

  (5)接收外网对请求的回应并将其转发到内网中的发出请求的机器上。

  内网向外网发送连接请求的流程如图2所示(相反的过程非常类似):

  4.调度模块

  调度模块是在应用层实现的,因为在应用层可以灵活地控制调度策略,可以采用静态的调度策略,也可以采用动态的调度策略;同时可以提高系统的可扩展性,当Web站点的访问量增大时,需要添加一台新的服务器时,只要在应用程序中增加一项数据就可以实现。调度模块的主要任务包括:

  (1)调度机向各台实际服务器发送收集负载信息的命令。

  (2)各台实际服务器分别运行获取CPU运行队列长度的程序。

  (3)各台机器将各自的CPU运行队列长度信息回传给调度机。

  (4)调度机对各台机器的CPU运行队列长度进行比较,并选出CPU运行队列长度最短的机器,认为此机器就是负最轻的机器。

  (5)通过系统调用将负载最轻的机器的IP地址传入IP端口转发模块。

  Server方的流程如图3所示

  5.总结

  本集群系统实现了IP级的负载平衡,对IP报文进行目标地址改写的工作主要在核心完成。这是因为这样速度很快,省掉了从用户到核心的通讯过程。该负载平衡系统主要具有以下功能:

  (1)能够对基于TCP/IP协议的多种服务如telnet、ftp、http等进行转发。

  (2)通过找出内网中当前负载最轻的服务器来响应用户的请求,实现动态负载平衡。

  (3)通过匹配Hash表项,来自同一个服务的多次请求能发送到同一台内网的实际服务器上,保证连续性。

  (4)能够保证毫秒级的响应时间。

  (5)用户可以在应用程序中对内网的服务器的数目进行控制,具有良好的可伸缩性。

  (6)当某台服务器出现故障时,能够及时地发现,具有良好的容错性。

  当然,该系统还有很多需要完善的地方。如调度机应该双机备份等等。在大型的应用级集群服务系统的实施过程当中,设计人员需要考虑更多的要素:业务资源设计、资源监测、负载均衡、故障转移管理、可靠性、可用性和性能等若干方面。


推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 什么是网关服务器初学linux服务器开发时,我们的服务器是很简单的,只需要一个程序完成与客户端的连接,接收客户端数据,数据处理,向客户端发送数据。但是在处理量很大的情况下,一 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Linux防火墙配置—允许转发
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • UDP千兆以太网FPGA_verilog实现(四、代码前期准备UDP和IP协议构建)
    UDP:userDatagramprotocol用户数据报协议无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETFRFC76 ... [详细]
  • SQL Server 2008 到底需要使用哪些端口?
    SQLServer2008到底需要使用哪些端口?-下面就来介绍下SQLServer2008中使用的端口有哪些:  首先,最常用最常见的就是1433端口。这个是数据库引擎的端口,如果 ... [详细]
  • 三、寻找恶意IP并用iptables禁止掉找出恶意连接你的服务器80端口的IP,直接用iptables来drop掉它;这里建议写脚本来运行, ... [详细]
  • LVS-DR直接路由实现负载均衡示例
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 域名解析系统DNS
    文章目录前言一、域名系统概述二、因特网的域名结构三、域名服务器1.根域名服务器2.顶级域名服务器(TLD,top-leveldomain)3.权威(Authoritative)域名 ... [详细]
  • IP双栈环境下网络应用迁移
    IPv4向IPv6迁移有多种途径,在选择具体的迁移方式时,当前环境中运行的应用是否支持IPv6是重要的考量因素之一,同时在编写新的应用时,需要考虑新编写的应用不仅可以适应当前主流的IPv4环境, ... [详细]
  • IP、ARP、TCP、UDP、ICMP、DNS、路由协议、DHCP协议的缺陷,容易受到的攻击,以及防御措施1、IP协议1.1、介绍: ... [详细]
author-avatar
平平您好
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有