LVS负载均衡
1.lvs 原理
LVS通过工作于内核的ipvs模块来实现功能,其主要工作于netfilter 的INPUT链上。
而用户需要对ipvs进行操作配置则需要使用ipvsadm这个工具。
ipvsadm主要用于设置lvs模型、调度方式以及指定后端主机。
2.lvs 有哪几种模式,工作过程原理是什么?
DR模式(直接路由模式)
DR模式是通过改写请求报文的目标MAC地址,并将请求发给真实服务器,而真实服务器响应后的处理结果直接返回给客户端用户。
但是要求调度器Lb与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。
简述:lb收到用户请求数据包后,将请求包中目标mac地址转换后端某个rc服务器的mac地址后,将数据包转发出去,rs收到请求包后,直接将响应的内容传给用户。此时要求LB和所有的rs都必须在一个物理段内,且lb与rs群共享一个虚拟ip。
NAT模式
客户端访问调度器时,调度器通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器,真实服务器的响应报文通过调度器时,报文的原地址被重写,再返回给用户,完成整个负载调度过程
简述:lb收到用户请求包后,lb将请求包中虚拟服务器的ip地址转换为某个选定rs的地址,然后转发给rs。rs将应答包发给lb,lb将应答包中rs的ip转换为虚拟服务器的ip地址。返回给用户。
TUN隧道模式
采用net模式时,由于请求和响应的报文必须通过调度器地址重写,当客户请求越来越多时,调度器处理能力将成为瓶颈,为了解决这个问题,调度器把请求的报文通过ip隧道转发到真实的服务器,真实的服务器将响应处理后的数据直接返回给客户端,这样调度器就只处理请求入站的报文,由于一般网络服务应答数据比 请求报文大很多,采用vs/TUN模式后,集群系统的最大吞吐量可以提高10倍。
FULL NAT模式
3.最常用的模式是什么,有什么特点?
DR
①通过调度器上修改数据包的目的MAC地址实现转发,注意,源IP地址仍然是CIP,
目的IP地址仍然是VIP
②请求的报文经过调度器,而RS相应处理处理后报文无需经过调度器LB,因此,并发访问量大时使用效率很高
③DR模式是通过MAC地址的改写机制实现转发,因此所有的RS节点和调度器LB只能在一个局域网中
④需要注意RS界面的VIP的绑定(lo:VIp/32 lol:VIP/32)和ARP的一致问题
⑤抑制ARP是不让RS(real server)相应CS(client server)的ARP请求
⑥RS节点默认网关不需要调度器的LB的DIP,而是直接IDC机房分配的上级路由器的IP(这是RS带有外网的
的Ip地址的情况),理论上讲,只要RS出网即可,不是必须配置外网的IP
工作中RS要配置外网的IP
⑦由于DR模式角度器仅仅进行了MAC地址的改写,因此调度器LB无法改变请求的报文的目的端口
⑧LB几乎支持所有的UNIX,linux系统,但是目前不支持winows系统,真实的节点可以是windows系统。
⑨总的来说DR模式效率很高,但是配置也比较麻烦,因此访问量不是很大的可以用haproxy/nginx取代,
日PV 1000-2000W或者并发请求1W以下都是可以考虑haproxy/nginx
10.直接对外访问的业务,例如:web服务做RS节点,RS最好用公网的IP地址,如果不直接对外的业务,
例如:mysql,存储系统的RS节点,最好只用内部的Ip地址。
lvs和nginx的区别?
lvs的优点:
1.抗负载能力强,工作在第四层仅做分发之用,没有流量的产生,这个特点也决定了他在负责均衡软件里的性能最强,无流量,同时保证了均衡器IO的性能不会受到大流量的影响。
2.工作稳定,自身有完整的双机热备方案,如lvs+keepalived
3.应用范围比较广,可以对所有应用做负载均衡。
4.配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多的接触,大大减少人为出错的几率。
lvs的缺点:
1.软件本身不支持正则处理,不能做动静分离。
2.如果网站应用比较庞大,lvs/DR+keepalived就比较复杂了,特别是后面有windows server应用的机器,实施及配置还有维护过程就比较麻烦,相对而言,nginx+keepalived就简单一点。
nginx的优点:
跨平台:可以linux系统运行,而且windows的移植版本。
配置简单:非常的简单,容易上手。
非阻塞并发连接;数据复制时,磁盘io的第一阶段是非阻塞,官方测试能支持5万并发连接,实际生产中能跑2-3万并发连接数。发送报文是,nginx一边介绍web服务器的返回数据,一边把数据发送给客户端浏览器。
自带简单检查:当有服务器宕机后,新的请求就不会发送到这台机器上了,而是发送到其他节点。
节省带宽:支持gzip压缩,开启浏览器缓存。
网络依赖性低,理论上能ping通就可以实现负载均衡,而且可以有效区分内网,外网流量。
内存消耗小,稳定性高:开启10个nginx消耗内存125m,可以很好的处理静态资源,内存消耗少,宕机率很低。
网友评论