• <ul id="mayc0"></ul>
    <ul id="mayc0"><center id="mayc0"></center></ul>
    <strike id="mayc0"><input id="mayc0"></input></strike>
    <ul id="mayc0"></ul>
  • 始創于2000年 股票代碼:831685
    咨詢熱線:0371-60135900 注冊有禮 登錄
    • 掛牌上市企業
    • 60秒人工響應
    • 99.99%連通率
    • 7*24h人工
    • 故障100倍補償
    您的位置: 網站首頁 > 幫助中心>文章內容

    haproxy安裝配置調優 (1)

    發布時間:  2012/7/27 18:12:08
    HAProxy提供高可用性、負載均衡以及基于TCP和HTTP應用的代理,支持虛擬主機,它是免費、快速并且可靠的一種解決方案。根據官方數據,其最高極限支持10G的并發。
      HAProxy特別適用于那些負載特大的web站點, 這些站點通常又需要會話保持或七層處理。HAProxy運行在當前的硬件上,完全可以支持數以萬計的并發連接。并且它的運行模式使得它可以很簡單安全的整合進您當前的架構中, 同時可以保護你的web服務器不被暴露到網絡上。
      其支持從4層至7層的網絡交換,即覆蓋所有的TCP協議。就是說,Haproxy 甚至還支持 Mysql 的均衡負載。。
      如果說在功能上,能以proxy反向代理方式實現 WEB均衡負載,這樣的產品有很多。包括 Nginx,ApacheProxy,lighttpd,Cheroke 等。
      但要明確一點的,Haproxy 并不是 Http 服務器。以上提到所有帶反向代理均衡負載的產品,都清一色是 WEB 服務器。簡單說,就是他們能自個兒提供靜態(html,jpg,gif..)或動態(php,cgi..)文件的傳輸以及處理。而Haproxy 僅僅,而且專門是一款的用于均衡負載的應用代理。其自身并不能提供http服務。
      但其配置簡單,擁有非常不錯的服務器健康檢查功能還有專門的系統狀態監控頁面,當其代理的后端服務器出現故障, HAProxy會自動將該服務器摘除,故障恢復后再自動將該服務器加入。自1.3版本開始還引入了frontend,backend,frontend根據任意HTTP請求頭內容做規則匹配,然后把請求定向到相關的backend。
      另外, 版本1.3 是處于活躍開發階段的版本, 它支持如下新特性:
      l 內容交換 : 可以根據請求(request)的任何一部分 來選擇一組服務器, 比如請求的 URI , Host頭(header) , cookie , 以及其他任何東西. 當然,對那些靜態分離的站點來說,對此特性還有更多的需求。
      l 全透明代理 : 可以用 客戶端IP地址 或者任何其他地址來連接后端服務器. 這個特性僅在Linux 2.4/2.6內核打了cttproxy 補丁后才可以使用. 這個特性也使得為某特殊服務器處理部分流量同時又不修改服務器的地址成為可能。
      l 基于樹的更快的調度器 : 1.2.16以上的版本要求所有的超時都設成同樣的值以支持數以萬計的全速連接. 這個特性已經移植到1.2.17.
      l 內核TCP拼接 : 避免了內核到用戶然后用戶到內核端的數據拷貝, 提高了吞吐量同時又降低了CPU使用率 . Haproxy 1.3支持Linux L7SW 以滿足在商用硬件上數Gbps 的吞吐的需求。
      l 連接拒絕 : 因為維護一個連接的打開的開銷是很低的,有時我們很需要限制攻擊蠕蟲(attack bots),也就是說限制它們的連接打開從而限制它們的危害。 這個已經為一個陷于小型DDoS攻擊的網站開發了而且已經拯救了很多站點。
      l 細微的頭部處理 : 使得編寫基于header的規則更為簡單,同時可以處理URI的某部分。
      l 快而可靠的頭部處理 : 使用完全RFC2616 兼容的完整性檢查對一般的請求全部進行分析和索引僅僅需要不到2ms 的時間。
      l 模塊化設計 : 允許更多人加入進此項目,調試也非常簡單. poller已經分離, 已經使得它們的開發簡單了很多. HTTP已經從TCP分離出來了,這樣增加新的七層特性變得非常簡單. 其他子系統也會很快實現模塊化
      l 投機I/O 處理 : 在一個套接字就緒前就嘗試從它讀取數據。poller僅推測哪個可能就緒哪個沒有,嘗試猜測,并且如果成功,一些開銷很大的系統調用就可以省去了。如果失敗,就會調用這些系統調用。已知的使用Linux epoll()已經凈提升起碼10%了。
      l ACLs : 使用任意規則的任意組合作為某動作的執行條件。
      l TCP 協議檢查 : 結合ACL來對請求的任意部分進行檢查,然后再進行轉發。這就可以執行協議驗證而不是盲目的進行轉發。比如說允許SSL但拒絕SSH。
      l 更多的負載均衡算法 : 現在,動態加權輪循(Dynamic Round Robin),加權源地址哈希(Weighted Source Hash),加權URL哈希和加權參數哈希(Weighted Parameter Hash)已經實現。其他算法比如Weighted Measured Response Time也很快會實現。
      安裝和配置
      Haproxy 的配置相當簡單,
      從官方網站:http://www.haproxy.org 下載最新版本。
      # wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.20.tar.gz
      # tar zcvf haproxy-1.3.20.tar.gz
      # cd haproxy-1.3.20
      # make TARGET=linux26 PREFIX=/usr/local/haprpxy
      # make install PREFIX=/usr/local/haproxy
      安裝完畢后,進入安裝目錄創建配置文件
      # cd /usr/local/haproxy
      # vi haproxy.cfg
      配置內容如下:
      global
      log 127.0.0.1 local0
      #log 127.0.0.1 local1 notice
      #log loghost local0 info
      maxconn 4096
      chroot /usr/local/haproxy
      uid 99 #所屬運行的用戶uid
      gid 99 #所屬運行的用戶組
      daemon
      nbproc 1
      pidfile /usr/local/haproxy/run/haproxy.pid
      #debug
      #quiet
      defaults
      log global
      log 127.0.0.1 local3 #日志文件的輸出定向
      mode http #所處理的類別
      option httplog #日志類別
      option httpclose
      option dontlognull
      option forwardfor
      option redispatch
      retries 2 #設置多個haproxy并發進程提高性能
      maxconn 2000
      balance roundrobin #負載均衡算法
      stats uri /haproxy-stats #haproxy 監控頁面的訪問地址
      # 可通過 http://localhost:1080/haproxy-stats 訪問
      contimeout 5000
      clitimeout 50000
      srvtimeout 50000
      listen localhost 0.0.0.0:1080 #運行的端口及主機名
      mode http
      option httpchk GET /index.htm #健康檢測
      server s1 127.0.0.1:3121 weight 3 check #后端的主機 IP &權衡
      server s2 127.0.0.1:3122 weight 3 check #后端的主機 IP &權衡
      啟動服務:
      # /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
      重啟服務:
      # /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg -st `cat /usr/local/haproxy/logs/haproxy.pid` (沒有換行)
      停止服務:
      # killall haproxy
      當然,為了方便系統在開機時加載,還可以創建啟動腳本:
      # vim /etc/rc.d/init.d/haproxy 內容如下:
      #! /bin/sh
      set -e
      PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/haproxy/sbin
      PROGDIR=/usr/local/haproxy
      PROGNAME=haproxy
      DAEMON=$PROGDIR/sbin/$PROGNAME
      CONFIG=$PROGDIR/conf/$PROGNAME.conf
      PIDFILE=$PROGDIR/run/$PROGNAME.pid
      DESC=”HAProxy daemon”
      SCRIPTNAME=/etc/init.d/$PROGNAME
      # Gracefully exit if the package has been removed.
      test -x $DAEMON || exit 0
      start()
      {
      echo -n “Starting $DESC: $PROGNAME”
      $DAEMON -f $CONFIG
      echo “.”
      }
      stop()
      {
      echo -n “Stopping $DESC: $PROGNAME”
      haproxy_pid=cat $PIDFILE
      kill $haproxy_pid
      echo “.”
      }
      restart()
      {
      echo -n “Restarting $DESC: $PROGNAME”
      $DAEMON -f $CONFIG -p $PIDFILE -sf $(cat $PIDFILE)
      echo “.”
      }
      case “$1″ in
      start)
      start
      ;;
      stop)
      stop
      ;;
      restart)
      restart
      ;;
      *)
      echo “Usage: $SCRIPTNAME {start|stop|restart}” >&2
      exit 1
      ;;
      esac
      exit 0
      保存后賜予可執行權限
      # chmod +x /etc/rc.d/init.d/haproxy
      就可以使用 service haproxy start|stop|restart 來控制服務的啟動停止跟重啟。
      并通過以下命令加載到開機服務啟動列表
      # chkconfig –add haproxy
      配置日志:
      # vim /etc/syslog.conf
      在最下邊增加
      local3.* /var/log/haproxy.log
      local0.* /var/log/haproxy.log
      重啟核心日志服務使配置起效
      # service syslog restart
      然后就可查看日志了
      # tail –f /var/log/harpoxy.log
      Aug 22 15:32:06 localhost haproxy[64136]: Proxy www started.
      Aug 22 15:32:06 localhost haproxy[64136]: Proxy cherokee started.
      Aug 22 15:32:06 localhost haproxy[64136]: Proxy wap started.
      Aug 22 15:32:06 localhost haproxy[64136]: Proxy pic started.
      Aug 22 15:32:06 localhost haproxy[64136]: Proxy img started.
      Aug 22 15:32:06 localhost haproxy[64136]: Proxy public started.
      Aug 22 15:32:06 localhost haproxy[64136]: Proxy public started.
      Aug 22 15:32:59 localhost haproxy[64137]: 219.142.128.30:6416 [22/Aug/2009:15:32:59.754] public stats/ 0/-1/-1/-1/0 200 17329 – - PR– 0/0/0/0/0 0/0 “GET /?stats HTTP/1.1″
      Aug 22 15:32:59 localhost haproxy[64137]: 219.142.128.30:6416 [22/Aug/2009:15:32:59.754] public stats/ 0/-1/-1/-1/0 200 17329 – - PR– 0/0/0/0/0 0/0 “GET /?stats HTTP/1.1″
      應用舉例
      WEB 均衡負載 & 虛擬主機
      重新打開配置文件 haproxy.cfg,留意最下部分的均衡主機選項
      listen localhost 0.0.0.0:1080 #運行的端口及主機名
      mode http
      option httpchk GET /index.htm #用于健康檢測的后端頁面
      server s1 127.0.0.1:3121 weight 3 check #后端的主機 IP &權衡
      server s2 127.0.0.1:3122 weight 3 check #后端的主機 IP &權衡
      在實驗中,我們的的后端是 squid 分開了2個端口在同一臺服務器上。
      以其中一項為例:
      server s1 127.0.0.1:3121 weight 3 check
      s1 是可自己定義的服務器別名
      127.0.0.1:3121 服務器的IP地址以及端口號
      weight 3 所能分配到請求的高低權衡,數字越大分配到的請求數就越高
      check 接受 haproxy 的定時檢查,以確定后端服務器的健康情況。
      如需配置虛擬主機,相當簡單,緊需修改 localhost 為你虛擬主機的的域名,加到haproxy配置中, 再為其分配后端服務器的參數即可。
      例:
      listen www.x1.com 0.0.0.0:1080 #運行的端口及主機名
      mode http
      option httpchk GET /index.htm #用于健康檢測的后端頁面
      server s1 127.0.0.1:3121 weight 3 check #后端的主機 IP &權衡
      server s2 127.0.0.1:3122 weight 3 check #后端的主機 IP &權衡
      listen www.x2.com 0.0.0.0:1080 #運行的端口及主機名
      mode http
      option httpchk GET /index.htm #用于健康檢測的后端頁面
      server s1 127.0.0.1:3121 weight 3 check #后端的主機 IP &權衡
      server s2 127.0.0.1:3122 weight 3 check #后端的主機 IP &權衡
      保存配置后重新加載,即可生效,刷新管理頁面也可看到新的虛擬主機。
      性能對比
      在此,我們用最近最火紅的 http 兼前端WEB均衡負載服務器 Nginx 與 Haproxy 做個簡單的性能對比。
      測試環境:
      CPU:Xeon2.8G X2
      RAM:4G
      OS:RedHat As5.3 X64
      工具:apache ab
      參數:ab -i -c 500 -n 100000 (500并發,1W請求)
      最終服務端:2個squid 需實現均衡負載
      成績如下:
      ####### Nginx + haproxy : (由Nginx通過反向代理發送請求至haproxy, 并由其進行均衡負載)
      Concurrency Level: 500
      Time taken for tests: 53.758 seconds
    億恩科技地址(ADD):鄭州市黃河路129號天一大廈608室 郵編(ZIP):450008 傳真(FAX):0371-60123888
       聯系:億恩小凡
       QQ:89317007
       電話:0371-63322206
    本文出自:億恩科技【www.vbseamall.com】

    服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線