深入HAProxy的安装与配置详解

发布时间:2019-10-05编辑:脚本学堂
本文介绍下,linux系统中,HAProxy的安装与配置过程,以及可能的一些问题及解决方法。有需要的朋友,参考下吧。

步骤1,HAProxy简介
这部分略过,大家可以搜索下相关内容,中文的或英文的。

步骤 2 HAProxy的安装配置

在安装之前,首先确定一下结构。我在这次试验中用的是最最几本的一个结构,只是为了体验。

HAProxy节点:192.168.1.200

说明:我用了单节点是为了体验功能,应用到运营环境的话单节点这样的事情一定要避免。否则出现单点故障够大家喝一壶的。这里建议可以使用keepalived配置HAProxy的另一节点以作备份。

Web节点01:192.168.1.149

Web节点02:192.168.1.153

说明:我在web节点中yum安装的apache,其他啥都没干。

2.1 下载安装HAProxy:
登陆到haproxy机器上
   

复制代码 代码示例:
mkdir -p /data/softwares/
    cd /data/softwates/
    wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.20.tar.gz
    tar xzvf haproxy-1.4.20.tar.gz -C /usr/local/
    cd /usr/local/
    mv haproxy-1.4.20 haproxy
    cd haproxy
    make TARGET=linux26 //2.4内核版本 make TARGET=linux24,freebsd makeTARGET=freebsd,solaris系统:make TARGET=solaris CPU=ultrasparc REGEX=static-pcre
    make install

2.2 创建配置文件
  

复制代码 代码示例:
  mkdir /etc/haproxy
    cp /usr/local/haproxy/examples/haproxy.cfg /etc/haproxy/
    #模板里面的配置改吧改吧也能用,不过还是自己写进去比较清楚明白
    vi /etc/haproxy/haproxy.cfg
    echo '' > /etc/haproxy/haproxy.cfg

在配置文件中添加如下内容(http7层代理)
  

复制代码 代码示例:
  global 
    maxconn 30720                   #默认最大连接数 
    log 127.0.0.1 local3            #[err warning info debug] 
    chroot /var/haproxy             #chroot运行的路径 
    uid 99 
    gid 99 
    daemon 
    nbproc 1                        #进程数量(可以设置多个进程提高性能) 
    pidfile /var/run/haproxy.pid    #haproxy的pid存放路径,启动进程的用户必须有权限访问此文件 
    ulimit-n 65535                  #ulimit的数量限制
    
    defaults 
    log global 
    mode http 
    option httplog 
    option dontlognull 
    option forwardfor               #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip 
    option abortonclose             #当服务器负载很高的时候,自动结束掉当前队列处理比较久的连接 
    option redispatch 
    #balance roundrobin              #默认的负载均衡的方式,轮询方式 
    #balance source                  #默认的负载均衡的方式,类似nginx的ip_hash 
    balance leastconn               #默认的负载均衡的方式,最小连接 
    retries 3 
    maxconn 30720 
    contimeout 5000 
    clitimeout 50000 
    srvtimeout 50000 
     
    listen test-webservers 0.0.0.0:80 
    stats uri /check-status 
    stats realm Haproxy statistics 
    stats auth admin:admin 
    option httpchk * 
    cookie SERVERID insert indirect nocache 
    server web1 192.168.1.149:80 cookie web1 check inter 1500 rise 3 fall 3 weight 1
    server web2 192.168.1.153:80 cookie web1 check inter 1500 rise 3 fall 3 weight 2
    capture cookie ASPSESSION len 32 
    srvtimeout 20000
    
    capture request  header Host           len 40 
    capture request  header Content-Length len 10 
    capture request  header Referer        len 200 
    capture response header Server         len 40 
    capture response header Content-Length len 10 
    capture response header Cache-Control  len 8

在配置文件中添加如下内容(tcp 4层代理)
   

复制代码 代码示例:

