haproxy

本文详细介绍了HAProxy的特点、工作原理,对比了LVS、Nginx和HAProxy的优缺点,并提供了实验环境及配置方法。HAProxy支持TCP和HTTP的负载均衡,擅长会话保持和高可用性,适用于高并发场景。
摘要由CSDN通过智能技术生成

HAproxy详解
一、三大开源负载均衡的软件
LVS负载均衡的特点
抗负载能力强。抗负载能力强、性能高,能达到F5硬件的60%;对内存和cpu资源消耗比较低
工作在网络4层,通过vrrp协议转发(仅作分发之用),具体的流量由linux内核处理,因此没有流量的产生。
稳定性、可靠性好,自身有完美的热备方案;(如:LVS+Keepalived)
应用范围比较广,可以对所有应用做负载均衡;
不支持正则处理,不能做动静分离。
支持负载均衡算法:rr(轮循)、wrr(带权轮循)、lc(最小连接)、wlc(权重最小连接)
配置 复杂,对网络依赖比较大,稳定性很高。
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功能。
HAProxy的特点是:
支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机;
能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作
支持url检测后端的服务器出问题的检测会有很好的帮助。
更多的负载均衡策略比如:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted SourceHash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现
单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度。
HAProxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。
支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、source(原地址保持)、RI(请求URL)、rdp-cookie(根据cookie)
不能做Web服务器即Cache。

二、haproxy工作原理
Haproxy提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。Haproxy特别适用于那些负载特别大的web站点,这些站点通常又需要会话保持或七层处理。Haproxy运行在时下的硬件上,完全可以支持数以万计的并发连接,并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。
Haproxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space)实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以使每个CPU时间片(Cycle)做更多的工作。

三、实验环境
主机名
操作系统
IP
内存
HAproxy
centos6.5
192.168.200.120
1G
webA
cetos6.5
192.168.200.130
1G
webB
centos6.5
192.168.200.131
1G

四、创建web实验环境
webA服务器

#修改映射文件

[root@webA ~]# echo "`hostname -I` webA" >> /etc/hosts
[root@webA ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.200.130  webA
#下载一个公网源(或者自己使用二进制源码保安装)
[root@webA ~]# mount /dev/sr0 /media/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@webA ~]#  mount /dev/sr0 /media/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@webA ~]#  yum -y install wget
[root@webA ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
[root@webA ~]# yum -y clean all
[root@webA ~]# yum makecache
[root@webA ~]# yum -y install nginx
#修改默认的主页文件,使其是自己的ip
[root@webA ~]# echo "`hostname -I`" > /usr/share/nginx/html/index.html 
[root@webA ~]# cat /usr/share/nginx/html/index.html
192.168.200.130 
启动文件之前要检查一下配置文件是否ok
[root@webA ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@webA ~]# nginx
#看下启动没有
[root@webA ~]# ps -ef | grep nginx
root       1123      1  0 20:09 ?        00:00:00 nginx: master process nginx
nginx      1124   1123  0 20:09 ?        00:00:00 nginx: worker process
root       1149   1105  0 20:14 pts/1    00:00:00 grep nginx
[root@webA ~]# ss -antup | grep 80
tcp    LISTEN     0      128                   :::80                   :::*      users:(("nginx",1123,7),("nginx",1124,7))
tcp    LISTEN     0      128                    *:80                    *:*      users:(("nginx",1123,6),("nginx",1124,6))
在网页上先实验下能不能用

webB服务器的实验环境搭建

[root@webB ~]# echo "`hostname -I` webB" >> /etc/hosts
[root@webB ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值