Haproxy简介
Haproxy是一个使用C语言编写的,可靠的、高性能的负载均衡软件,也是一种免费、快速且可靠的解决方案,可为基于TCP(第四层)和HTTP(第七层)的应用程序提供高可用负载均衡,特别适用于流量非常高也就是负载特别大的Web网站,完全可以支持数以万计的并发连接。这些网站站点通常需要会话保持或七层处理。新型的大型互联网公司会采用Haproxy+keepalived架构搭建高性能Web群集,能够支持千万级并发量。
Haproxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。同时结合了一个快速的I/O层与基于优先级的调度程序。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。单个进程可以运行多个实例,而且在单个进程中,可以配置300000个不同的代理并保持良好的运行。因此,通常不需要为所有实例启动多个进程。包括 GitHub、Bitbucket、Stack Overflow、Reddit、Tumblr、Twitter和 Tuenti在内的知名网站,及亚马逊网络服务系统都使用了Haproxy。
Haproxy一旦启动,会做三件事情:
· 处理客户端传入的连接请求;
· 周期性地检查后端服务器的状态(称为健康检查);
· 与其他Haproxy节点交换信息。
Haproxy高性能负载均衡主要优点:
□ Haproxy在负载均衡速度和并发处理上 是优于Nginx
□ Haproxy支持虚拟主机,可以工作在4、7层;
□ 能够补充Nginx的一些缺点,比如Session的保持、Cookie的引导等工作;
□ 支持url检测后端的服务器的状态;
□ Haproxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡
□支持很多负载均衡算法,Round-robin(轮询)、Weight-round-robin(加权轮询)、source(原地址保持)、RI(请求URL)、rdp-cookie(根据cookie)
四层与七层负载均衡的主要区别: