设为首页 收藏本站
查看: 2330|回复: 0

[经验分享] 千万级高并发负载均衡软件HAPROXY

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-8-2 09:25:40 | 显示全部楼层 |阅读模式
一、HAProxy   基于硬件的负载均衡设备:f5,big-ip等
   基于软件的负载均衡产品:haproxy,lvs,nginx等
   在软件的负载均衡产品中,分为基于系统的软负载实现和基于第三方软件的软负载实现,LVS是基于系统实现的一种软负载。HA proxy是基于第三方应用实现的软负载均衡

1.haproxy简介  haproxy是一个开源的,高性能的,基于tcp第四层和http第七层应用的负载均衡软件
  优点:可靠性和稳定性非常好
        最高可以同时维护40000-50000个并发连接。单位时间内处理最大的请求数为20000.最大数据处理能力可达10GBPS
        支持多于8种负载均衡算法,同时也支持session保持
        支持虚拟主机功能。
        支持连接拒绝,全透明代理等功能
        haproxy拥有一个功能强大的服务器状态监控页面
        haproxy 拥有强大的ACL支持
        在业务系统方面。haproxy非常实用于那些并发量特别大而且需要持久连接或四层和七层处理机制的web系统,例如电商,另外haproxy也可用于mysql数据库(读操作)的负载均衡


2.四层和七层负载均衡的区别   四层负载均衡器也称为四层交换机,它主要是通过分析ip层及tcp/udp层的流量实现的基于ip+端口
   tcp应用实例:负载均衡器在接收到第一个来自SYN请求时,会通过设定的负载均衡算法选择一台最佳的后端服务器,同时将报文中的目标ip修改为后端服务器ip,然后直接转发给该服务器。负载均衡器在这个过程中相当于一个路由器的作用
   七层负载均衡器也称为7层交换机,位于iso应用层,支持多种应用协议,常见的HTTP,FTP,SMTP等。七层负载均衡器可以根据报文内容,再配合负载均衡算法来选择后端服务器。因此也称为“内容交换机”。七层负载均衡器在这个情况下类似于一个代理服务器。

3.haproxy与LVS的异同    两者都是软件负载均衡的产品。但是lvs基于系统,haproxy基于第三方应用
    lvs是基于第四层的ip负载技术。haproxy是基于第四层和第七层,可提供tcp和http应用的负载均衡综合解决方案
    LVS工作在iso模型第四层,状态监测功能单一。haproxy监测功能强大,可支持端口,url,脚本等多种检测方式
    haproxy处理性能低于四层负载均衡模式的LVS
    选择那个作为负载均衡器,需要以实际环境来决定

4.haproxy基础配置和应用实例快速安装proxy集群软件
      tar zxxvf haproxy-1.4.24.tar.gz
     cd haproxy-1.4.24
     make TARGET=linux26 PREFIX=/usr/local/haproxxy
     make install PREFIX=/usr/local/haproxy
     mkdir /usr/local/haproxy/conf #创建配置文件目录
     cp examples/haproxy.cfg /usr/local/haproxy/conf/
haproxy基础配置文件详解
      整体分为五部分:global(用来设定全局配置参数)
                      defaults部分(默认参数的配置部分)
                      frontend(用于设置用户请求的前端虚拟节点)
                      backend(用于设置集群后端服务集群的配置,也就是用来添加一组真实服务器以处理前段请求)
                      listen(frontend和backend的结合体)

    global
             log 127.0.0.1 local1 notice
             maxconn 4096
             chroot /usr/share/haproxy
             uid 99
             gid 99
             daemon
             nbproc 1
             pidfile /usr/local/haproxy/logs/haproxy.pid
        local1是日志设备,notice是日志等级,
        daemon设置haproxy进入后台运行
        nbproc设置haproxy启动时可创建的进程数
       maxconn设置haproxy进程接受的最大并发连接数,此选项等同于“ulimit -n”
    defaults
       mode http
       retries 3
       timeout connect 10s #连接到一台服务器的最长等待时间
       timeout client 20s #连接客户端发送数据最长等待时间
       timeout server 30s #服务器回应客户端发送数据最长等待时间
       timeout check 5s #对后端服务器的检测超时时间
       mode:设置haproxy实例默认的运行模式,有tcp,http,health是哪个模式
       tcp模式:客户端和服务端之间将建立一个全双工连接,不对七层报文做任何检查,默认为tcp模式,经常用于ssl,ssh,smtp等应用
       http模式:客户端请求在转发至后端服务器之前将会深度分析,所有与RFC格式不兼容的请求都会被拒绝
      retries:设置连接后端服务器的失败重试次数

Haproxy配置文件详解_服务器应用_Linux公社-Linux系统门户网站
    http://www.iyunv.com/Linux/2012-07/65350.htm

