由于多个服务器的负载容量不同,这可能反映在硬件配置,网络带宽差异或服我们所谓的“均衡”意味着所有服务器都不会过载,并且可以在程序上最常用。
首先要了解所谓的“均衡”
由于多个服务器的负载容量不同,这可能反映在硬件配置,网络带宽差异或服我们所谓的“均衡”意味着所有服务器都不会过载,并且可以在程序上最常用。
首先,http重定向
当http代理(例如浏览器)从Web服务器请求URL时,Web服务器可以通过http响应头中的Location标签返回新URL。这意味着HTTP代理需要继续请求此新URL以完成自动跳转。
性能缺陷:
1,吞吐率限制
主站点服务器的吞吐量均匀分布到正在传输的服务器。假设采用RR(循环)调度策略。子服务器的最大吞吐量为1000 reqs/s,因此主服务器的吞吐量必须达到3000 reqs/s才能充分发挥三个子服务器的作用。如果有100个子服务器,则可以想象主服务器的吞吐量很大。相反,如果主服务的最大吞吐量是6000reqs/s,则子服务器的平均吞吐量是2000reqs/s,当前子服务器的最大吞吐量是1000reqs/s,所以你必须增加子服务器的数量,增加到6满足。
2,重定向访问深度不同
有些重定向静态页面,有些重定向比动态页面更复杂,因此实际的服务器负载差异是不可预测的,而主服务器是无知的。因此,整站使用重定向方法做负载均衡不是很好。
我们需要权衡传输请求的开销和处理实际请求的开销。前者相对于后者越小,重定向的含义越大,例如下载。你可以去很多图片下载网站试试,你会发现使用Location重定向基本下载。
二,DNS负载均衡
DNS负责提供域名解析服务。访问某个站点时,站点域名的DNS服务器必须首先获取域名指向的IP地址。在此过程中,DNS服务器完成域名到IP地址的映射。同样,这种映射可以是一对多。此时,DNS服务器充当负载平衡调度程序。它将用户的请求分散到多个服务器上,就像http重定向的转换策略一样,但是它的实现。机制完全不同。使用dig命令查看“baidu”的DNS设置
十分钟了解负载均衡
可以看出,百度有三条A记录。
与http重定向相比,基于DNS的负载平衡完全保存了所谓的主站点,或者DNS服务器已经充当主站点。但不同的是,作为调度程序,DNS服务器本身的性能几乎不用担心。由于DNS记录可以由用户的浏览器或所有级别的Internet访问服务提供商的DNS服务器缓存,因此只有在缓存过期后,才会请求域名的DNS服务器再次解析。还有人说DNS没有http的吞吐量限制。理论上,实际服务器的数量可以无限增加。
功能:
1.可以基于用户IP执行智能分析。 DNS服务器可以在所有可用A记录中查找最接近使用记录的服务器。
2.动态DNS:每个IP地址更改时及时更新DNS服务器。当然,由于缓存,某些延迟是不可避免的。
不足:
1.没有用户可以直接查看DNS解析到的实际服务器,并且服务器操作和维护人员的调试带来不便。
2.战略的局限性。例如,您无法将HTTP请求的上下文引入调度策略。在前面描述的基于HTTP重定向的负载平衡系统中,调度程序在HTTP级别工作。它可以根据站点的应用逻辑完全理解HTTP请求和设计。调度策略,例如根据请求的不同URL进行合理的过滤和传输。
3.如果要根据实际服务器的实时负载差异调整调度策略,则需要DNS服务器在每次解析操作期间分析每个服务器的健康状态。对于DNS服务器,此自定义开发具有较高的阈值。更重要的是,大多数网站只使用第三方DNS服务。
4,DNS记录缓存,每个级别节点的DNS服务器的不同程序的缓存会让你头晕目眩。
5,基于以上几点,DNS服务器没有做好平衡工作量,最后,是否选择基于DNS的负载均衡方法完全取决于您的需求。
三,反向代理负载均衡
这绝对是每个人的联系,因为几乎所有主流Web服务器都热衷于支持基于反向代理的负载平衡。其核心工作是转发HTTP请求。
与之前的HTTP重定向和DNS解析相比,反向代理调度程序扮演用户和实际服务器中介的角色:
1.对实际服务器的任何HTTP请求都必须通过调度程序。
2.调度程序必须等待实际服务器的HTTP响应并将其反馈给用户(前两种方法不需要调度和反馈,实际服务器直接将其发送给用户)特性:
1.调度策略很丰富。例如,可以为不同的实际服务器设置不同的权重,以实现能够做更多事情的效果。
2.反向代理服务器的并发处理能力很高,因为它在HTTP级别工作。
3,反向代理服务器转发操作本身需要一定的开销,如创建线程,与后端服务器建立TCP连接,接收后端服务器返回的处理结果,分析HTTP头信息,用户空间和内核空间频繁切换等,虽然这部分时间不长,但是当后端服务器处理请求的时间很短时,转发的开销尤为突出。例如,请求静态文件更适合使用前面描述的基于DNS的负载平衡方法。
4.反向代理服务器可以监控后端服务器,如系统负载,响应时间,可用性,TCP连接,流量等,以根据数据调整负载均衡策略。
如图5所示,反射代理服务器允许用户始终将会话周期中的所有请求转发到特定的后端服务器(粘性会话),使得第一个是维持对会话的本地访问,第二个是防止后端服务器浪费了动态内存缓存的内存。
四,IP负载均衡(LVS-NAT)
由于反向代理服务器在HTTP层工作,因此其开销严重限制了可扩展性,从而限制了其性能限制。它能在HTTP级别以下实现负载均衡吗?
NAT服务器:它适用于传输层。它可以修改发送的IP数据包,并将数据包的目标地址更改为实际的服务器地址。
从Linux 2.4内核开始,其内置的Neftilter模块在内核中维护了许多包过滤表,其中包含用于控制包过滤的规则。幸运的是,Linux提供了iptables来插入,修改和删除过滤器表。更令人兴奋的是,IPVS模块内置于Linux 2.6.x内核中。它适用于Netfilter模块,但它更侧重于IP负载平衡。
想知道您的服务器内核是否安装了IPVS模块,您可以
十分钟了解负载均衡
输出意味着已经安装了IPVS。 IPVS管理工具是ipvsadm,它提供基于命令行的配置接口,支持快速负载平衡系统。这是着名的LVS(Linux虚拟服务器,Linux虚拟服务器)。
1,打开调度程序包转发选项
回声1>
的/proc/SYS /网/的IPv4/IP_FORWARD2.检查实际服务器是否已将NAT服务器用作其默认网关。如果没有,请添加它。
路线添加默认gw xx.xx.xx.xx
3,使用ipvsadm配置
Ipvsadm -A -t 111.11.11.11: 80 -s rr
添加虚拟服务器,然后是服务器的外部网络ip和端口,-s rr引用简单轮询的RR调度策略(这是一个静态调度策略。此外,LVS还提供一系列动态。最小连接(LC),加权最小连接(WLC),最小预期时间延迟(SED)等策略。
Ipvsadm -a -t 111.11.11.11: 80 -r 10.10.120.210: 8000 -mipvsadm -a -t 111.11.11.11: 80 -r 10.10.120.211: 8000 -m
添加两个实际服务器(不需要外部网络ip),-r后跟内部服务器ip和实际服务器端口,-m表示使用NAT转发数据包。
运行ipvsadm -L -n以查看实际服务器的状态。这个完成了。
实验表明使用基于NAT的负载平衡系统。作为调度程序的NAT服务器可以将吞吐量提高到新的水平,几乎是反向代理服务器的两倍,这主要是由于内核中请求转发的开销较低。但是,一旦请求的内容过大,无论是基于反向代理还是NAT,负载均衡的总体吞吐量都没有太大差别。这意味着对于大量开销,使用简单的反向代理来构建负载平衡。该系统是值得考虑的。
这样一个功能强大的系统仍然存在瓶颈,即NAT服务器的网络带宽,包括内部网络和外部网络。当然,如果你还不错,你可以花钱购买千兆交换机或10千兆交换机,甚至是负载均衡硬件设备,但如果你不愿意,那又怎样?
一种简单有效的方法是将基于NAT的群集与先前的DNS混合,例如五个100Mbps出口宽带群集,然后使用DNS来平衡用户对这些群集的请求。同时,您还可以使用DNS智能分辨率。该地区就在附近。这样的配置对于大多数服务来说已经足够了,但对于提供下载或视频等服务的大型站点来说,NAT服务器还不够好。
五,直接路由(LVS-DR)
NAT在网络分层模型(第4层)的传输层中工作,而直接路由在数据链路层(第二层)工作,这看起来更尴尬。它通过修改数据包的目标MAC地址(不修改目标IP)将数据包修改为实际服务器。区别在于实际服务器的响应数据包直接发送到客户端carbonyl而不通过调度程序。1,网络设置
这里假设一个负载均衡调度器,两个实际服务器,购买三个外部网络ip,一个机器一个,三台机器的默认网关需要相同,最后设置相同的ip别名,这里假设别名是10.10.120.193 。这样,将通过IP别名10.10.120.193访问调度程序。您可以将站点的域名指向此IP别名。
2.将ip别名添加到loopback接口lo
这是为了让实际服务器不查找具有此IP别名的其他服务器并在实际服务器上运行它:
十分钟了解负载均衡
还要阻止实际服务器响应来自网络的ARP广播以获取IP别名。