目录
负载均衡定义
可以将高并发的用户请求分发到多台应用服务器组成的一个服务器集群上,利用更多的服务器资源处理高并发下的计算压力。
负载均衡的几种方式和优缺点对比
负载均衡方法 | 说明 | 图示 | 优点 | 缺点 |
---|---|---|---|---|
HTTP 重定向 | HTTP 请求到达负载均衡服务器以后,负载均衡服务器根据负载均衡算法计算得到一个应用服务器的地址,通过 HTTP 状态码 302 重定向响应,将新的 IP 地址发送给用户浏览器,用户浏览器收到重定向响应以后,重新发送请求到真正的应用服务器。 | ![]() | 实现简单,HTTP方法里几行代码即可实现 | 1、性能:用户每次访问需要请求两次; 2、安全:暴露真实服务器地址; |
DNS | 在 DNS 域名解析的时候,不同的用户,返回不同的 IP 地址;常用于首次负载均衡; | ![]() | 实现简单,域名服务商后台配置一下即可 | 1、DNS域名解析缓存,避免一定的性能问题; 2、搭配数据中心的负载均衡服务器两次负载均衡,避免暴露真实服务IP; |
反向代理 | 应用层负载均衡:Nginx这样的HTTP服务器提供的反向代理功能可以将外网请求解析到不同的内网服务器上;常用于二十台以下的小规模互联网应用; | ![]() | 实现简单,Nginx配置文件配置一下即可 | 性能:HTTP是应用层协议,相对于下面两种方案效率较低 |
IP | 网络层负载均衡:当用户的请求到达负载均衡服务器以后,负载均衡服务器会对网络层的数据包的 IP 地址进行转换,修改 IP 地址,将其修改为应用服务器的 IP 地址,然后把数据包重新发送出去,请求数据就会到达应用服务器。 | ![]() | 操作系统内核直接修改 IP 数据包的地址,效率比应用层的反向代理负载均衡高得多。 | 瓶颈:不管是什么数据包,都要通过负载均衡服务器进行 IP 地址转换,才能够正确地把请求数据分发到应用服务器,或者正确地将响应数据包发送到用户端程序。负载均衡服务器会成为响应数据的流量瓶颈。 |
数据链路层 | 数据链路层负载均衡:负载均衡服务器并不修改数据包的 IP 地址,而是修改数据链路层里的网卡 mac 地址,在数据链路层实现负载均衡。而应用服务器和负载均衡服务器都使用相同的虚拟 IP 地址,这样 IP 路由就不会受到影响,但是网卡会根据自己的 mac 地址,选择负载均衡服务器发送到自己网卡的数据包,交给对应的应用程序去处理,处理结束以后,当把响应的数据包发送到网络上的时候,因为 IP 地址没有修改过,所以这个响应会直接到达用户的浏览器,而不会再经过负载均衡服务器。 | ![]() | 性能高:避免响应数据再经过负载均衡服务器,因而可以承受较大的数据传输压力,所以,目前大型互联网应用基本都使用链路层负载均衡。 | 实现较为苛刻:必须使用 自带 LVS 的Linux服务器,才能使用 IP 负载均衡和链路层负载均衡的技术。 |
总结
负载均衡技术到了今天,随着互联网技术的发展与普及,已经是最常用的分布式技术之一了,使用非常简单。使用云计算平台,只需要在控制台点击几下,就可以配置实现一个负载均衡了。即使是自己在代码中控制负载均衡,也不复杂。