A TLS termination proxy (or SSL termination proxy) is a proxy server that is used by an institution to handle incoming TLS connections, decrypting the TLS and passing on the unencrypted request to the institution's other servers (it is assumed that the institution's own network is secure so the user's session data does not need to be encrypted on that part of the link). TLS termination proxies are used to reduce the load on the main servers by offloading the cryptographic processing to another machine, and to support servers that do not support TLS, like Varnish.前端
因此在web应用中,通常适用nginx或者haproxy做为前端的https代理,代理服务器和后台的应用服务器好比tomcat的交互采用普通的HTTP链接,这样能够大幅度下降应用服务器处理SSL时加解密的资源消耗需求。以下:mysql
通常来讲,linux下如今大都适用nginx或者haproxy做为http反向代理,他们各自的优缺点以下:linux
LVS:
一、抗负载能力强。抗负载能力强、性能高,能达到F5硬件的60%;对内存和cpu资源消耗比较低
二、工做在网络4层,经过vrrp协议转发(仅做分发之用),具体的流量由linux内核处理,所以没有流量的产生。
二、稳定性、可靠性好,自身有完美的热备方案;(如:LVS+Keepalived)
三、应用范围比较广,能够对全部应用作负载均衡;
四、不支持正则处理,不能作动静分离。
五、支持负载均衡算法:rr(轮循)、wrr(带权轮循)、lc(最小链接)、wlc(权重最小链接)
六、配置 复杂,对网络依赖比较大,稳定性很高。ios
通常咱们在mysql/rabbitmq等使用TCP协议的高可用场景时使用LVS,在不支持VIP且使用TCP协议的场景适用haproxy。nginx
Ngnix:
一、工做在网络的7层之上,能够针对http应用作一些分流的策略,好比针对域名、目录结构;
二、Nginx对网络的依赖比较小,理论上能ping通就就能进行负载功能;
三、Nginx安装和配置比较简单,测试起来比较方便;
四、也能够承担高的负载压力且稳定,通常能支撑超过1万次的并发;
五、对后端服务器的健康检查,只支持经过端口来检测,不支持经过url来检测。
六、Nginx对请求的异步处理能够帮助节点服务器减轻负载;
七、Nginx仅能支持http、https和Email协议,这样就在适用范围较小。
八、不支持Session的直接保持,但能经过ip_hash来解决。、对Big request header的支持不是很好,
九、支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、Ip-hash(Ip哈希)
十、Nginx还能作Web服务器即Cache功能。git
HAProxy的特色是:
一、支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机;
二、可以补充Nginx的一些缺点好比Session的保持,Cookie的引导等工做
三、支持url检测后端的服务器出问题的检测会有很好的帮助。
四、更多的负载均衡策略好比:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现
五、单纯从效率上来说HAProxy更会比Nginx有更出色的负载均衡速度。
六、HAProxy能够对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。
九、支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、source(原地址保持)、RI(请求URL)、rdp-cookie(根据cookie)
十、不能作Web服务器即Cache。github
三大主流软件负载均衡器适用业务场景:
一、初期,能够选用Nigix/HAproxy做为反向代理负载均衡(或者流量不大均可以不选用负载均衡),由于其配置简单,性能也能知足通常的业务场景。若是考虑到负载均衡器是有单点问题,能够采用Nginx+Keepalived/HAproxy+Keepalived避免负载均衡器自身的单点问题。
二、网站并发达到必定程度以后,为了提升稳定性和转发效率,可使用LVS、毕竟LVS比Nginx/HAproxy要更稳定,转发效率也更高。不过维护LVS对维护人员的要求也会更高,投入成本也更大。web
注:Niginx与Haproxy比较:Niginx支持七层、用户量最大,稳定性比较可靠。Haproxy支持四层和七层,支持更多的负载均衡算法,支持session保存等。具体选型看使用场景,目前来讲Haproxy因为弥补了一些Niginx的缺点用户量也不断在提高。算法
衡量负载均衡器好坏的几个重要因素:
一、会话率 :单位时间内的处理的请求数
二、会话并发能力:并发处理能力
三、数据率:处理数据能力
通过官方测试统计,haproxy 单位时间处理的最大请求数为20000个,能够同时维护40000-50000个并发链接,最大数据处理能力为10Gbps。综合上述,haproxy是性能优越的负载均衡、反向代理服务器。sql
总结HAProxy主要优势:
1、免费开源,稳定性也是很是好,这个可经过我作的一些小项目能够看出来,单Haproxy也跑得不错,稳定性能够与LVS相媲美;
2、根据官方文档,HAProxy能够跑满10Gbps-New benchmark of HAProxy at 10 Gbps using Myricom's 10GbE NICs (Myri-10G PCI-Express),这个做为软件级负载均衡,也是比较惊人的;
3、自带强大的监控服务器状态的页面,实际环境中咱们结合Nagios进行邮件或短信报警,这个也是我很是喜欢它的缘由之一;
4、HAProxy支持虚拟主机。
haproxy和nginx做为http反向代理的性能网上找了几个,可参考以下:
https://www.oschina.net/question/17_4121