码迷,mamicode.com
首页 > 其他好文 > 详细

LVS

时间:2014-10-11 09:10:35      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:服务器   linux   server   客户端   lvs   集群   

LVS

    LVS(linux virtual server),即linux虚拟服务器,是一个虚拟的服务器集群系统。个人认为它就是把客户端请求来的大量请求通过调度器转发给后端,可以在调度器上定义方法,来实现负载均衡的。

    LVS技术要达到的目标是:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。


    Lvs术语:

        VIPvirtual IP nat 模型中内网需要向外网转换的ip

        DIPdirettor IP    负载均衡调度器的ip

        RIPreal server IP 实现负载均衡服务器的ip

        CIPclient IP      客户端ip

 

    LVS的类型:

        Lvs-nat 地址转换

        Lvs-dr  直接路由

        Lvs-tun 隧道

 

    类型图解

    Lvs-nat

        bubuko.com,布布扣


    详解:对于lvs-nat模型来说,客户端向服务器发送一个请求,这时请求的是VIP(客户是不知道后面有集群的),目标地址是VIP,源地址是CIP;当这个包经过PREROUTING链传到INPUT链上(ipvs工作在INPUT链上),ipvs发现这个包是请求的是集群上的服务器,它会把包的目标地址强行转换为RIP,经过POSTROUTING链,这个请求到达目标。服务器响应时,这时发的响应包的目标地址是CIP,源地址是RIP,到达DIP时,DIP发现这是个经过nat转换的地址,就检查自己的nat表,把源地址改成VIP,然后这个包经过FORWARD、POSTROUTING出去就响应给用户了。


    nat类型的特性:

        1.RS应用使用私有地址;RS的网关必须指向DIP

        2.请求和响应都要经过Director;高负载场景中,Director易成为性能瓶颈;

        3.支持端口映射;

        4.RS可以使用任意OS


    LVS-DR:

        bubuko.com,布布扣

    详解:dr模型跟nat模型最大的差距就是dr模型减少了对director的压力,客户端发出一个请求,目标地址是VIP,源地址是CIP。路由器去找VIP,但是所有的RS上也有VIP,这就出现了3个VIP相同的情况,是会发生冲突的,这时就需要在RS上做arptables了,禁止VIP的mac响应,这时路由器会说,谁是VIP,然后director就把自己的VIP告诉给路由器了,RS上的VIP能收到请求,但是得不到响应。当包进到ipvs中,这时ipvs不会吧目标地址转换了,而是不改变源和目标地址的情况下,在包的首部再加入源mac是DIP的mac,目标mac是RIP的mac。然后返还给交换机,交换机看到目标mac是RS,RS拿到包之后拆开mac,看到ip,因为自己也有VIP,所以解开包,送到进程,进行响应,响应包封装,目标地址是CIP,源地址是VIP,所以就直接到达客户端,不经过director。


    dr类型的特性:

        1.保证前端路由将目标地址为VIP的报文统统发往Directory,而不能是RS

        解决方案:

            (1)静态地址绑定:在前端路由器上操作

            (2)aprtables

            (3)修改RS上内核参数,将RS上的VIP配置在lo接口的别名上,并限制其不能响应对VIP

            址解析请求;

        2.RS可以使用私有地址;但也可以使用公网地址,此时可通过互联网通过RIP对其直接访问;

        3.RSDirectory必须在同一物理网络中;

        4.请求报文经由Director,但响应报文必须不能经过Director

        5.不支持端口映射;

        6.RS可以是大多数常见的OS

        7.RS的网关绝不允许指向DIP


    tun类型的特性:

        1.RIPVIPDIP全部是公网地址;

        2.RS的网关不会也不可能指向DIP

        3.请求报文经由Director,但响应报文必须不能经过Director

        4.不支持端口映射;

        5.RSOS必须支持隧道功能;


    静态方法:仅根据调度算法本身进行调度

        rrround robin,轮流,轮询,轮叫

        wrrweighted round robin,加权轮询

        shsource hashing,源地址hash,表示来源于同一个CIP的请求将始终被始终被定向至同

        一个RSSESSION保持

        dhdestination hashing,目标地址hash

   

    动态方法:根据算法及各RS当前的负载状况进行调整

        lcleast connection,最少连接

            Overhead(负载状况)=Active(活动状态)*256+Inactive(非活动状态连接数)

        wlcweighted lc

            Overhead=Active*256+Inactive/weight

        sed:最短期望延迟shortest expection delay

            Overhead=(Active+1)*256/weight


Lvs-nat配置实现

    实验目的:实现lvs-nat模型的集群

    实验环境:1.vmware虚拟机

              2.3linux子机

              3.测试机

        bubuko.com,布布扣

    说明:Director是有两块网卡的,此实验用虚拟机实现,内网卡都在网络3中。在Real Server上网页都应该是一样的,但是这里为了看出效果,故意弄得不一样,内容是相对应的本机IP

    Real Server配置

    192.168.1.2:

        bubuko.com,布布扣

        bubuko.com,布布扣

# vim /var/www/html/index.html

        bubuko.com,布布扣

# service httpd restart

        bubuko.com,布布扣


    192.168.1.3:

        bubuko.com,布布扣

        bubuko.com,布布扣

# vim /var/www/html/index.html

        bubuko.com,布布扣

# service httpd restart

        bubuko.com,布布扣


    Directory配置:

        bubuko.com,布布扣

        bubuko.com,布布扣

    检测Real Server

        bubuko.com,布布扣

# mount /dev/cdrom /media/cdrom
# yum install ipvsadm

        bubuko.com,布布扣


    定义集群,指明自己的IP和端口,使用轮转机制

        bubuko.com,布布扣


    给Director指定Real Server192.168.1.2和192.168.1.3,-m代表使用nat模型

        bubuko.com,布布扣


    开启转发功能

        bubuko.com,布布扣


    检验

        bubuko.com,布布扣

        bubuko.com,布布扣

    这样就是实现了lvs-nat模型的集群功能

本文出自 “鱼儿” 博客,请务必保留此出处http://kyfish.blog.51cto.com/1570421/1562378

LVS

标签:服务器   linux   server   客户端   lvs   集群   

原文地址:http://kyfish.blog.51cto.com/1570421/1562378

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!