haproxy 订阅
HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。包括 GitHub、Bitbucket[3]、Stack Overflow[4]、Reddit、Tumblr、Twitter[5][6]和 Tuenti[7]在内的知名网站,及亚马逊网络服务系统都使用了HAProxy。 [1] 展开全文
HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。包括 GitHub、Bitbucket[3]、Stack Overflow[4]、Reddit、Tumblr、Twitter[5][6]和 Tuenti[7]在内的知名网站,及亚马逊网络服务系统都使用了HAProxy。 [1]
信息
外文名
HAProxy
特    点
免费、快速并且可靠
类    型
代理
模    型
单一进程
支    持
虚拟主机
haproxy安装
tar zxvf haproxy-1.4.8.tar.gzcd haproxy-1.4.8uname -a //查看linux内核版本make TARGET=linux26 PREFIX=/usr/local/haproxymake install PREFIX=/usr/local/haproxy
收起全文
精华内容
下载资源
问答
  • Haproxy

    2018-01-22 11:58:34
    Haproxy

    1.ospf协议:用来做lvs的水平括扩展(高可用)
    2.Fnat模式:

    解决了多vlan|session共享
    特性:
        LIP:多VL,支持后端RS不在同一个网络中(TUN实施成本过高)
        lvs不具备对后端RS健康检查     
    性能:DR>TUN>NAT>FNAT

    3.DDOS攻击|
    4.TCP三次握手

    Haproxy

    ***源码编译&&制作rpm包

    (1)源码编译

    [root@server1 ~]# ls
    haproxy-1.6.11.tar.gz
    [root@server1 ~]# cd haproxy-1.6.11
    [root@server1 haproxy-1.6.11]# ls
    CHANGELOG     doc       include      Makefile  src      VERDATE
    contrib       ebtree    LICENSE      README    SUBVERS  VERSION
    CONTRIBUTING  examples  MAINTAINERS  ROADMAP   tests
    [root@server1 haproxy-1.6.11]# less README 
    [root@server1 haproxy-1.6.11]# yum install pcre-devel openssh-devel zlib-devel -y
    [root@server1 haproxy-1.6.11]# make TARGET=linux26 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy
    [root@server1 haproxy-1.6.11]# make TARGET=linux26 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy install
    [root@server1 haproxy-1.6.11]# cd examples/
    [root@server1 examples]# ls
    acl-content-sw.cfg     debug2ansi    haproxy.spec           ssl.cfg
    auth.cfg               debug2html    haproxy.vim            stats_haproxy.sh
    check                  debugfind     init.haproxy           transparent_proxy.cfg
    check.conf             errorfiles    option-http_proxy.cfg
    content-sw-sample.cfg  haproxy.init  seamless_reload.txt
    [root@server1 examples]# cp haproxy.init /etc/init.d/haproxy
    [root@server1 examples]# chmod +x /etc/init.d/haproxy 

    (2)制作源码包

    [root@server1 examples]# yum install rpm-build -y
    [root@server1 examples]# rpmbuild -bb haproxy.spec 
    error: File /root/rpmbuild/SOURCES/haproxy-1.6.11.tar.gz: No such file or directory
    [root@server1 examples]# cp ~/haproxy-1.6.11.tar.gz  ~/rpmbuild/SOURCES/
    [root@server1 examples]# cd
    [root@server1 ~]# cd rpmbuild/RPMS/
    [root@server1 RPMS]# ls
    x86_64
    [root@server1 RPMS]# cd x86_64/
    [root@server1 x86_64]# ls
    haproxy-1.6.11-1.x86_64.rpm
    [root@server1 x86_64]# rpm -qpl haproxy-1.6.11-1.x86_64.rpm 
    /etc/haproxy
    /etc/rc.d/init.d/haproxy
    /usr/sbin/haproxy
    /usr/share/doc/haproxy-1.6.11
    /usr/share/doc/haproxy-1.6.11/CHANGELOG
    /usr/share/doc/haproxy-1.6.11/README
    /usr/share/doc/haproxy-1.6.11/architecture.txt
    /usr/share/doc/haproxy-1.6.11/configuration.txt
    /usr/share/doc/haproxy-1.6.11/intro.txt
    /usr/share/doc/haproxy-1.6.11/management.txt
    /usr/share/doc/haproxy-1.6.11/proxy-protocol.txt
    /usr/share/man/man1/haproxy.1.gz
    [root@server1 x86_64]# 

    源码安装

    [root@server1 x86_64]# rm -fr /usr/local/haproxy/
    [root@server1 x86_64]# ls
    haproxy-1.6.11-1.x86_64.rpm
    [root@server1 x86_64]# rpm -ivh haproxy-1.6.11-1.x86_64.rpm 
    Preparing...                ########################################### [100%]
       1:haproxy                ########################################### [100%]
    [root@server1 ~]# cd haproxy-1.6.11/
    [root@server1 haproxy-1.6.11]# cd examples/
    [root@server1 examples]# cp content-sw-sample.cfg /etc/haproxy/haproxy.cfg
    [root@server1 x86_64]# 

    &&&实现负载均衡

    [root@server1 ~]# groupadd -g 200 haproxy
    [root@server1 ~]# useradd -u 200 -g 200 -M -s /sbin/nologin haproxy
    [root@server1 ~]# id haproxy
    uid=200(haproxy) gid=200(haproxy) groups=200(haproxy)
    [root@server1 ~]# vim /etc/haproxy/haproxy.cfg
    .....
        10  global
        11          maxconn         10000
        12          stats socket    /var/run/haproxy.stat mode 600 level admin
        13          log             127.0.0.1 local0
        14          uid             200
        15          gid             200
        16          chroot          /var/empty
        17          daemon
        18  defaults
        19          mode            http
        20      log     global
        21      option      httplog
        22      #option     dontlogull
        23      monitor-uri /monitoruri
        24      maxconn     8000
        25          timeout client  30s
        26  
        27          stats uri       /admin/stats
        28  
        29          option prefer-last-server
        30          retries         2
        31          option redispatch
        32          timeout connect 5s
        33          timeout server  5s
        34  
        35  frontend public
        36          bind            172.25.66.1:80 name clear
        37  
        38  #        use_backend     static if { hdr_beg(host) -i img }
        39          default_backend dynamic
        40  
        41  backend dynamic     #定义算法(haproxy的8种调度算法)
        42          server          statsrv1 172.25.66.2:80 check inter 1000    weight 2    #定义后端服务器及权重
        43          server          statsrv2 172.25.66.3:80 check inter 1000
        44  
    .....
    [root@server1 ~]# /etc/init.d/haproxy start
    Starting haproxy:                                          [  OK  ]
    [root@server1 ~]#
    [root@server1 ~]# vim /etc/security/limits.conf 
     51 haproxy         -       nodile          8000
    

    测试:

    [root@foundation66 Desktop]# curl 172.25.66.1/monitoruri
    <html><body><h1>200 OK</h1>
    Service ready.
    </body></html>
    [root@foundation66 Desktop]# curl 172.25.66.1/admin/stats
    [kiosk@foundation66 Desktop]$ for i in range {1..5};do curl 172.25.66.1;done
    Server2
    Server3
    Server2
    Server3
    Server2
    Server3
    [kiosk@foundation66 Desktop]$ 

    &添加日志

    **haproxy算法(8种负载均衡算法)

    &&实现重定向

    [root@server1 ~]# vim /etc/haproxy/haproxy.cfg 
    .....
     37         acl badip src 172.25.66.250     #禁IP
     38         #http-request deny if badip
     39         redirect location http://172.25.66.4 if badip   #重定向到4上
    .....

    测试:

    浏览器访问:
    172.25.66.1--->http://172.25.66.4/  #自动实现跳转

    支持动静页面

    [root@server1 ~]# vim /etc/haproxy/haproxy.cfg 
    .....
        35  frontend public
        36          bind            172.25.66.1:80 name clear
        37      acl badip src 172.25.66.250
        38      acl url_static path_end -i .png .gpeg .gif
        39      #http-request deny if badip
        40      #redirect location http://172.25.66.4 if badip
        41      acl write method POST
        42      acl write method PUT
        43  
        44      use_backend     static if write
        45          default_backend dynamic
        46      
        48  backend dynamic     #动态页面定义到2
        49      balance leastconn
        50          server          statsrv1 172.25.66.2:80 check inter 1000
        51  backend static  #静态页面定义到3
        52          server          statsrv2 172.25.66.3:80 check inter 1000
     .....

    RS端:

    必须支持php
    yum install php #重启httpd
    通过上传照片实现
    **先下载upload目录|修改权限|移动文件|修改文件大小
    [root@server2 html]# chmod 777 upload
    [root@server2 ~]# cd /var/www/html/upload/
    [root@server2 html]# ls
    index.html  index.php  upload  upload_file.php
    [root@server2 html]# vim  upload_file.php   #修改图片大小
    [root@server2 upload]# 

    浏览器访问:

    http://172.25.66.1  先broswer,然后submit
    [root@server3 ~]# cd /var/www/html/upload
    [root@server3 upload]# ls
    OSI.gif     #上传成功
    [root@server3 upload]# 

    Pacemaker+haproxy

    Server1|Server2安装和配置pacmaker|haproxy

    添加VIP

    [root@server1 ~]# crm
    crm(live)# configure 
    crm(live)configure#  property stonith-enabled=false
    crm(live)configure# primitive vip ocf:heartbeat:IPaddr2 params ip=172.25.66.100 cidr_netmask=24 op monitor interval=1min    #添加vip
    crm(live)configure# commit
    crm(live)configure# bye
    bye
    [root@server1 ~]#

    添加haproxy服务

    [root@server1 ~]# crm 
    crm(live)# configure 
    crm(live)configure# primitive haproxy lsb:haproxy op monitor interval=1min  #添加服务
    crm(live)configure# property no-quorum-policy=ignore
    crm(live)configure# show
    node server1
    node server4
    primitive haproxy lsb:haproxy \
        op monitor interval="1min"
    primitive vip ocf:heartbeat:IPaddr2 \
        params ip="172.25.66.100" cidr_netmask="24" \
        op monitor interval="1min"
    property $id="cib-bootstrap-options" \
        dc-version="1.1.10-14.el6-368c726" \
        cluster-infrastructure="classic openais (with plugin)" \
        expected-quorum-votes="2" \
        stonith-enabled="false"
    crm(live)configure# commit 
    crm(live)configure# bye 
    bye
    [root@server1 ~]#

    crm_mon监控

    **在添加完VIP和haproxy之后,commit,集群自动启动服务,会发现vip和haproxy都开启
        在一个节点(Server1)down掉之后,另一个(Server2)接管
    展开全文
  • HAProxy

    2017-06-03 23:29:20
    HAProxy

    HAProxy和Lvs、nginx对比

    1.功能比较多:web服务代理(多)|smpt|pop3等(tcp协议族里面的都可以)
    2.支持节点的健康检查(Nginx无),当服务器出现故障时回被HAproxy自动摘除,恢复时,回被自动添加进去。代理模式,类似于Lvs的nat模式,web服务器都是在私网之内的,不会暴露在公网上,所有的节点服务器不再需要公网地址(不会轻易被攻击)。
    3.主要支持两种模式:
        (1)基于4层的tcp代理模式(Mysql|邮件服务|HTTPs服务等):仅在客户端的服务器之间进行流量转发2)基于7层的http代理模式:会分析应用层的协议,并且通过允许、拒绝、交换、增加、修改、删除请求或者回应里指定内容来控制协议
    基于4层:
    client--负载均衡器(Nginx|HAProxy|Lvs)--web服务器--内网交换机--RS--web--负载均衡器--client
    *吞吐量有限制
    
    基于7层:
    

    haproxy与apache实现负载均衡

    在server3中

    yum install -y haproxy
    vim /etc/haproxy/haproxy.cfg
    ...
    # this config needs haproxy-1.1.28 or haproxy-1.2.1
    global
    log 127.0.0.1 local0 #日志输出配置,所有日志都记录在本机,通过 local0 输出
    # log 127.0.0.1 local1 notice ##定义 haproxy 日志级别
    #log loghost local0 info
    maxconn 4096
    ##默认最大连接数
    chroot /usr/share/haproxy #chroot 运行路径
    uid 99 #运行 haproxy 用户 uid
    gid 99 #运行 haproxy 用户 gid
    daemon #以后台形式运行 haproxy
    nbproc 1 #设置进程数量
    #debug
    #quiet
    defaults
    log global
    mode
    http
    ##默认模式 tcp 是 4 层(转发) http 是 7 层(代理)
    option httplog #日志级别
    option dontlognull #不记录健康检查日志信息
    retries 2
    #2 次连接失败就认为服务器不可用
    option redispatch
    maxconn 2000
    #最大连接数
    contimeout 5000
    #连接超时
    clitimeout
    50000
    ##客户端超时
    srvtimeout
    50000 ##服务器超时frontend web
    bind *:80
    default_backend webserver
    #默认访问后端为 webserver
    backend webserver
    mode http
    balance roundrobin ##轮询
    server server7 172.25.66.4:80 check inter 2000 rise 2 fall 5
    server server8 172.25.66.5:80 check inter 2000 rise 2 fall 5
    #check inter 2000 检测心跳频率 rise 2 2 次正确热播为服务器可用fall5 失败5次服务器不可用
    .....
    启动:
    /et/init.d/haproxy start

    在 server4和server5上

    yum install -y httpd
    /etc/init.d/httpd start
    echo server4 > /vae/www/html/index.html
    echo server5> /vae/www/html/index.html

    测试:
    curl 172.25.66.3

    curl 172.25.66.3
    server4
    curl 172.25.66.3
    serer5
    curl 172.25.66.3
    server4
    curl 172.25.66.3
    server5
    展开全文
  • haproxy

    2020-12-22 16:45:27
    HAProxy 前言 一、HAProxy是什么? 二、HAProxy的配置共有五个域 三、安装步骤 四、开启统计信息页面 五、配置HAProxy动静分离 六、HAProxy的核心功能 前言 这是我的第一条博客,加油ヾ(◍°∇°◍)ノ゙...

     

    HAProxy

    • 前言
    • 一、HAProxy是什么?
    • 二、HAProxy的配置共有五个域
    • 安装步骤
    • 四、开启统计信息页面
    • 五、配置HAProxy动静分离
    • 六、HAProxy的核心功能

     


    前言

    这是我的第一条博客,加油ヾ(◍°∇°◍)ノ゙

    •  

      一、HAProxy是什么?

      • HAProxy是一种高性能的开源的并且免费的负载均衡的软件,可以运行大部分主流的Linux操作系统上,HAProxy提供了TCP和HTTP两种负载均衡的能力,具备丰富的功能,版本更新快
    • 二、HAProxy共有五个域

      • 1、global:用于配置全局参数

      • 2、default:用于配置所有frontend和backend的默认属性

      • 3、frontend:用于配置前端服务(即HAProxy自身提供的服务)

      • 4、backend:用于配置后端服务(即HAProxy后面接的服务)

      • 5、listen:frontend+backend的组合配置,可以理解成更简洁的配置方法

    • 三、安装步骤

         先配置一个负载均衡集群

    •  安装HAProxy

    • yum -y intall haproxy
      • 打开配置文件

        • vim /etc/haproxy/haproxy.cfg

          定义后端服务器组

        • 截图解释:定义一个后端服务器组:webserver, 定义这个服务器组的算法为:rundrobin(轮询),定义后端真实服务器(server)
        • 定义前端服务器组

      •     截图解释:定义一个前段服务器为web,定义前段服务器监听的地址和端口,定义默认转发给后端的webservers服务器

      • 启动haproxy

      • systemctl start haproxy

        关闭防火墙

      • systemctl stop firewalld
        setenforce 0
        

        准备两台虚拟机并配置web服务器

      • yum -y install httpd
        
        vim /var/www/html/index.html
        
        <h1>web1</h1>

        另外一台也创建页面

    • yum -y install httpd
      
      vim /var/www/html/index.html
      
      <h1>web2</h1>

      启动httpd

    • systemctl start httpd

      关闭防火墙

    • systemctl stop firewalld
      setenforce 0
      

      配置完毕之后测试haproxy

    • 四、开启统计信息页面

      • frontend stats
            bind *:8080    #监听的地址和端口
            stats uri /stats  #访问的uri
            stats refresh 10s #页面自动刷新间隔时间
        stats auth admin:admin  #访问页面的账号和密码
        
        重启haproxy
      • systemctl restart haproxy

    • 五、配置HAProxy动静分离

      • 进入haproxy配置文件
      • vim /etc/haproxy/haproxy.cfg

        定义过滤规则

        • 截图解释:acl:定义一个过滤规则
                            path_end:定义一个过滤规则以什么为结尾
          ​​​​​                  -i:不区分大小写
                             use_backend:和acl结合使用,定义当过过滤规则匹配生效后转发的后端服务器

      • 定义后端服务器组

      • 截图解释:定义默认后端服务器组:webservers
        定义静态后端服务器组:dg

        至此配置完毕,haproxy将会把以.html结尾的静态页面转发给dg后端服务器组,其他默认转发给webservers

         

      • 保存退出后,重启haproxy

        systemctl restart haproxy
        


        访问页面

      • 默认会去访问webservers

    • 六、HAProxy的核心功能

      •  负载均衡:L4和L7两种模式,支持RR/静态RR/LC/IP Hash/URI Hash/URL_PARAM Hash/HTTP_HEADER Hash等丰富的负载均衡算法

      •  健康检查:支持TCP和HTTP两种健康检查模式

      • 会话保持:对于未实现会话共享的应用集群,可通过Insert Cookie/Rewrite Cookie/Prefix Cookie,以及上述的多种Hash方式实现会话保持

      •  SSL:HAProxy可以解析HTTPS协议,并能够将请求解密为HTTP后向后端传输

      •  HTTP请求重写与重定向

      •   监控与统计:HAProxy提供了基于Web的统计信息页面,展现健康状态和流量数据。基于此功能,使用者可以开发监控程序来监控HAProxy的状态

     


     

    展开全文
  • HAPROXY

    2018-02-25 23:20:00
    haproxy案例1:定义独立日志文件 haproxy案例2:haproxy统计页面的输出机制 haproxy案例3:动静分离示例: haproxy案例4:实现web负载 haproxy案例5:负载均衡MySQL服务 ...
    1. haproxy案例1:定义独立日志文件

    2. haproxy案例2:haproxy统计页面的输出机制

    3. haproxy案例3:动静分离示例:

    4. haproxy案例4:实现web负载

    5. haproxy案例5:负载均衡MySQL服务

     

     

     

    https://www.cnblogs.com/MacoLee/p/5853413.html

    转载于:https://www.cnblogs.com/cnki/p/8471116.html

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,104
精华内容 8,441
热门标签
关键字:

haproxy