Haproxy日志策略
vim /etc/rsyslog.d/haproxy.conf
    $ModLoad imudp
    $UDPServerRun 514
    local3.* /usr/local/haproxy/logs/haproxy.log
    local0.* /usr/local/haproxy/logs/haproxy.log
vim /etc/sysconfig/rsyslog
    SYSLOGD_OPTIONS="-c 2 -r -m 0" #-r表示接受远程日志
service rsyslog restart

通过haproxy acl规则实现智能负载均衡
功能:通过设置acl规则检查客户端请求是否合法,如果合法,放心。如果不合法,拒绝。
       符合acl规则要求的请求将被提交到后端的backend服务器集群,进而实现基于acl规则的负载均衡
       acl规则经常使用在frontend字段中
       acl 名称 acl方法 -i 匹配的路径或者文件
       acl方法:hdr_reg(host),hdr_dom(host),hdr_beg(host),url_sub,url_dir,path_beg,path_end等

二、项目实战 基于虚拟主机的haproxy负载均衡系统配置实例
1> 、架构图
               wKiom1efDOWj-XytAADSHpLg3KI094.jpg

2>、实验环境
系统环境:CentOS6.5                   haproxy-1.4.24.tar.gz
1. 通过acl规则配置虚拟主机
环境:
haproxy(负载均衡调度器):192.1682.10
电商服务器集群:192.168.2.201(web1)域名www.hyzc.com
                192.168.2.202  (web2) 域名 www.hyzc.com
2.配置haproxy配置文件
# vim /usr/local/haproxy/conf/haproxy.cfg
# this config needs haproxy-1.1.28 or haproxy-1.2.1   
global   
        log 127.0.0.1   local0 info   
        maxconn 4096   
        chroot /usr/share/haproxy   
        uid 99   
        gid 99   
        daemon   
        nbproc 1   
        pidfile /usr/local/haproxy/logs/haproxy.pid
defaults   
        mode    http   
        retries 3   
        timeout connect 10s   
        timeout client 20s   
        timeout server 30s   
        timeout check 5s   

listen  admin_stats   
        bind 0.0.0.0:9188   
        mode http   
        log     127.0.0.1 local0 err   
        stats   refresh 30s             #设置haproxy监控页面刷新时间   
        stats   uri /haproxy-status     #设置haproxy监控页面的url路径   
        stats   realm welcome login\ Haproxy     #指定登录haproxy统计页面时,密码框上的文本提示信息   
        stats   auth admin:admin123  #指定haproxy监控页面的用户名和密码。用户名和密码可用冒号分隔   
        stats   hide-version          #用来隐藏统计页面上haproxy的版本信息   
        stats   admin if TRUE          #可用在监控页面上手工启用或禁用后端服务器。1.4.9版本以后有效
frontend        www   
        bind    *:80
        mode    http   
        option  httplog   
        option  forwardfor  #如果后端服务器需要获取客户端的真实ip,需要配置这个   
        log     global          #表示使用全局的日志配置
        acl         host_www hdr_reg(host) -i ^(www.hyzc.com|hyzc.com)
         use_backend server_www      if host_www

backend server_www   
        mode    http
        option  redispatch       #用于cookie保持的环境中   
        option  abortonclose  #自动结束当前队列中处理时间较长的链接   
        balance source  #用来定义负载均衡算法。   
        cookie  SERVERID  #表示向cookie插入serverid   
        option  httpchk GET /index.html  #表示启用http服务的状态检测功能   
                      #server用来定义多台真实的后端服务器,不能用于defaults和frontend   
   server  web1 192.168.2.201:80 cookie web1 weight 6 check inter 2000 rise 2 fall 3   
   server  web2 192.168.2.202:80 cookie web2 weight 6 check inter 2000 rise 2 fall 3

3. 启动haproxy
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg

4. 电商服务器集群配置
echo web1 > /var/www/html/index.html
echo web2 > /var/www/html/index.html
service httpd restart   


vim /etc/hosts
192.168.2.201    www.hyzc.com      hyzc.com
192.168.2.202    www.hyzc.com      hyzc.com

5.测试
测试HAproxy 实现虚拟主机和负载均衡功能
通过不同ip客户端以www.hyzc.com和hyzc.com域名访问网站。server_www后端服务器默认的web页面信息依次出现,同时不会出现其他页面
测试HA proxy的故障转移功能
将192.168.2.291的httpd服务关闭,访问www.hyzc.com访问网站,这个失效的节点不会被访问到。因为当httpd服务停止后,haproxy通过httpchk方式检测到此节点无法返回数据,从而屏蔽此节点对外提供服务的功能

使用HA proxy的web监控平台
http://192.168.2.10:9188/haproxy-status
用户名:admin 密码:admin123
    wKioL1efDOmTMBCGAAJFa4xGbLY438.jpg


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-251980-1-1.html 上篇帖子: RHEL6.5 haproxy简单配置 下篇帖子: Haproxy基础配置 软件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表