global 
    maxconn 30720                   #默认最大连接数 
    log 127.0.0.1 local3            #[err warning info debug] 
    chroot /var/haproxy             #chroot运行的路径 
    uid 99 
    gid 99 
    daemon 
    nbproc 1                        #进程数量(可以设置多个进程提高性能) 
    pidfile /var/run/haproxy.pid    #haproxy的pid存放路径,启动进程的用户必须有权限访问此文件 
    ulimit-n 65535                  #ulimit的数量限制
    
    defaults 
    log global 
    mode tcp 
    balance leastconn               #默认的负载均衡的方式,最小连接 
    retries 3 
    maxconn 30720 
    contimeout 5000 
    clitimeout 50000 
    srvtimeout 50000 
     
    listen check 0.0.0.0:10000 
    mode http
    option httplog
    stats uri /check-status 
    stats realm Haproxy statistics 
    stats auth admin:admin 
    
    capture request  header Host           len 40 
    capture request  header Content-Length len 10 
    capture request  header Referer        len 200 
    capture response header Server         len 40 
    capture response header Content-Length len 10 
    capture response header Cache-Control  len 8
    
    #frontend http-80-in
    #bind *:80
    #mode tcp            #http的7层模式 
    #log global           #应用全局的日志配置 
    #acl jt_s0_80 hdr_dom(host) -i s0.jt.yeyou.com
    #frontend http-4949-in
    #bind *:4949
    #mode tcp           
    #log global          
    #acl jt_s0_4949 hdr_dom(host) -i s0.jt.yeyou.com
    #frontend http-3749-in
    #bind *:3749
    #mode tcp            
    #log global           
    #acl jt_s0_3749 hdr_dom(host) -i s0.jt.yeyou.com
    #
    #frontend http-843-in
    #bind *:843
    #mode tcp           
    #log global         
    #acl jt_s0_843 hdr_dom(host) -i s0.jt.yeyou.com
    #
    #backend jt_s0_80
    #mode tcp            
    #balance roundrobin  
    #server s0_gs_80 10.127.65.110:80 check inter 1500 rise 3 fall 3 weight 1  
    #
    #backend jt_s0_4949
    #mode tcp            
    #balance roundrobin   
    #server s0_gs_4949 10.127.65.110:4949 check inter 1500 rise 3 fall 3 weight 1
    #
    #backend jt_s0_3749
    #mode tcp            
    #balance roundrobin   
    #server s0_gs_3749 10.127.65.110:3749 check inter 1500 rise 3 fall 3 weight 1
    #
    #
    #backend jt_s0_843
    #mode tcp            
    #balance roundrobin   
    #server s0_gs_843 10.127.65.110:843 check inter 1500 rise 3 fall 3 weight 1
    #
    #
    
    listen http-80-in 0.0.0.0:80
    mode tcp
    acl jt_s0_80y hdr_dom(host) -i s0.jt.yeyou.com
    balance roundrobin  
    server jt_s0_80 10.127.65.110:80 check inter 1500 rise 3 fall 3 weight 1  

    listen http-4949-in 0.0.0.0:4949
    mode tcp
    acl jt_s0_4949 hdr_dom(host) -i s0.jt.yeyou.com
    balance roundrobin  
    server jt_s0_4949 10.127.65.110:4949 check inter 1500 rise 3 fall 3 weight 1  
   
    listen http-3749-in 0.0.0.0:3749
    mode tcp
    acl jt_s0_3749 hdr_dom(host) -i s0.jt.yeyou.com
    balance roundrobin  
    server jt_s0_3749 10.127.65.110:3749 check inter 1500 rise 3 fall 3 weight 1  
    
    listen http-843-in 0.0.0.0:843
    mode tcp
    acl jt_s0_843 hdr_dom(host) -i s0.jt.yeyou.com
    balance roundrobin  
    server jt_s0_843 10.127.65.110:843 check inter 1500 rise 3 fall 3 weight 1  

2.3 启动haproxy进程 (更多启动参数可通过/usr/local/haproxy/haproxy -help 命令来查看)
  

复制代码 代码示例:
  /usr/local/sbin/haproxy -f /etc/haproxy/haproxy.cfg -st `cat /var/run/haproxy.pid`
    ps -ef | grep haproxy

2.4 查看状态监视页面