centos7下haproxy1.7的使用與配置


centos7下haproxy1.7的使用與配置

haproxy是一個使用C語言編寫的自由及開放源代碼軟件,其提供高可用性、負載均衡,以及基於TCP和HTTP的應用程序代理。

一、haproxy下載

http://www.haproxy.org/#down

如:haproxy-1.7.2.tar.gz

 

二、安裝haproxy

查看內核版本

> uname -r

解壓haproxy,並安裝

> tar xf haproxy-1.7.2.tar.gz
> cd haproxy-1.7.2
> make TARGET=linux2628 PREFIX=/data/haproxy
> make install PREFIX=/data/haproxy

安裝成功后,查看版本

> /data/haproxy/sbin/haproxy -v

復制haproxy文件到/usr/sbin下
因為下面的haproxy.init啟動腳本默認會去/usr/sbin下找,當然你也可以修改,不過比較麻煩。

> cp /data/haproxy/sbin/haproxy /usr/sbin/

復制haproxy腳本,到/etc/init.d下

> cp ./examples/haproxy.init /etc/init.d/haproxy
> chmod 755 /etc/init.d/haproxy

我們可以查看一下這個haproxy.init文件

#$BASENAME默認就是haproxy
BASENAME=`basename $0`
if [ -L $0 ]; then
BASENAME=`find $0 -name $BASENAME -printf %l`
BASENAME=`basename $BASENAME`
fi

#執行文件路徑
BIN=/usr/sbin/$BASENAME
#配置文件路徑
CFG=/etc/$BASENAME/$BASENAME.cfg
#pid文件路徑
PIDFILE=/var/run/$BASENAME.pid
#鎖文件路徑
LOCKFILE=/var/lock/subsys/$BASENAME

創建系統賬號

> useradd -r haproxy

創建配置文件

> mkdir /etc/haproxy
> vi /etc/haproxy/haproxy.cfg
#全局配置
global
    #設置日志
    log 127.0.0.1 local3 info
    chroot /data/haproxy
    #用戶與用戶組
    user haproxy
    group haproxy
    #守護進程啟動
    daemon
    #最大連接數
    maxconn 4000

#默認配置
defaults
    log global
    mode http
    option httplog
    option dontlognull
    timeout connect 5000
    timeout client 50000
    timeout server 50000

#前端配置,http_front名稱可自定義
frontend http_front
    bind *:80
    #haproxy的狀態管理頁面,通過/haproxy?stats來訪問
    stats uri /haproxy?stats
    default_backend http_back

#后端配置,http_back名稱可自定義
backend http_back
    #負載均衡方式
    #source 根據請求源IP
    #static-rr 根據權重
    #leastconn 最少連接者先處理
    #uri 根據請求的uri
    #url_param 根據請求的url參數
    #rdp-cookie 據據cookie(name)來鎖定並哈希每一次請求
    #hdr(name) 根據HTTP請求頭來鎖定每一次HTTP請求
    #roundrobin 輪詢方式
    balance roundrobin
    #設置健康檢查頁面
    option httpchk GET /index.html
    #傳遞客戶端真實IP
    option forwardfor header X-Forwarded-For
    # inter 2000 健康檢查時間間隔2秒
    # rise 3 檢測多少次才認為是正常的
    # fall 3 失敗多少次才認為是不可用的
    # weight 30 權重
    server node1 192.168.1.222:8080 check inter 2000 rise 3 fall 3 weight 30
    server node2 192.168.1.222:8082 check inter 2000 rise 3 fall 3 weight 30

打開rsyslog配置

> vi /etc/rsyslog.conf

去掉下面兩行前面的#號

$ModLoad imudp
$UDPServerRun 514

並添加下面一行

local3.* /var/log/haproxy.log

重啟rsyslog

> systemctl restart rsyslog

啟動haproxy

> service haproxy start

  

三、haproxy的acl規則

frontend http_front
    bind *:80
    stats uri /haproxy?stats

    #創建一個acl,is_http_back2是acl的名稱,可自定義,用於判斷主機名是否為www.back2.com
    acl is_http_back2 hdr_end(host) www.back2.com
    #通過正則判斷主機名中是否為bbs.back.com或forum.back.com
    acl is_host_bbs hdr_reg(host) -i ^(bbs.back.com|forum.back.com)
    #判斷ua是否為android
    acl is_ua_android hdr_reg(User-Agent) -i android
    #判斷主機名開頭是否為img.或css.或js.
    acl is_host_static hdr_beg(host) -i img. css. js.
    #判斷url路徑中是否有/bbs
    acl is_path_bbs path_beg -i /bbs
    #判斷url文件結尾
    acl is_php path_end -i .php
    #通過正則判斷url中結尾以
    acl is_static_file url_reg -i /*.(css|jpg|png|jpeg|gif)$
    #效果同上
    acl is_static_file2 path_end -i .css .jpg .png .jpeg .gif

    #如果主機名是www.back2.com那么就使用后端http_back2
    use_backend http_back2 if is_http_back2

    #默認使用的后端
    default_backend http_back

backend http_back
    balance roundrobin
    option httpchk GET /index.html
    option forwardfor header X-Forwarded-For
    server node1 192.168.1.222:8080 check inter 2000 rise 3 fall 3 weight 30

backend http_back2
    balance roundrobin
    option httpchk GET /index.html
    option forwardfor header X-Forwarded-For
    server node2 192.168.1.222:8082 check inter 2000 rise 3 fall 3 weight 30

  

四、haproxy的動態管理

在/etc/haproxy/haproxy.cfg的global配置中添加如下項:

stats socket /data/haproxy/haproxy.sock mode 600 level admin
stats timeout 2m

安裝socat工具

> yum install socat

查看幫助

> echo "help" | socat stdio /data/haproxy/haproxy.sock

查看信息

> echo "info" | socat stdio /data/haproxy/haproxy.sock

關閉后台主機

> echo "disable server http_back/node1" | socat stdio /data/haproxy/haproxy.sock

打開后台主機

> echo "enable server http_back/node1" | socat stdio /data/haproxy/haproxy.sock

  

五、可調優的參數

配置端口可用范圍

> cat /proc/sys/net/ipv4/ip_local_port_range

配置端口復用

> cat /proc/sys/net/ipv4/tcp_tw_reuse

修改timeout的時間(不建議修改)

> cat /proc/sys/net/ipv4/tcp_fin_timeout

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM