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

3-2-基于LVS实现4层负载均衡原理讲解

时间:2019-03-16 23:32:34      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:限制   filter   过滤   目标地址转换   lvs-nat   client   网络传输   静态绑定   eal   

对负载均衡来讲,最关键的就是调度器了
网络传输层数:下四层由内核来管理及实现,被称为通信子网,最上面三层,叫应用层,在用户空间实现,叫做资源子网
lvs是四层的负载均衡器,而且是真正附着在netfilter(内核通信过滤或操作框架)不需要向内核监听注册某一端口,不再受套接字文件数量的限制,直接修改报文扔给后端,不需要自己扮演任何角色
tcp协议栈有65536个端口,主机只要向外发请求,就会用ip打开一个端口,像nginx这种运行在用户空间的进程,就需要通过自己的套接字(打开端口)向后端服务器的套接字传送信息,而端口数量是固定的,如果调度器工作在用户空间,受限于工作模型,不能提高并发请求的性能
而lvs不用端口,源端口源IP不用改变,提高并发能力,有人做过测试,lvs可以在内核级实现400万并发

lvs大杀器,以后基本不会接触到,因为不能做超出内核的(例如:cookie绑定,url过滤),有可能需要对内核进行二次开发才好用
可以做两级调度,第一级lvs,后边是nginx
lvs可以叫做调度器或director(导演)或分发器,后边的server叫rs(real server)

pv:page view页面浏览量pv一般大于uv一般大于IP
uv:unit view唯一的访问者,两个浏览器浏览同一个站点,也是两个用户

很多站点都是由不同的小集群(一个门户网站的各个频道)来承载,
构建架构,按照最大并发80%来算,最高不能超过95%

lvs:Linux Virtual Server
    VS:Virtual Server
    RS:Real Server

    l4:四层路由器,四层交换机---根据目标端口进行分发
        VS:根据请求报文的目标IP和目标协议及端口将其调度转发至某RealServer,根据调度算法来挑选RS;
    iptables/netfilter:
        iptables:用户空间的管理工具;
        netfilter:内核空间上的框架:
        流入:PREROUTING-->INPUT-->用户空间
        流出:用户空间-->OUTPUT-->POSTROUTING
        转发:PREROUTING-->FORWARD-->POSTROUTING

    DNAT:目标地址转换;PREROUTING;
    SNAT:源地址转换;POSTROUTING;
lvs工作在INPUT上★★★★★★
lvs:ipvsadm/ipvs---监听用户访问的端口是不是集群服务,以规则的方式来定义,如果是,强行扭转流量方向,直接扔给postrouting,注意会跟iptables规则有某些冲突,最好不要同时使用iptables
    ipvsadm:用户空间的命令行工具,规则管理器,用于管理集群服务及相关的RealServer
    ipvs:工作于内核空间的netfilter的INPUT钩子之上的框架;
lvs集群类型中的术语:
    vs:Virtual Server,Director,Dispatcher,Balancer
    rs:Real Server,upstream server(上游服务器),backend server(后端服务器)
    CIP:Client IP,VIP:Virtual server IP,RIP:Real server IP,DIP:Director IPVS应该有至少两个IP,一个面向客户端,一个面向后端服务器
    CIP<-->VIP==DIP<-->RIP
lvs集群的类型:
    lvs-nat:修改请求报文的目标IP;多目标IP的DNAT;
    lvs-dr:操纵封装新的MAC地址
    lvs-tun:在原请求IP报文之外新加一个IP首部;---隧道,tunnel
    lvs-fullnat:修改请求报文的源和目标IP和端口---非标准类型

    lvs-nat:---根据需要看是否做端口映射
        多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发;
        (1)RIP和DIP必须在同一个IP网络,且应该使用私网地址;RS的网关要指向DIP;
        (2)请求报文和响应报文都必须经由Director转发;Director易于成为系统瓶颈;
        (3)支持端口映射,可修改请求报文的目标PORT;
        (4)vs必须是linux系统,rs可以是任意系统;

    lvs-dr
        Direct Routing,直接路由;
        通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC;源IP/PORT以及目标IP/PORT均保持不变;
        Director和各RS都得配置使用VIP;
        (1)确保前端路由器将目标IP为VIP的请求报文发往Director;
            (a)在前端网关做静态绑定;---不适用,容易单点故障
            (b)在RS上使用arptables;内核3.0以后实现了iptables和arptables的统一,使用工具还是不方便,内核提供了修改一个参数就可以修改通告不通告
            (c)在RS上修改内核参数以限制arp通告及应答级别;
                arp_announce---限制通告级别
                arp_ignore---限制应答级别
        (2)RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director;
        (3)RS跟Directory要在同一个物理网络;
        (4)请求报文要经由Director,但响应不能经由Director,而是由RS直接发往Client;
        (5)不支持端口映射;

在路由器出口绑定director的mac地址,(目的是为了不让rs广播响应和广播通告),iptables不能做二层的控制,所以linux内核4.0之后整合了iptables和arptables,叫做nftables

lvs-DR中:RS中把VIP配置在lo接口的别名上(基于内核参数控制)

netfilter工作在内核空间当中,有5个钩子
1、刚刚入站时的prerouting(刚刚进入网卡)
根据报文的流向不同
2、到本机的Input,而后进入用户空间
3、如果是转发的,到达forward
4、forward之后是postrouting,然后离开本机
5、由本机内部的用户空间发出output,然后路由postrouting,离开本机

3-2-基于LVS实现4层负载均衡原理讲解

标签:限制   filter   过滤   目标地址转换   lvs-nat   client   网络传输   静态绑定   eal   

原文地址:https://blog.51cto.com/13852573/2364125

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