当前位置:   article > 正文

haproxy 高可用

haproxy 高可用

一 haproxy

 HAProxy简介

     HAProxy提供高可用、负载均衡以及基于TCP和HTTP的应用代理,适合处理高负载站点的七层数据请求。类似的代理服务可以屏蔽内部真实服务器,防止内部服务器遭受攻击。

   HAProxy特点和优点

   1.支持原声SSL,同时支持客户端和服务器的SSL.

   2.支持IPv6和UNIX套字节(sockets

   3.支持HTTP Keep-Alive

   4.支持HTTP/1.1压缩,节省宽带

   5.支持优化健康检测机制(SSL、scripted TCP、check agent...)

   6.支持7层负载均衡

   7.可靠性和稳定性非常好。

   8.并发连接40000-50000个,单位时间处理最大请求20000个,最大数据处理10Gbps.

   9.支持8种负载均衡算法,同时支持session保持。

   10.支持虚拟主机

   11.支持连接拒绝全透明代理

  12.拥有服务器状态监控页面

   13.支持ACL.

     HAProxy为了让同一客户端访问服务器可以保持会话。有三种解决方法:客户端IPCookie以及Session

   1.HAProxy通过客户端IP进行Hash计算并保存,以此确保当相同IP访问代理服务器可以转发给固定的真实服务器。

   2.HAProxy依靠真实服务器发送客户端的Cookie信息进行会话保持。

   3.HAProxy将保存真实服务器的Session以及服务器标识,实现会话保持。(HAProxy只要求后端服务器能够在网络联通,也没有像LVS那样繁琐的ARP配置)

   HAProxy的balance8种负载均衡算法:

   1.roundrobin : 基于权重轮循。

   2.static-rr : 基于权重轮循。静态算法,运行时改变无法生效

   3.source : 基于请求源IP的算法。对请求的源IP进行hash运算,然后将结果与后端服务器的权重总数想除后转发至某台匹配服务器。使同一IP客户端请求始终被转发到某特定的后端服务器。

   4.leastconn : 最小连接。(适合数据库负载均衡,不适合会话短的环境) 

   5.uri : 对部分或整体URI进行hash运算,再与服务器的总权重想除,最后转发到匹配后端。

   6.uri_param : 根据URL路径中参数进行转发,保证在后端服务器数量不变的情况下,同一用户请求分发到同一机器。

   7.hdr(<name>) : 根据http头转发,如果不存在http头。则使用简单轮循。

   HAProxy主要工作模式

   1.tcp模式:该模式下,在客户端和服务器之间将建立一个全双工的连接,且不会对7层的报文做任何处理的简单模式。此模式默认,通常用于SSL、SSH、SMTP应用。

   2.http模式(一般使用):该模式下,客户端请求在转发给后端服务器之前会被深度分析,所有不与RFC格式兼容的请求都会被拒绝。

   HAProxy架构图

五 使用keepalived+Haproxy主从配置来达到能够针对前段流量进行负载均衡到多台后端web1、web2、web3、img1、img2.但是由于haproxy会存在单点故障问题,因此使用keepalived来实现对Haproxy单点问题的高可用处理。

六 三大主流软件负载均衡器对比(LVS VS Nginx VS Haproxy)

衡量负载均衡器好坏的几个重要因素: 

1、会话率 :单位时间内的处理的请求数  

2、会话并发能力:并发处理能力  

3、数据率:处理数据能力  

经过官方测试统计,haproxy  单位时间处理的最大请求数为20000个,可以同时维护40000-50000个并发连接,最大数据处理能力为10Gbps。综合上述,haproxy是性能优越的负载均衡、反向代理服务器。

LVS
1、抗负载能力强。抗负载能力强、性能高,能达到F5硬件的60%;对内存和cpu资源消耗比较低
2、工作在网络4层,通过vrrp协议转发(仅作分发之用),具体的流量由linux内核处理,因此没有流量的产生。
2、稳定性、可靠性好,自身有完美的热备方案;(如:LVS+Keepalived)
3、应用范围比较广,可以对所有应用做负载均衡;
4、不支持正则处理,不能做动静分离。
5、支持负载均衡算法:rr(轮循)、wrr(带权轮循)、lc(最小连接)、wlc(权重最小连接)
6、配置 复杂,对网络依赖比较大,稳定性很高。

Ngnix

1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构;

2、Nginx对网络的依赖比较小,理论上能ping通就就能进行负载功能;

3、Nginx安装和配置比较简单,测试起来比较方便;

4、也可以承担高的负载压力且稳定,一般能支撑超过1万次的并发;

5、对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测。

6、Nginx对请求的异步处理可以帮助节点服务器减轻负载;

7、Nginx仅能支持http、https和Email协议,这样就在适用范围较小。

8、不支持Session的直接保持,但能通过ip_hash来解决。、对Big request header的支持不是很好,

9、支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、Ip-hash(Ip哈希)

10、Nginx还能做Web服务器即Cache功能。

HAProxy
1 支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机;
2 能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作
3 支持url检测后端的服务器出问题的检测会有很好的帮助。
4 更多的负载均衡策略比如:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现
5 单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度。
6 HAProxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。
7 支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、source(原地址保持)、RI(请求URL)、rdp-cookie(根据cookie)
10 不能做Web服务器即Cache。

七 Haproxy的配置文件进行详解

八 实验拓扑图

1 准备五台虚拟机

2 配置ip

Client:192.168.1.1

HAproxy:192.168.1.2

Web1:192.168.1.3

Web2:192.168.1.4

Web3:192.168.1.5

3 下载软件

Client:#yum -y install elinks

HAproxy:#yum -y install haproxy

Web1/2/3:#yum -y install httpd

  配置主页文件:#vim /etc/www/html/index.html

4.编辑HAproxy配置文件

 #vim /etc/haproxy/haproxy.cfg

5.启动服务

#systemctl start haproxy

6.客户端测试

#elinks http:192.168.1.2(反复浏览,web1/2/3主页文件交替出现)

注:假若想访问监控界面:配置stats uri  /haproxy项,重启服务(在haproxy服务器上加一个网卡。改为nat模式,用真实机浏览器访问http://新加网卡的IP/haproxy)

九 keepalived+haproxy

 1.实验拓扑图

2.需要五台虚拟机

3.全部设置为nat模式

4.下载软件

主/备:yum -y install keepalived haproxy

  Wed1/2/3:yum install httpd(配置主页文件)

5编辑配置文件

 #vim /etc/keepalived/keepalived.conf

主:

备:

主/备:

6.在真实机用浏览器访问http://192.168.20.188,web1/2/3主页文件交替出现。(访问检测页面只需在IP地址后加/haproxy)

注:若主负载均衡器宕机,用浏览器依然可以看到web1/2/3主页交替出现。若其中一台web服务器宕机,依然可以看到web主页文件

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/304818
推荐阅读
相关标签
  

闽ICP备14008679号