基于内核中套接字对接的第七层负载均衡的方法技术

技术编号:2870713 阅读:204 留言:0更新日期:2012-04-11 18:40
一种基于内核中套接字对接的第七层负载均衡的方法,其特征在于:至少包括:    步骤10:前置节点接收到客户端的请求;    步骤20:修改请求报文的源、目的地址和端口号,将报文直接发送给服务节点;    步骤30:接收服务节点的响应;    步骤40:修改响应报文的源、目的地址和端口号,将报文直接发送给服务节点;    步骤50:如果请求完成,则回收两个套接字,更新转换映射表;否则执行步骤10。(*该技术在2022年保护过期,可自由使用*)

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及机群中负载均衡的方法,尤其涉及一种,属于计算机网络

技术介绍
随着计算机网络应用的普及,计算机网络用户的数量在不断膨胀,这对于服务提供商提出了更大的挑战按照传统的方法使用单台服务器提供服务已经远远不能满足庞大的用户请求的需求;现在通常都会使用多台服务器向用户提供服务。但是,如何才能把所有的用户请求均衡地分布到后台服务器上,则是负载均衡需要解决的问题。如果按照实施负载均衡策略组件所处的位置来划分,可以将负载均衡分为两类基于域名服务器(Domain Name Server,简称DNS)的负载均衡和基于服务端应用层与/或网际协议(Internet Protocol,简称IP)层的负载均衡。基于DNS的负载均衡通常使用DNS轮询(round-robin)机制,在DNS上为一个名字设置多个IP地址,分别指向后台实际提供服务的服务器。其机制十分简单,却缺乏灵活性,而且有很多限制条件;例如后台的服务器必须使用外部地址,能和客户端直接进行通信。而基于服务端应用层与/或IP层的负载均衡则不同,它可以根据一定的策略,对请求数据的具体内容进行分析,适当修改请求报文的内容,将其发送到适当的服务节点;例如专用的负载均衡器硬件、环球网(Web)服务器提供的万维网(World Wide Web,简称WWW)服务程序所用的超文本传输协议(Hypertext Transfer Protocol,简称HTTP)重定向功能等,都可以在服务端根据应用的请求而实施负载均衡。集群技术可以把多台服务器封装成一些服务器聚集,统一对外界提供服务。这种技术具有很多优点,例如可扩展性好、对外界屏蔽内部细节等。在集群中通常会为用户提供一个唯一的单一登录点(称为前置节点),它和集群中的所有服务器保持连通,这种特点决定了可以在集群中实施特殊的负载均衡机制。集群中的前置节点通常就是为用户提供的单一登录点,它负责转发客户端和服务器之间交互的数据,并根据一定的策略,将客户端的请求均衡地分发到各个服务节点上,并将服务节点的响应转发给客户端,从而透明地为用户提供强大的服务处理能力。实际上,前置节点的主要任务有两个报文转发和均衡负载。报文转发可以在两个层次上进行传输层和应用层。基于传输层的报文转发可以使用网络地址转换(NAT)、目标地址转换、IP封装、直接包转发等技术;这样可以直接修改IP数据报的源地址、目的地址,或者另外附加一个IP数据报首部,或者直接修改数据报的以太网地址,最终将报文发送到目的地址。由于上述的过程只需修改传输控制协议(Transfer Control Protocol,简称TCP)首部或IP首部,不涉及传输数据的变化,因此,能够快速地转发报文;其缺点是缺乏灵活性。而基于应用层的包转发方式则不同,它把接收到的数据报逐步解析,剥离IP首部和TCP首部,最终得到应用数据;然后根据应用数据选择适当的目的地址,重新封装TCP首部和IP首部,通过网络驱动程序转发给内部网络的目的地址。其优点是可以根据请求的内容选择目标节点,并能对请求数据进行缓冲,同时可以屏蔽内部节点的细节和故障,对终端用户透明。由于应用层是开放式系统互联参考模型(Open System InterconnectReference Model简称OSI模型)中的第七层,因此这种报文转发技术通常就称为第七层转发。由于前置节点需要处理各种用户请求,这涉及到报文分析、数据库查询等大量操作,不可能完全在内核空间中完成,因此,前置节点一般都采用应用层程序来实现报文转发和负载均衡。以用于电子邮件接收的(Point of Presence,also Post Office Protocol,简称POP3)服务为例如果只对外提供一台POP3服务器,而且可以直接与客户端连通,那么情况就非常简单客户端只需要和POP3服务器的110端口建立一条TCP连接,并向服务器请求数据即可。而对于一个提供POP3服务的集群来说,情况就变得非常复杂通常大型的邮件服务器中的用户都是分布式的,用户的数据文件可能分布在多台邮件服务器上,而客户端对此并不知情。假设客户端需要读取“username@domain.com”的邮件,过程如图1所示详细步骤如下1、客户端向前置节点(domain.com)的110端口发起请求,要求读取用户“username@domain.com”的邮件;2、前置节点的网卡接收到用户请求之后,操作系统将其从内核空间拷贝到用户空间,交给应用层的程序处理;3、应用层程序对用户请求进行分析,确定是POP3请求,需要查询邮件用户数据库LDAP/DB;4、返回查询结果,确定用户“username”的数据文件保存在邮件服务器Mail Server1上;5、将用户空间中的数据拷贝到内核空间,重新封装报文;6、和邮件服务器Mail Server1建立套接字(socket)连接,发送请求数据;7、邮件服务器Mail Server1接收到请求之后,读取用户“username”的邮件数据,作为响应报文发送回前置节点;响应报文沿着来路反向返回,直至发送到客户端。如果客户端的请求是新建立一个“username@domain.com”的用户,那么上面的步骤3就不再是简单地查询邮件用户数据库;应用层程序会搜集所有邮件服务器的负载、磁盘空间等信息,采用相应的策略,将该用户的请求分配到最合适的一个邮件服务器上,并在这台邮件服务器上为该用户建立数据文件,并将结果返回给前置节点,由前置节点转发给客户端,这样就能保证所有的邮件服务器之间的负载是均衡的。TCP是面向连接的协议,普通的TCP连接的建立需要经历一个三次握手的过程首先,请求端(通常称为客户端)向连接端(服务器)发送一个SYN报文,指明要打开的端口,报文中包括客户端的初始序号ISNC;接着,服务器返回一个命令正确应答(ACK)报文进行应答,其中的应答号等于ISNC+1,同时向客户端发送一个SYN报文,其中包括服务器的初始序号ISNS;最后,客户端将ISNS+1作为应答号向服务器发送ACK报文进行应答,同时可以发送请求数据报文。此后,客户端和服务器之间就使用这个TCP连接进行交互数据,构成一个完整的会话。可以使用源IP地址、源端口号、目的IP地址以及目的端口号来唯一标识一个会话;而每次会话的具体过程还需要另外两个值进行标识序列号(SEQ)和应答号(ACK)。其中源IP地址和目的IP地址位于IP数据报的首部中,而源端口号、目的端口号、序号、应答号则位于TCP报文的首部中。和基于传输层的报文转发技术相比,第七层转发有一个致命的缺点就是效率非常低,因为它将传输的应用数据从内核空间拷贝到用户空间,未对其进行任何修改,又拷贝回内核空间,而且还引起了相应的上下文切换的开销。FreeBSD中提供了一种转移套接字(divert socket)机制,允许在用户层直接处理TCP/用户数据报协议(User Datagram Protocol,简称UDP)报文,可以简化应用层转发报文的过程,但是仍然不可避免应用数据进出内核空间的开销。实际上,转发节点和客户端、服务器分别建立的两个TCP连接并非毫不相干。这两个连接一旦建立,在内核空间中就可以得到这两个连接各自的源地址、源端口号、目的地址和本文档来自技高网...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】

【专利技术属性】
技术研发人员:李电森冯锐许正华肖利民
申请(专利权)人:联想北京有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1