Haproxy軟負載安裝(version:1.7.7)

  • 介紹
    1. HAProxy是支持虛擬主機的,通過frontend指令來實現
    2. 能夠補充Nginx的一些缺點比如Session的保持,Cookie的引導等工作
    3. 支持url檢測后端的服務器出問題的檢測會有很好的幫助。
    4. 它跟LVS一樣,本身僅僅就只是一款負載均衡軟件;單純從效率上來講HAProxy更會比Nginx有更出色的負載均衡速度,在并發處理上也是優于Nginx的。
    5. HAProxy可以對Mysql讀進行負載均衡,對后端的MySQL節點進行檢測和負載均衡,不過在后端的MySQL slaves數量超過10臺時性能不如LVS,所以我向大家推薦LVS+Keepalived。
    6. 能對請求的url和header中的信息做匹配,有比lvs有更好的7層實現
    7. HAProxy的負載均衡算法現在也越來越多了,具體有如下8種:
      ① roundrobin,表示簡單的輪詢,這個不多說,這個是負載均衡基本都具備的;
      ②static-rr,表示根據權重,建議關注;
      ③leastconn,表示最少連接者先處理,建議關注;
      ④source,表示根據請求源IP,這個跟Nginx的IP_hash機制類似,我們用其作為解決session問題的一種方法
      ⑤ri,表示根據請求的URI;
      ⑥rl_param,表示根據請求的URl參數'balance url_param' requires an URL parameter name;
      ⑦hdr(name),表示根據HTTP請求頭來鎖定每一次HTTP請求;
      ⑧rdp-cookie(name),表示根據據cookie(name)來鎖定并哈希每一次TCP請求。
  • 安裝
    1 下載鏈接
    2 tar -zxvf haproxy-version.tar.gz
    3 cd haproxy-version
    4 uname -a
    Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Oct 29 17:29:29 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux
    5 make TARGET=linux31
    6 make install PREFIX=/data/haproxy
    7 cd /data/haproxy
    8 mkdir conf
    9 cd conf
    9 touch haproxy.conf
    10 vim haproxy.conf
  • 配置haproxy.conf
global
    # 定義每個haproxy進程的最大連接數 
    maxconn 40000
    daemon
    user haproxy
    group haproxy
    # 定義haproxy的pid,定義haproxy pid文件存放位置
    pidfile /data/haproxy/h.pid
    log 127.0.0.1:514 local2
defaults
    log     global
    mode    http
    option  httplog
    option dontlognull
    no option log-health-checks
    no option dontlog-normal
    option log-separate-errors

    # add X-Forwarded-For: IP
    option forwardfor

    balance roundrobin

    hash-type consistent

    timeout connect             10000
    timeout queue               1000
    timeout tarpit              12000
    timeout client              120000
    timeout server              120000
    timeout http-request        120000
    timeout http-keep-alive     120000
    timeout check               3000
    grace               3000
frontend h_9999
    maxconn     60000
    bind 0.0.0.0:9999
    use_backend weixin_server
# 這里定義你要代理的服務器
backend weixin_server
    balance         roundrobin
    log                global
    cookie          SERVERID
    server          db_test_155_8888          10.1.3.155:8888     check inter 2000 fall 3

11 添加haproxy 用戶和用戶組

groupadd haproxy #添加haproxy組
useradd -g haproxy haproxy -s /bin/false #創建nginx運行賬戶haproxy并加入到haproxy組,不允許haproxy用戶直接登錄系統

12 啟動

/data/haproxy/sbin/haproxy -f /data/haproxy/conf/haproxy.cfg
  • 給haproxy 添加日志:
    haproxy的日志需要打開才能夠查看,一般haproxy會將日志輸出到系統日志中。haproxy 日志配置步驟如下:
    1. vim /etc/rsyslog.conf
      添加local0.* /var/log/haproxy.log
      這里對路徑如果修改為/home/xinz/haproxytest/log目錄下,
      由于rsyslog默認情況下,沒有訪問home目錄下的權限,
      可以參考:You can generate a local policy module to allow this access.Doallow this access for now by executing:# grep rsyslogd /var/log/audit/audit.log | audit2allow -M mypol# semodule -i mypol.pp2.rsyslog
    2. 默認情況下,需要在514端口監聽UDP,
      所以可以把/etc/rsyslog.conf如下的注釋去掉
      $ModLoad imudp
      $UDPServerRun 514
    3. 重啟 rsyslog
      service rsyslog restart
      service rsyslog status
    4. 配置Haproxy.conf代碼
      global
      log 127.0.0.1 local0 info
    5. 日志輸出在/var/log/haproxy.log下
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。