设为首页 收藏本站
查看: 1110|回复: 0

[经验分享] 负载均衡之LVS详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-13 10:40:30 | 显示全部楼层 |阅读模式
负载均衡-四层负载均衡:LVS
之前也写过相关的文章,但是写的太烂了。。。自己都不也敢直视。。。
现在有空决定重新全面学习了下LVS.总结出本博客。好了,其他的不多说了,我们开始吧。

一、负载均衡
  负载均衡包括如下:
    1、硬件负载均衡:
    F5,BIG IP
    Citrix,Netscaler
    A10
   2、软件负载均衡:
四层:
  LVS
七层:反向代理
          Nginx
            代理的协议有:http smtp pop3 imap
          HAProxy
代理的协议有:http,tcp(mysql,smtp)

二、LVS的介绍
1、简介:
  LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。
                                -----------百度百科。

  LVS是一个四层的负载均衡软件,工作在内核空间。性能非常强大,而所支持的特性很少。工作在INPUT链上,所以lvs与iptables在INPUT链不能同时使用。
2、组成:
  有两部分:
    ipvsadm lvs规则管理
    ipvs 是内核程序
  ipvs在linux 2.6内核所有版本中已存在。只需要安装ipvsadm就可以了。
  安装命令:yum -y install ipvsadm

三、LVS的三种模型
  NAT:地址转换
  DR:直接路由
  TUN:隧道

  三种模型的特性:

  1、NAT
    后端的集群节点也就是real server 必须与LVS所在的服务器在同一个IP网络中;
    后端的real server所使用的ip通常是私有地址,仅用于各集群节点间的通信;
    LVS服务器位于client和real server之间,并负责处理进出的所有通信;
    real server必须将网关指向DIP;
    支持端口映射;
    real server可以使用任意OS;
    较大规模应该场景中,director易成为系统瓶颈;
  2、DR
    集群节点real server 跟LVS必须在同一个物理网络中;
    real server 可以使用公网地址,实现便捷的远程管理和监控;
    LVS仅负责处理入站请求,响应报文则由real server直接发往客户端;
    real server不能将网关指向DIP;
    不支持端口映射;
    在这个模型下vip和real server所对应的端口要一样才行。
  3、TUN
    集群节点可以跨越Internet;
    real server必须是公网地址;
    LVS仅负责处理入站请求,响应报文则由real server直接发往客户端;
    real server网关不能指向LVS;
    只有支持隧道功能的OS才能用于real server;
    不支持端口映射;
  LVS默认使用的模型为DR模型


四、LVS的调度算法
  1、静态调度算法
    rr: 轮叫,轮询
    wrr: 加权轮叫
    sh: sourch hash,源地址hash session 绑定到同一主机上
    dh: destination hash 目的地址hash session 通过目的地址来绑定到同一主机上。
  2、动态调度算法
    lc: least-connect 最少连接 active * 256 + inactive 谁的小,挑谁
    wlc: 加权最少连接,( active * 256 + inactive ) / weight
    sed: 最少期望延迟 (active + 1 ) * 256 / weight
    nq: never queue 永不排队,改进的sed
    LBLC: 基于本地的最少连接
    LBLCR: 基于本地的带复制功能的最少连接
  LVS默认的调度算法是wlc


