haproxy常用配置


haproxy 理論

它可以反向代理http/tcp協議,七層和四層的負載均衡解決方案

七層的負載解決方案是因為他們支持高級特性,工作在用戶空間,請求從用戶空間轉換到內核空間是非常浪費硬件資源的。

haproxy有一個monitor接口 可以查看連接狀況。 

haproxy是一個單一進進程響應眾多請求的負載均衡,他可以開啟多進程,但是官方不建議開啟多進程。haproxy1.4 還可以根據url進行調度,這樣可以提高緩存命中率。這也是使用haproxy的重要原因之一。

還可以根據acl進行持久連接

 

環境

 

角色                     主機                     IP        

haproxy             centos6.5            192.168.1.105(橋接)   

                                         192.168.3.50(vmnet8)           web1          centos6.5            192.168.3.100(vmnet8)

web2                cnntos6.5            192.168.3.101(vmnet8)    

 

web1和web2的網關指向192.168.3.50

 

.配置haproxy

[root@localhost ~]# yum -y install haproxy

 

配置文件

haproxy配置文件有兩部分

(1)全局配置:

    global  設置進程屬性的設定

    proxies  代理的配置

       defaults

       frontend(前端)

       backend(后端)

       listen(整合前端和后端的)

 

2)首先我們通過frontend+backend的方法實現haproxy的負載均衡

[root@localhost ~]# vim  /etc/haproxy/haproxy.cfg

 

#在文件最后定義后端資源組

backend web

    balance     roundrobin

    server web1 192.168.3.100:80 check

    server web2 192.168.3.101:80 check

解釋:web為定義的資源組的名稱

      roundrobin輪詢調度算法

      web1web2都為節點的名稱,可以自定義,這里的名字用於記錄日志使用。

      check為健康狀態檢查

 

#定義前端(相當於nginx中的server)

frontend  webserver *:80

   default_backend web

 

解釋:

webserver為前端的名稱,可以定定義

default_backend將監聽在80端口的請求轉發給名稱為web的資源組

 

啟動haproxy

[root@localhost ~]# service haproxy start

正在啟動 haproxy:                                         [確定]

 

在兩個節點中添加index.html,訪問http://192.168.3.50,看到輪詢效果。

 

健康狀態檢查。

停止掉其中的任意一個web服務,會發現,故障的節點將不會被調度。

 

3)啟動日志記錄

[root@localhost ~]# vim /etc/rsyslog.conf

13 $ModLoad imudp

14 $UDPServerRun 514

17 $ModLoad imtcp

18 $InputTCPServerRun 514

啟用13,14,17,18行

 

在62添加一行日志位置

62    local2.*                    /var/log/haproxy.log

這是全局日志,

 

我們可以在每個frontend中定義單獨的日志文件

格式:

log 127.0.0.1 local3

然后在rsyslog中定義local3及其位置

然后在訪問,就會出現日志

 

 

4.通過source(ip_hash)算法,將同一客戶端的請求到同一台server上去。

基於上邊的配置,修改一下算法

backend web

    balance     source

    server web1 192.168.3.100:80 check

    server web1 192.168.3.101:80 check

 

再次訪問頁面時候,會發現只停留在一個server上面

 

5.還有一種就是基於url路徑轉發。

backend web

    balance     uri

    server web1 192.168.3.100:80 check

    server web1 192.168.3.101:80 check

只要訪問的是同一個路徑,會被轉發到同一個server

 

二、指定haproxy的工作模式

模式有兩種

    http模式

       定義應用層數據深入分析,因此支持7層的過濾。處理,轉換等機制

    tcp模式

       haproxy在客戶端和應用服務器之間建立一個全雙工的連接,不會對應用層協議      做任何檢查。ssl mysql 等都應該使用此模式。

 

指定模式使用mode參數

 

三、啟用狀態監控

[root@localhost haproxy]# vim /etc/haproxy/haproxy.cfg

backend web

    balance     uri

    stats       enable

    server web1 192.168.3.100:80 check

    server web1 192.168.3.101:80 check

 

訪問以下地址

http://192.168.3.50/haproxy?stats

 

(2)啟用認證才能訪問狀態監控界面

backend web

    balance     uri

    stats       enable

    stats       auth admin:admin

    server web1 192.168.3.100:80 check

    server web1 192.168.3.101:80 check

 

(3)啟用管理功能

backend web

    balance     uri

    stats       enable

    stats       auth admin:admin

    stats       admin if TRUE

    server web1 192.168.3.100:80 check

    server web1 192.168.3.101:80 check

    server backup 127.0.0.1:8010 check backup

就是說你通過認證才能使用管理功能

 

 

 

四、設置備用服務器(錯誤頁面服務器)

當所有server宕機,請求會轉發至錯誤錯誤頁面

准備一台單獨的web服務器,或者是haproxy本身,但是端口不能使用80

[root@localhost haproxy]# vim /etc/httpd/conf/httpd.conf

Listen 8010

 

[root@localhost html]# vim /var/www/html/index.html

<h1>error</h1>

 

vim haproxy.cfg

backend web

    balance     uri

    stats       enable

    stats       auth admin:admin

    server web1 192.168.3.100:80 check

    server web1 192.168.3.101:80 check

    server backup 127.0.0.1:8010 check backup

 

然后我們宕掉兩台web,在訪問3.50 會發現頁面會跳轉至error頁面

 


免責聲明!

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



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