负载均衡
1.概念
1)负载均衡LB(Load Balance)是一种服务器或网络设备的集群技术,负载均衡将特定的业务(网络服务、网络流量等)分担给多个服务器或网络设备,从而提高了业务处理能力,保证了业务的高可用性
2)负载均衡的常用应用场景主要是服务器负载均衡,链路负载均衡
2.负载均衡算法
1)随机算法和加权随机算法:随机分配到某个服务器或某条链路上,具体操作:当某个业务到来时,取一个随机数,再用这个随机数对服务器的总数量取模,然后选择相应的服务器;由概率的知识可知,使用的次数越多,实际效果越来越接近于平均分配
2)轮询算法和加权轮询算法:轮询,就是每个服务器轮着来处理业务,优点是实现简单,适用于各服务器的处理能力相当且每笔业务处理量差异不大时
3)源地址哈希法:源地址哈希的思想是根据获取客户端的IP地址,通过哈希函数计算得到的一个数值,用该数值对服务器列表的总数量进行取模运算,得到的结果便是客服端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问
4)最小连接数算法和加权最小连接数算法:根据服务器当前的连接情况,动态地选取其中当前连接数最少的一台服务器来处理当前的请求;最小连接数算法比较灵活和智能,即使在每台服务器处理能力各不相同,每笔业务处理量也不相同的情况下,也能够在一定程度上合理分配服务器的负载,缺点就是实现比较复杂
3.服务器负载均衡手段
3.1DNS域名解析负载均衡

1)利用DNS处理域名解析请求的同时进行负载均衡是另一种常用的方案。在DNS服务器中配置多个A记录,如:www.mysite.com IN A 114.100.80.1、www.mysite.com IN A 114.100.80.2、www.mysite.com IN A 114.100.80.3.
2)每次域名解析请求都会根据负载均衡算法计算一个不同的IP地址返回,这样A记录中配置的多个服务器就构成一个集群,并可以实现负载均衡
3)优点:将负载均衡工作交给DNS,省略掉了网络管理的麻烦,缺点就是DNS可能缓存A记录,不受网站控制
4)事实上,大型网站总是部分使用DNS域名解析,作为第一级负载均衡手段,然后再在内部做第二级负载均衡
3.2数据链路层负载均衡

1)数据链路层负载均衡是指在通信协议的数据链路层修改mac地址进行负载均衡
2)这种数据传输方式又称作三角传输模式:负载均衡数据分发过程中不修改IP地址,只修改目的mac地址,负载均衡服务器IP地址集群所有机器虚拟IP一样,用户请求到达负载均衡服务器后,负载均衡服务器将请求数据的目的mac地址修改为真实WEB服务器的mac地址,从而达到负载均衡,该服务器在处理完数据后可以不经过负载均衡服务器直接到达用户,形成三角
3)优缺点:回来的数据包不经过负载均衡服务器,减少了负载均衡服务器的负担
3.3IP负载均衡

1)IP负载均衡:即在网络层通过修改请求目标地址进行负载均衡
2)用户请求数据包到达负载均衡服务器后,负载均衡服务器在操作系统内核进行获取网络数据包,根据负载均衡算法计算得到一台真实的WEB服务器地址,然后将数据包的IP地址修改为真实的WEB服务器地址,不需要通过用户进程处理。真实的WEB服务器处理完毕后,相应数据包回到负载均衡服务器,负载均衡服务器再将数据包源地址修改为自身的IP地址发送给用户浏览器。
3)这里的关键在于真实WEB服务器相应数据包如何返回给负载均衡服务器:一种模式是SNAT模式,即源地址转换,是负载均衡服务器在修改目的IP地址的同时修改源地址,将数据包源地址改为自身的IP;另一种模式是直接路由模式,调度器与后端服务器必须在同一个局域网内,
4)优缺点:IP负载均衡在内核进程完成数据分发,较反向代理均衡有更好的处理性能;但由于所有数据包都需要经过负载均衡服务器,因此负载均衡服务器的网卡带宽成为系统的瓶颈
3.4HTTP重定向负载均衡

1)HTTP重定向服务器是一台普通的应用服务器,其唯一的功能就是根据用户的HTTP请求计算一台真实的服务器地址,并将真实的服务器地址写入HTTP重定向响应中(响应状态码302)返回给浏览器,然后浏览器再自动请求真实的服务器。
2)这种负载均衡方案的优点是比较简单,缺点是浏览器需要每次请求两次服务器才能拿完成一次访问,性能较差;使用HTTP302响应码重定向,可能是搜索引擎判断为SEO作弊,降低搜索排名。重定向服务器自身的处理能力有可能成为瓶颈。因此这种方案在实际使用中并不见多
3.5反向代理负载均衡(nginx)
1)通常所说的代理服务器是正向代理服务器,正向代理服务器是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向正向代理服务器发送一个请求并指定目标(原始服务器),然后正向代理服务器向原始服务器请求并将获得的内容返回给客户端。它有如下优点:
- 有时用户访问不了某些网站,但是可以通过正向代理服务器来访问,如google
- 可以做缓存,加速访问资源
- 只用代理服务器才知道用户的访问记录(上网行为管理),对外界隐藏用户信息,保护用户
2)而反向代理服务器却是反过来的,它是针对服务器的一种代理技术。反向代理服务器可以接受客户端的请求,然后将它分发到被代理的服务器上,待这些服务器处理完请求后,再将结果转发给客户端,它是将服务器隐藏在自己的身后。从客户端看来,它面对的只有一台服务器,但是背后可能有1000台服务器在提供服务。它有如下优点:
- 负载均衡:比如,对于同一个web服务,有10台服务器可以提供相同的服务,客户将请求发送到反向代理服务器,它知道它身后每台服务器的负载,于是它会把将请求转发到相对空闲的服务器上
- 做缓存:反向代理服务器可以将很多静态资源或者最近的一些HTTP请求报文和响应报文直接放在自己身上,当新用户请求到达时,代理服务器发现这个请求和磁盘上缓存的相同,就返回缓存的响应报文,就不需要去服务器上获取这个资源
- 提升后台服务器的安全性:反向代理服务器还可以为后端服务器阻挡网络攻击
3)Nginx就是一款可以通过反向代理实现负载均衡的软件
参考资料:
posted on 2019-03-14 11:36 JoeChenzzz 阅读(371) 评论(0) 收藏 举报
浙公网安备 33010602011771号