五、LVS的ipvadm命令的使用
  安装:
    在redhat/centos 6系统中:yum install ipvsadm -y
  ipvsadm命令的使用:
    1、管理集群服务
      添加或修改:
            ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask]
        -A: 添加
        -E:修改
        -t: tcp
        -u: udp
        -f: FirewallMark FWM 防火墙标记。service-address: Mark Number
        service-address:VIP:PORT 使用VIP和端口号
        -s: 调度算法
        -p: 后跟超时时间,在支持链接时使用,默认300s 单位是:秒
        -M: 指定子网掩码,默认是255.255.255.255
      删除:
        ipvsadm -D -t|u|f service-address
        -D:删除
        -t: tcp
        -u: udp
        -f: FirewallMark FWM 防火墙标记。service-address: Mark Number
        service-address:VIP:PORT 使用VIP和端口号
      保存规则:
        ipvsadm -S > /path/to/somefile
      重载规则:
        ipvadm -R < /path/to/somefile
      清除规则:
        ipvsadm -C

      示例如下:
        ipvadm -A -t 192.168.1.10:80 -s rr
        #添加一个规则,指定的-t tcp协议,使用192.168.1.10 为VIP 端口为80 -s指定为rr 也就是轮询。

    2、管理集群服务中后端的real server
      添加或修改:
        ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
        -a: 添加
        -e: 修改
        -t: tcp
        -u: udp
        -f: FirewallMark FWM 防火墙标记。service-address: Mark Number
        service-address: 此前添加的的service-address: VIP:PORT
        -r: 指定后端real server
        server-address: RIP:PORT
        -g: DR模型
        -i: TUN模型
        -m: NAT模型
        -w: 指定权重
      删除:
        ipvsadm -d -t|u|f service-address -r server-address
        -d:删除
      示例如下:
        ipvsadm -a -t 192.168.1.10:80 -r 192.168.1.9:80 -g -w 3
        ipvsadm -a -t 192.168.1.10:80 -r 192.168.1.8:80 -g -w 5
        #定义了两个后端server 并指定为DR模型和各个服务器的权重
    3、查看规则
        ipvsadm -L -n
        ipvsadm -L -n -c 查看当前连接信息

六、LVS的持久连接
  无论使用什么算法,LVS持久都能实现在一定时间内,将来自同一个客户端请求派发至此前选定的后端服务器即RS。Real Server。
  LVS 持久连接模板(内存缓冲区):每一个客户端分配给它的RS的映射关系;
    ipvsadm -A|E ... -p timeout:
        timeout: 持久连接时长,默认300秒;单位是秒;
  应用场景如:在基于SSL,需要用到持久连接;后端服务器有session应用时,比较用户登录,这时多个后端服务器session共享问题无法解决时,需要持久连接到同一个后端服务器。
  三种持久连接:

    1、PPC:将来自于同一个客户端对同一个集群服务的请求,始终定向至此前选定的RS;     持久端口连接
      ipvsadm -A -t 192.168.1.10:23 -s rr -p 600
      ipvsadm -a -t 192.168.1.10:23 -r 192.168.1.9:23 -g -w 2
      ipvsadm -a -t 192.168.1.10:23 -r 192.168.1.8:23 -g -w 5
        #注:此时的权重没有作用了。
    2、PCC:将来自于同一个客户端对所有端口的请求,始终定向至此前选定的RS;           持久客户端连接
    把所有端口统统定义为集群服务,一律向RS转发;
      ipvsadm -C
      ipvsadm -A -t 192.168.1.10:0 -s rr -p 600
      ipvsadm -a -t 192.168.1.10:0 -r 192.168.1.9 -g -w 2
      ipvsadm -a -t 192.168.1.10:0 -r 192.168.1.8 -g -w 5
      此时后端服务器的所有端口都可以转发了,并绑定到同一个后端服务器上。


    3、PNMPP:持久防火墙标记连接
      把多个端口持久连接到后端同一台服务器上,此前两种方法都无法做到。
      防火墙标记,可以做到把多个端口定义为同一个标记数(1-99) 把标记号进行转发到后端即可。
      方法如下:
        如把80和23端口标记为8
        在PREROUTING链上标记:
        操作如下:
            iptables规则:
                iptables -t mangle -A PREROUTING -d 192.168.1.10 -i eth0 -p tcp --dport 80 -j MARK --set-mark 8
                iptables -t mangle -A PREROUTING -d 192.168.1.10 -i eth0 -p tcp --dport 23 -j MARK --set-mark 8
                #使用的-d 后面是VIP地址
            添加LVS规则:
                ipvsadm -A -f 8 -s rr -p 600
                ipvsadm -a -f 8 -r 192.168.1.9 -g -w 2
                 ipvsadm -a -f 8 -r 192.168.1.8 -g -w 5
         此时应当实现了之前的把多个端口定位到此前所选定的后端同一台服务器上。


以上就是LVS的基于概念和ipvsadm命令基本使用详情。如有批漏请各位指出,多谢关注。
下一篇会有三个脚本来实现LVS在负载均衡端和Real Server的设置,其中有一个脚本来提供后端Real Server健康状态检测,并自动添加恢复后的Real Server服务器。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-98356-1-1.html 上篇帖子: 负载均衡之LVS--Shell脚本配置LVS 下篇帖子: 搭建LVS+keepalived高可用负载均衡集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表