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

对负载均衡来讲,最关键的就是调度器了
网络传输层数:下四层由内核来管理及实现,被称为通信子网,最上面三层,叫应用层,在用户空间实现,叫做资源子网
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,离开本机

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

时间: 2024-08-30 14:25:34

3-2-基于LVS实现4层负载均衡原理讲解的相关文章

LVS详解及基于LVS实现web服务器负载均衡

前言 LVS(Linux Virtual Server)Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.通过LVS提供的负载均衡技术和Linux操作系统可实现一个高性能.高可用的服务器群集,从而以低成本实现最优的服务性能. 集群基础 集群简介 集群(Cluster)是一组相互独立的.通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理.一个客户与集群相互作用时,集群像是一个独立的服务器.集群配置是用

3-3-基于LVS实现4层负载均衡模式和场景应用

回顾:linux的集群形式:LB负载均衡,HA高并发,HP高性能分布式系统:存储.计算(超算集群)lb cluster实现方式:软件四层:lvs.nginx(stream).haproxy(mode tcp)七层:http:nginx(http)/httpd/haproxy(mode http)/ats/perlbal/poundmysql:ProxySQL...硬件lvs:linux virtual servervs/rs,cip/vip/dip/riplvs type:nat/dr/tun/

3-5-基于LVS实现4层负载均衡配置和DR模型实战

DR类型directer只响应请求报文,然后调度某一个RS,而响应报文由RS直接返回给请求者RS和directer都需要配置VIP,(在同一网络中有可能冲突)本地局域网通告(通告自己的IP),ARP广播通告,ARP广播请求的响应RS配置VIP仅用于构建响应报文的源地址,不是用来真正通信的为了实现请求报文直接发送给director,而不是RS,有三种方式1.在路由器出口处做静态绑定,最不靠谱(因为director要做冗余的,需要重新绑定,二是不能阻断RS的ARP响应)2.在RS上安装arptabl

3-4-基于LVS实现4层负载均衡配置和nat模型实战

centos内核支持ipvs,只需在用户空间安装ipvsadm即可,首先应该准备好拓扑环境,了解编写规则的工具用法 yum install -y ipvsadmrpm -ql ipvsadm---可以看到用到了unit file,也就是脚本(开机启动不启动),ipvsadm不是一项服务,规则会保存到内存中不会永久有效,为什么会用到unitfile呢?因为需要在开机时使用restone重新载入规则 注意:对于集群类服务来说,不建议开机自动启动,需要手动开启,防止及其挂了.我们会有高可用集群服务器,

基于keepalived+nginx部署强健的高可用7层负载均衡方案20151214

高可用是个老生常谈的问题了,开源的高可用软件已经做的相当成熟了,之前也在debian下做过lvs+heartbeat的4层LB,一直很稳定(可惜流量不大啊),现在由于业务的需要,做一个基于keepalived+nginx的高可用7层负载均衡. 拓扑结构也比较简单,就不画拓扑图了:2个节点上分别安装配置keepalived和nginx,配置nginx反向代理后端的real server 比较关键的几个点: 1.为避免同一个局域网中有多个keepalived组中的多播相互响应,采用单播通信 2.状态

四层和七层负载均衡的特点及常用负载均衡Nginx、Haproxy、LVS对比

一.四层与七层负载均衡在原理上的区别 图示: 四层负载均衡与七层负载均衡在工作原理上的简单区别如下图: 概述: 1.四层负载均衡工作在OSI模型中的四层,即传输层.四层负载均衡只能根据报文中目标地址和源地址对请求进行转发,而无法修改或判断所请求资源的具体类型,然后经过负载均衡内部的调度算法转发至要处理请求的服务器.四层负载均衡单纯的提供了终端到终端的可靠连接,并将请求转发至后端,连接至始至终都是同一个.LVS就是很典型的四层负载均衡. 2.七层负载均衡工作在OSI模型的第七层应用层,所以七层负载

[转] 四层和七层负载均衡的特点及常用负载均衡Nginx、Haproxy、LVS对比

一.四层与七层负载均衡在原理上的区别 1.图示 2.概述 四层负载均衡工作在 OSI 模型中的四层,即传输层.四层负载均衡只能根据报文中目标地址和源地址对请求进行转发,而无法修改或判断所请求资源的具体类型,然后经过负载均衡内部的调度算法转发至要处理请求的服务器.四层负载均衡单纯的提供了终端到终端的可靠连接,并将请求转发至后端,连接至始至终都是同一个.LVS 就是很典型的四层负载均衡. 七层负载均衡工作在 OSI 模型的第七层,即应用层,所以七层负载均衡可以基于请求的应用层信息进行负载均衡,例如根

使用LVS实现负载均衡原理及安装配置详解

转:http://www.cnblogs.com/liwei0526vip/p/6370103.html 使用LVS实现负载均衡原理及安装配置详解 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F5.Netscale.这里主要是学习 LVS 并对其进行了详细的总结记录. 一.负载均衡LVS基本介绍 LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director

四层、七层负载均衡的区别

一.简介 所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. 换句换说,二层负载均衡会通过一个虚拟MAC地址接收请求,然后再分配到真实的MAC地址:三层负载均衡会通过一个虚拟IP地址接收请求,然后再分配到真实的IP地址:四层通过虚拟IP+端口接收请求,然后再分配到真实的服务器:七层通过虚拟的URL或主机名接收请求,然后再分配到真实的服务器. 所谓的四到七层负载均衡,就是在对后台的服务器进行负载均衡时