简述 LVS、Nginx、HAProxy 各自优缺点?
Nginx 的优点:
工作在网络的 7 层之上,可以针对 http 应用做一些分流的策略,比如针对域名、目录结构。
Nginx 正则规则比 HAProxy 更为强大和灵活。
Nginx 对网络稳定性的依赖非常小,理论上能 ping 通就就能进行负载功能,LVS 对网络稳定性依
赖比较大,稳定要求相对更高。
Nginx 安装和配置、测试比较简单、方便,有清晰的日志用于排查和管理,LVS 的配置、测试就要
花比较长的时间了。
可以承担高负载压力且稳定,一般能支撑几万次的并发量,负载度比 LVS 相对小些。
Nginx 可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等
等。
Nginx 不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的 Web 应用服务器。
Nginx 作为 Web 反向加速缓存越来越成熟了,速度比传统的 Squid 服务器更快,很多场景下都将
其作为反向代理加速器。
Nginx 作为静态网页和图片服务器,这方面的性能非常优秀,同时第三方模块也很多。
Nginx 的缺点:
Nginx 仅能支持 http、https 和 Email 协议,这样就在适用范围上面小些。
对后端服务器的健康检查,只支持通过端口来检测,不支持通过 url 来检测。
不支持 Session 的直接保持,需要通过 ip_hash 来解决。
LVS 的优点:
抗负载能力强、是工作在网络 4 层之上仅作分发之用,没有流量的产生。因此负载均衡软件里的
性能最强的,对内存和 cpu 资源消耗比较低。
LVS 工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案。
无流量,LVS 只分发请求,而流量并不从它本身出去,这点保证了均衡器 IO 的性能不会收到大流
量的影响。
应用范围较广,因为 LVS 工作在 4 层,所以它几乎可对所有应用做负载均衡,包括 http、数据库
等。
LVS 的缺点是:
软件本身不支持正则表达式处理,不能做动静分离。相对来说,Nginx/HAProxy+Keepalived 则具
有明显的优势。
如果是网站应用比较庞大的话,LVS/DR+Keepalived 实施起来就比较复杂了。相对来说
Nginx/HAProxy+Keepalived 就简单多了。
HAProxy 的优点:
HAProxy 也是支持虚拟主机的。
HAProxy 的优点能够补充 Nginx 的一些缺点,比如支持 Session 的保持,Cookie 的引导,同时支
持通过获取指定的 url 来检测后端服务器的状态。
HAProxy 跟 LVS 类似,本身就只是一款负载均衡软件,单纯从效率上来讲 HAProxy 会比 Nginx
有更出色的负载均衡速度,在并发处理上也是优于 Nginx 的。
HAProxy 支持 TCP 协议的负载均衡转发。
简述代理服务器的概念及其作用?
代理服务器是一个位于客户端和原始(资源)服务器之间的服务器,为了从原始服务器取得内容,客户
端向代理服务器发送一个请求并指定目标原始服务器,然后代理服务器向原始服务器转交请求并将获得
的内容返回给客户端。
其主要作用有:
资源获取:代替客户端实现从原始服务器的资源获取;
加速访问:代理服务器可能离原始服务器更近,从而起到一定的加速作用;
缓存作用:代理服务器保存从原始服务器所获取的资源,从而实现客户端快速的获取;
隐藏真实地址:代理服务器代替客户端去获取原始服务器资源,从而隐藏客户端真实信息。