配置HAProxy實現負載均衡

一、haproxy介紹

HAProxy是一個使用C語言編寫的自由及開放源代碼軟件[1],其提供高可用性、負載均衡,以及基於TCP和HTTP的應用程序代理。
HAProxy特別適用於那些負載特大的web站點,這些站點通常又需要會話保持或七層處理。HAProxy運行在當前的硬件上,完全可以支持數以萬計的併發連接。並且它的運行模式使得它可以很簡單安全的整合進您當前的架構中, 同時可以保護你的web服務器不被暴露到網絡上。

haproxy 的配置文件由兩部分組成:全局設定和對代理的設定,共分爲五段:global,defaults,frontend,backend,listen。

二、安裝haproxy

去haproxy下載源碼包上傳到服務器或者wget

然後解壓

[root@mymaster yasuobao]# tar -zxvf haproxy-2.0.1.tar.gz
[root@mymaster yasuobao]# cd haproxy-2.0.1

編譯
[root@mymaster yasuobao]# make TARGET=linux31

這裏TARGET參數視centos版本而定,uname -r查看系統版本centos6.X需要使用TARGET=linux26 centos7.x使用linux31
安裝

[root@mymaster yasuobao]# make install PREFIX=/usr/local/haproxy

創建conf目錄
[root@mymaster yasuobao]# mkdir /usr/local/haproxy/conf

複製文件

[root@mymaster yasuobao]#  cp examples/option-http_proxy.cfg /usr/local/haproxy/conf/haproxy.cfg
[root@mymaster yasuobao]#  cd /usr/local/haproxy/conf

編輯配置文件

[root@mymaster conf]# vim haproxy.cfg

配置HAProxy實現負載均衡

字段含義如下

global                      # 全局參數的設置
    log 127.0.0.1 local0 info         # log語法:log <address_1>[max_level_1] # 全局的日誌配置,使用log關鍵字,指定使用127.0.0.1上的syslog服務中的local0日誌設備,記錄日誌等級爲info的日誌

    maxconn 4096          #最大連接數
    user nobody               #所屬用戶
    group nobody               #所屬組
    daemon                        #以守護進程方式運行haproxy
    nbproc 1                      #指定啓動的haproxy進程的個數,只能用於守護進程模式的haproxy,默認爲1
    pidfile /usr/local/haproxy/logs/haproxy.pid                 #指定pid文件生成目錄
defaults
    mode http      #默認的模式mode { tcp|http|health },tcp是4層,http是7層,health只會返回OK
    retries 3        # 定義連接後端服務器的失敗重連次數,連接失敗次數超過此值後將會將對應後端 
    timeout connect 10s        #連接超時
    timeout client 20s          #客戶端超時
    timeout server 30s         #服務器端超時
    timeout check 5s           #檢測超時
frontend www
    bind *:80           #監聽地址爲80
  mode http
    option      httplog   #啓用記錄HTTP請求、會話狀態和計時器的功能
    option      forwardfor   #允許在發往服務器的請求首部中插入“X-Forwarded-For”首部。
    option      httpclose   #每次請求完畢後主動關閉http通道
    log global    #啓用事件和流量日誌 
    default_backend     htmpool   #默認後端
backend htmpool
mode http
    option      redispatch    # 當使用了cookie時,haproxy將會將其請求的後端服務器的serverID插入到cookie中,以保證會話的SESSION持久性;而此時,如果後端的服 務器宕掉了, 但是客戶端的cookie是不會刷新的,如果設置此參數,將會將客戶的請求強制定向到另外一個後端server上,以保證服務的正常。
    option      abortonclose    #丟棄由於客戶端等待時間過長而關閉連接但仍在haproxy等待隊列中的請求
            balance     static-rr        #負載均衡算法(#banlance roundrobin 輪詢,balance source 保存session值,支持static-rr,leastconn,first,uri等參數)
    cookie      SERVERID      #允許插入serverid到cookie中,serverid後面可以定義
    option      httpchk GET /index.html
    server      myslave02 172.18.74.87:80 cookie 2 weight 3 check inter 2000 rise 2 fall 3      #cookie 1表示serverid     爲1,check inter 1500 是檢測心跳頻率,rise 2是2次正確認爲服務器可用,fall 3是3次失敗認爲服務器不可用,weight代表權重
    server      myslave 172.18.74.119:80 cookie 1 weight 3 check inter 2000 rise 2 fall 3

listen admin_stats
    bind  0.0.0.0:9188   #監聽端口
    mode  http
    log   127.0.0.1 local0 err     #全局的日誌配置,local0 是日誌設備,err 表示日誌級別。其中日誌級別有err、 warning、info、debug 四種可選。這個配置表示使用 127.0.0.1 上的 rsyslog 服務中的local0 日誌設備,記錄日誌等級爲err。
    stats refresh 30s    #統計頁面自動刷新時間
    stats uri /haproxy-status      #統計頁面url
    stats realm welcome login\ Haproxy       #統計頁面密碼框上提示文本
    stats auth admin:admin123      #統計頁面用戶名和密碼設置
    stats hide-version       #隱藏統計頁面上HAProxy的版本信息
    stats admin if TRUE      #通過設置此選項,可以在監控頁面上手工啓用或禁用後端真實服務器,僅在haproxy1.4.9 以後版本有效

啓動haproxy

[root@mymaster conf]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg

然後在後端服務器編輯index.html

[root@myslave html]# cat index.html
this is 119 html

[root@myslave02 html]# cat index.html
this is 87 html

curl檢查haproxy是否正常工作
配置HAProxy實現負載均衡

瀏覽器訪問172.18.74.59:9188/haproxy-status,用戶名admin,密碼admin123,登陸。可以看到haproxy的工作狀態
配置HAProxy實現負載均衡

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章