http://blog.chinaunix.net/uid-27022856-id-3236257.html
说明:以下内容参考了抚琴煮酒的《构建高可用Linux服务器》第六章内容.
搭建负载均衡高可用环境相对简单,主要是要理解其中原理。此文描述了三种负载均衡器的优缺点,以便在实际的生产应用中,按需求取舍。
目前,在线上环境中应用较多的负载均衡器硬件有F5 BIG-IP,软件有LVS,Nginx及HAProxy,高可用软件有Heartbeat、Keepalived,成熟的架构有LVS+Keepalived、Nginx+Keepalived、HAProxy+keepalived及DRBD+Heartbeat.
三种负载均衡器的优缺点说明如下:
LVS的优点:
1、抗负载能力强、工作在第4层仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的;无流量,同时保证了均衡器IO的性能不会受到大流量的影响;
2、工作稳定,自身有完整的双机热备方案,如LVS+Keepalived和LVS+Heartbeat;
3、应用范围比较广,可以对所有应用做负载均衡;
4、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率;
LVS的缺点:
1、软件本身不支持正则处理,不能做动静分离,这就凸显了Nginx/HAProxy+Keepalived的优势。
2、如果网站应用比较庞大,LVS/DR+Keepalived就比较复杂了,特别是后面有Windows Server应用的机器,实施及配置还有维护过程就比较麻烦,相对而言,Nginx/HAProxy+Keepalived就简单多了。
#############################################################
1. LVS/DR如何处理请求报文的,会修改IP包内容吗?
1.1 vs/dr本身不会关心IP层以上的信息,即使是端口号也是tcp/ip协议栈去判断是否正确,vs/dr本身主要做这么几个事:
1)接收client的请求,根据你设定的负载均衡算法选取一台realserver的ip;
2)以选取的这个ip对应的mac地址作为目标mac,然后重新将IP包封装成帧转发给这台RS;
3)在hash table中记录连接信息。
vs/dr做的事情很少,也很简单,所以它的效率很高,不比硬件负载均衡设备差多少。
数据包、数据帧的大致流向是这样的:client --> VS --> RS --> client
1.2 前面已作了回答,vs/dr不会修改IP包的内容.
2. RealServer为什么要在lo接口上配置VIP?在出口网卡上配置VIP可以吗?
2.1 既然要让RS能够处理目标地址为vip的IP包,首先必须要让RS能接收到这个包。
在lo上配置vip能够完成接收包并将结果返回client。
2.2 答案是不可以将VIP设置在出口网卡上,否则会响应客户端的arp request,造成client/gateway arp table紊乱,以至于整个load balance都不能正常工作。
3. RealServer为什么要抑制arp帧?
这个问题在上一问题中已经作了说明,这里结合实施命令进一步阐述。我们在具体实施部署的时候都会作如下调整:
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
我相信很多人都不会弄懂它们的作用是什么,只知道一定得有。我这里也不打算拿出来详细讨论,只是作几点说明,就当是补充吧。
3.1
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
这两条是可以不用的,因为arp对逻辑接口没有意义。
3.2 如果你的RS的外部网络接口是eth0,那么
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
其实真正要执行的是:
echo "1" >/proc/sys/net/ipv4/conf/eth0/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/eth0/arp_announce
所以我个人建议把上面两条也加到你的脚本里去,因为万一系统里上面两条默认的值不是0,那有可能是会出问题滴。
4. LVS/DR load balancer(director)与RS为什么要在同一网段中?
从第一个问题中大家应该明白vs/dr是如何将请求转发给RS的了吧?它是在数据链路层来实现的,所以director必须和RS在同一网段里面。
5. 为什么director上lo接口除了VIP另外还要在eth0配一个ip(即DIP)?
5.1 如果是用了keepalived等工具做HA或者Load Balance,则在健康检查时需要用到DIP。
5.2 没有健康检查机制的HA或者Load Balance则没有存在的实际意义。
6. LVS/DR ip_forward需要开启吗?
不需要。因为director跟realserver是同一个网段,无需开启转发。
7. director的vip的netmask一定要是255.255.255.255吗?
lvs/dr里,director的vip的netmask 没必要设置为255.255.255.255,也不需要再去
route add -host $VIP dev eth0:0
director的vip本来就是要像正常的ip地址一样对外通告的,不要搞得这么特殊.
8. LVS/DR如何进行tcp的三次握手?
#####################################################################
Nginx的优点:
1、工作在OSI第7层,可以针对http应用做一些分流的策略。比如针对域名、目录结构。它的正则比HAProxy更为强大和灵活;
2、Nginx对网络的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势所在;
3、Nginx安装和配置比较简单,测试起来比较方便;
4、可以承担高的负载压力且稳定,一般能支撑超过几万次的并发量;
5、Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点;
6、Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。LNMP现在也是非常流行的web环境,大有和LAMP环境分庭抗礼之势,Nginx在处理静态页面、特别是抗高并发方面相对apache有优势;
7、Nginx现在作为Web反向加速缓存越来越成熟了,速度比传统的Squid服务器更快,有需求的朋友可以考虑用其作为反向代理加速器;
Nginx的缺点:
1、Nginx不支持url来检测。
2、Nginx仅能支持http和Email,这个它的弱势。
3、Nginx的Session的保持,Cookie的引导能力相对欠缺。
HAProxy的优点:
1、HAProxy是支持虚拟主机的,可以工作在4、7层(支持多网段);
2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;
3、支持url检测后端的服务器;
4、它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;
5、HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS;
6、HAProxy的算法较多,达到8种;
相关推荐
### LVS、Nginx 和 HAProxy 三种负载均衡器优缺点分析 #### LVS 负载均衡器 **优点:** 1. **抗负载能力强:**LVS 工作在网络第四层,只负责分发请求而不产生额外流量,这使得它在负载均衡软件中的性能表现非常...
Nginx、LVS 及 HAProxy 是目前使用最广泛的三种负载均衡软件,每种软件都有其特点和优缺点。 Nginx 的优点: 1. 工作在网络的 7 层之上,可以针对 http 应用做一些分流的策略。 2. 对网络稳定性的依赖非常小,理论...
LVS+HAproxy+NGINX+mysql+nf综合实验过程,详细步骤,可以参考。
Nginx/LVS/HAProxy的基于Linux的开源免费的负载均衡软件。对于大型的,需要进行高并发的网站或者对网络不太严格的场景,可以使用Nginx;对于大型的Web服务器的时候可以使用Haproxy;对性能有严格要求的时候可以使用...
本篇文章将对比三种常用的Linux服务器负载均衡器:LVS、Nginx和HAProxy,探讨其各自的特点、适用场景和常用算法。 LVS(Linux Virtual Server)是基于IP层的负载均衡器,它具有以下显著特点: 1. 高抗负载能力:...
### Nginx与Haproxy在七层负载均衡中的应用 #### 一、七层负载均衡简介 负载均衡是现代互联网架构中不可或缺的一部分,旨在提高应用程序的可用性和响应速度。根据处理的数据包层面不同,负载均衡可以分为四层...
在本文中,我们将深入探讨几种常见的负载均衡器——Nginx、LVS(DR、NAT、FullNAT)以及Haproxy,并分析它们的优缺点。同时,我们还将详细讲解LVS的配置,包括Keepalived参数的解释。 **Nginx负载均衡** Nginx是一...
一、Haproxy概述; 二、Haproxy原理实现; 三、Nginx、LVS、Haproxy对比; 四、Haproxy配置文件讲解; 五、案例:Haproxy+Nginx+Tomcat搭建高可用集群;
负载均衡则可以分摊数据库服务器的压力,例如使用haproxy或者nginx。haproxy是一款高效的负载均衡器,它可以基于策略将请求分发到不同的MySQL服务器,提高并发处理能力。通过配置haproxy,可以根据服务器负载情况...
本资源包含本人用SaltStack之Pillar和Jinja实现一健部署LVS+Keepalived+Haproxy的源码(srv.tar.gz),本人测试通过,有需要的可以下载下来学习。具体可参考本人博客:http://t.cn/ROB68fc 资源内容: ├── pillar...
三、Haproxy与Nginx、LVS对比 Nginx同样作为七层代理,其优势在于配置简单、非阻塞的高并发处理、低内存消耗,以及内置的健康检查。与LVS(四层代理)相比,Nginx更适合处理静态内容和反向代理,而LVS则在大型企业...
本文将围绕“Nginx + keepalived + MongoDB + haproxy + Sphinx”这一技术栈,详细介绍如何实现一个稳定的分布式集群部署方案。 #### 二、关键技术解析 ##### 1. Nginx **定义**:Nginx是一款高性能的HTTP和反向...
2、能够补充Nginx的一些缺点比如Session的保持,cookie的引导等工作; 3、支持url检测后端的服务器出问题的检测会有很好的帮助; 4、它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲...
本资源提供了41个Linux面试题及答案,涵盖了运维、系统管理、 RAID、LVS、Nginx、HAproxy、Squid、Varinsh 等多个方面的知识点。 一、运维 * 运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线...
本文将深入探讨Keepalived的核心功能、工作原理以及如何与其他服务如Nginx、Haproxy、MySQL等结合,构建高效、可靠的分布式系统。 首先,Keepalived的核心功能包括健康检查、故障转移和负载均衡。它通过监控服务...
### NGINX的功能介绍及其与同类产品的比较 #### 一、NGINX概述 NGINX是一款基于异步事件...通过对NGINX与同类产品的对比分析可以看出,尽管每种产品都有各自的优缺点,但在很多场景下,NGINX都是一个非常优秀的选择。
2. 负载均衡器:如LVS、HAProxy配合Nginx,提高整体系统的可用性和负载能力。 十、Nginx与微服务架构 1. 在微服务场景中的应用:作为API Gateway,对微服务进行路由、鉴权、限流等操作。 通过这份万达IT内部培训...