Haproxy 負載均衡

      HAProxy提供高可用性、負載均衡以及基於TCP和HTTP應用的代理,支持虛擬主機,它是免費、快速而且可靠的一種解決方案。
     若是說在功能上,能以proxy反向代理方式實現 WEB均衡負載,這樣的產品有不少。包括 Nginx,ApacheProxy,lighttpd等。可是 Haproxy 並非 Http服務器,以上提到全部帶反向代理均衡負載的產品,都是 WEB 服務器,他們能提供靜態(html,jpg,gif..)或動態(PHP,cgi..)文件的傳輸以及處理。而Haproxy僅僅,並且專門是一款的用於均衡負載的應用代理。其自身並不能提供http服務。
      其配置簡單,擁有很是不錯的服務器健康檢查功能還有專門的系統狀態監控頁面,當其代理的後端服務器出現故障, HAProxy會自動將該服務器摘除,故障恢復後再自動將該服務器加入。自1.3版本開始還引入了frontend, backend, frontend根據任意HTTP請求頭內容作規則匹配,而後把請求定向到相關的backend。html

  1. 安裝Haproxy
    wdget http://www.haproxy.org/download/1.7/src/haproxy-1.7.5.tar.gz
    tar vxf haproxy-1.7.5.tar.gz

    進入目錄編譯安裝
    make TARGET=linux26 PREFIX=/usr/local/haproxy
    make install PREFIX=/usr/local/haproxy
     
  2. 配置Haproxy
    建立配置文件
    mkdir /usr/local/haproxy/conf
    mkdir /usr/local/haproxy/logs
    vim conf/haproxy.cfg

    1) haproxy.cfg內容以下(tcp負載均衡):
    global
        log 127.0.0.1 local0 info #[err warning info debug]
        maxconn 4096
        user root
        group root
        daemon
        nbproc 1
        pidfile /usr/local/haproxy/logs/haproxy.pid

    defaults
        maxconn 2000
        timeout connect 5000
        timeout client 30000
        timeout server30000
        retries 3          #後端服務器失敗重連次數,失敗後標記服務器不可用

    frontend server_read
        bind *:8888         #監聽端口
        default_backend cluster_server

    backend cluster_server
        mode tcp                    #tcp負載均衡
        balance roundrobin    #負載均衡算法,roundrobin, leastconn, source, static-rr
        server svr1 192.168.1.100:3306 weight 5 check inter 5000 rise 2 fall 3     #後端服務器權重和檢測
        server svr2 192.168.1.101:3306 weight 5 check inter 5000 rise 2 fall 3

    listen admin_stats
        bind 0.0.0.0:1080
        mode http
        log 127.0.0.1 local0 err
        stats uri /stats      #監控訪問地址 localhost:1080/stats
        stats refresh 5s    #監控頁面刷新的間隔

    2) haproxy.cfg內容以下(http負載均衡):
    global
        log 127.0.0.1 local0 info #[err warning info debug]
        maxconn 4096
        user root
        group root
        daemon
        nbproc 1
        pidfile /usr/local/haproxy/logs/haproxy.pid

    defaults
        maxconn 2000
        timeout connect 5000
        timeout client 30000
        timeout server30000
        retries 3          #後端服務器失敗重連次數,失敗後標記服務器不可用

    frontend server_read
        bind *:8888         #監聽端口
        default_backend cluster_server

    backend cluster_server
        mode http                   #http負載均衡
        balance roundrobin    #負載均衡算法,roundrobin, leastconn, source, static-rr
        option httpchk GET /index.html    #健康檢測方式
        server svr1 192.168.1.100:3306 weight 5 check inter 5000 rise 2 fall 3     #後端服務器權重和檢測
        server svr2 192.168.1.101:3306 weight 5 check inter 5000 rise 2 fall 3

    listen admin_stats
        bind 0.0.0.0:1080
        mode http
        log 127.0.0.1 local0 err
        stats uri /stats      #監控訪問地址 localhost:1080/stats
        stats refresh 5s    #監控頁面刷新的間隔
     
  3. 啓動haproxy
    進入sbin目錄
    ./haproxy -f ../conf/haproxy.cfg

    查看8888端口
    netstat -anp | grep 8888

    查看監控頁面
    http://localhost:1080/stats
相關文章
相關標籤/搜索