• 转:LVS简介


    转载:https://www.jianshu.com/p/7a063123d1f1https://blog.51cto.com/huanglianfeng/1604828

    本想直接放入“链接”,还是自己整理一下,加深理解。

    一、LVS是什么?

    LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器,是一个虚拟服务器集群。它是我们国家的章文嵩博士的一个开源项目。

    在linux内存2.6中,它已经成为内核的一部分,在此之前的内核版本则需要重新编译内核。

    二、LVS能干什么?

    LVS主要用于多服务器的负载均衡。

    它工作在网络层,可以实现高性能,高可用的服务器集群技术。

    它廉价,可把许多低性能的服务器组合在一起形成一个超级服务器。

    它易用,配置非常简单,且有多种负载均衡的方法。

    它稳定可靠,即使在集群的服务器中某台服务器无法正常工作,也不影响整体效果。

    另外可扩展性也非常好。

    三、工作原理

    LVS术语

    Director Server:调度服务器,将负载分发到RealServer的服务器上

    Real Server:真实服务器,真正提供应用服务的服务器

    VIP:虚拟IP地址,公布给用户访问的IP地址

    RIP:真实IP地址,集群节点上使用的IP地址

    DIP:Director连接到RealServer的IP地址

    如上图,LVS可分为三部分:

    1、Load Balancer,前端负载均衡层

    这是LVS的核心部分,它好比我们网站MVC模型的Controller。

    由一台或多台负载调度器(Director Server)组成,LVS模块就安装在调度器上。

    调度器的作用类似于路由器,它含有完成LVS功能所设定的路由表,通过这些路由表把用户的请求分发给Array Server层的应用服务器(真实服务器)。

    同时在调度器上,还要安装对真实服务器服务的监控模块Ldirectord,Ldirectord模块用于检测各个真实服务器的健康状况,在真实服务器不可用时把它从LVS路由表剔除,恢复时重新加入。

    2、Server Array,中间服务器群组层

    由一组实际运行的应用服务器/真实服务器组成,真实服务器(Real Server)可以是web服务器,mail服务器,DNS服务器,FTP服务器,视频服务器中的一个或多个。

    每个真实服务器之间可以通过高速LAN或分布在各地的WAN相连接。

    注意,其实上层的Director Server也可以当Real server用的。

    3、Shared Storage,底层数据共享存储层

    为所有Real Server提供共享存储空间和内容一致性的存储区域。

    在物理上,一般由磁盘阵列设备组成,为了提供内容一致性,一般通过NFS网络文件系统共享数据,但是NFS在繁忙的业务系统中,性能不是很好,此时可以采用集群文件系统,例如Red Hat的GFS文件系统,oracle提供的OCFS2文件系统。

    四、负载均衡机制

    前面我们说了LVS是工作在网络层。相对于其它负载均衡的解决办法,比如DNS域名轮流解析、应用层负载的调度、客户端的调度等,它的效率是非常高的。

    LVS的通过控制IP来实现负载均衡。IPVS(IP Virtual Server)是其具体的实现模块。

    IPVS的主要作用:安装在Director Server上面,在Director Server虚拟一个对外访问的IP(VIP)。用户访问VIP,到达Director Server,Director Server根据一定的规则选择一个Real Server,处理完成后然后返回给客户端数据。这些步骤产生了一些具体的问题,比如如何选择具体的Real Server,Real Server如果返回给客户端数据等等。

    IPVS为此有三种机制

    1.VS/NAT(Virtual Server via Network Address Translation),网络地址翻转技术实现虚拟服务器

    当请求来到时,Diretor server上处理的程序将数据报文中的目标地址(即虚拟IP地址)改成具体的某台Real Server,端口也改成Real Server的端口,然后把报文发给RealServer。Real Server处理完数据后,需要返回给Diretor Server,然后Diretor server将数据包中的源地址和源端口改成VIP的地址和端口,最后把数据发送出去。由此可以看出,用户的请求和返回都要经过Diretor Server,如果数据过多,Diretor Server肯定会不堪重负。

    2.VS/TUN(Virtual Server via IP Tunneling),IP隧道技术实现虚拟服务器

    它跟VS/NAT基本一样,但是Real server是直接返回数据给客户端,不需要经过Diretor server,这大大降低了Diretor server的压力。

    3.VS/DR(Virtual server via Direct Routing),直接路由技术实现虚拟服务器

    跟前面两种方式,它的报文转发方法有所不同,VS/DR通过改写请求报文的MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给客户,免去了VS/TUN中的IP隧道开销。这种方式是三种负载调度机制中性能最高最好的,但是必须要求Director Server与Real Server都有一块网卡连在同一物理网段上。

    五、负载调度算法

    前面我们都知道Director Server要选择不同的Real server,那么它具体的如果选择Real Server以达到负载均衡的呢,IPVS实现了八种调度方法,具体算法可以查看官网或者百度,这里就不一一列出了。官网:www.linuxvirtualserver.org。

     

  • 相关阅读:
    week2 About BuildTools
    week2 GIT and Version Control
    学习RFC相关知识以及心得
    Week 1 Functional Language
    8.C语言_中文字符存储问题
    7.C语言_字符与字符串
    6.C语言_整数类型
    4.C语言_变量与参数的内存布局
    3.C语言_变量
    2.C语言_参数传递与返回值
  • 原文地址:https://www.cnblogs.com/orange-CC/p/12807812.html
Copyright © 2020-2023  润新知