Haproxy搭建Web羣集概述

博文目錄
1、Haproxy概述
一、HTTP請求
二、負載均衡經常使用調度算法
三、常見的Web羣集調度器
2、Haproxy配置項介紹
一、global配置項一般有下面配置參數:
二、defaults配置項配置默認參數,通常會被應用組件繼承,若是在應用組件中沒有特別的聲明,將安裝默認配置參數:
三、listen配置項通常配置應用模塊參數:
3、Haproxy的參數優化php

1、Haproxy概述

Haproxy是目前比較流行的一種羣集調度工具,同類羣集調度工具備不少,如LVS和Nginx。相比較而言,LVS性能最好,可是搭建相對複雜;Nginx的upstream模塊支持羣集功能,可是對羣集節點健康檢查功能不強,性能沒有Haproxy好。Haproxy官方網站是http://www.haproxy.org/html

一、HTTP請求

經過URL訪問網站使用的協議是HTTP協議,此類請求通常稱爲HTTP請求。HTTP請求的方式分爲GET方式和POST方式。
當使用瀏覽器訪問某一個URL,會根據請求URL返回狀態碼,一般正常的狀態碼爲2 X X、3 X X(如200、301),若是出現異常會返回4 X X、5 X X(如400、500)。例如:訪問http://www.test.com/a.php?ld=123 ,就是一個GET請求,若是訪問正常,會從服務器的日誌中獲取200狀態碼。假如此請求使用POST方式,那麼傳遞給a.php的ld參數依舊是123,可是瀏覽器的URL將不會顯示後面的ld=123字樣,所以表單類或者有用戶名、密碼等內容提交時建議使用POST方式。無論使用哪一種方式,最終a.php獲取的值是同樣的。redis

二、負載均衡經常使用調度算法

LVS、Haproxy、Nginx最經常使用的調度算法有三種,以下所述:算法

  • RR(Round Robin):動態加權輪詢算法,支持權重的運行時調整及慢啓動機制;最大支持4095個後端主機;在服務器的處理時間平均分配的狀況下這是最流暢和公平的算法。該算法是動態的,對於實例啓動慢的服務器權重會在運行中調整。後端

  • LC(Least Connections): 最小鏈接數算法,鏈接數最少的服務器優先接收鏈接。建議用於長會話場景中使用,例如LDAP、SQL等協議,而不適合短會話協議。如HTTP.該算法是動態的,對於實例啓動慢的服務器權重會在運行中調整。瀏覽器

  • SH(Source Hashing):源地址哈希算法,對請求源IP地址進行哈希;取模法:將源地址hash計算後除以服務器總權重,服務器變更會影響全局調度效果;根據結果進行分配。只要服務器正常,同一個客戶端IP地址老是訪問同一個服務器。若是哈希的結果隨可用服務器數量而變化,那麼客戶端會定向到不一樣的服務器;該算法默認是靜態的,因此運行時修改服務器的權重是無效的,可是算法會根據「hash-type」的變化作調整。
    該算法通常用於不能插入cookie的Tcp模式。它還能夠用於廣域網上爲拒絕使用會話cookie的客戶端提供最有效的粘連;一致性hash:服務器變更僅影響局部調度;動態調度。

三、常見的Web羣集調度器

目前常見的Web羣集調度器分爲軟件和硬件,軟件一般使用開源的LVS、Haproxy、Nginx;硬件通常使用比較多的是F5,也有不少人使用國內的一些產品,如梭子魚、綠盟等。服務器

2、Haproxy配置項介紹

Haproxy的配置文件一般分爲三個部分:cookie

  • global;
  • defaults;
  • listen;
    global爲全局配置,defaults爲默認配置,listen爲應用組件配置。

一、global配置項一般有下面配置參數:

global
        log 127.0.0.1   local   <!--配置日誌記錄,local0爲日誌設備,默認存放到系統日誌-->
        log 127.0.0.1   local1 notice  <!--notice爲日誌級別,一般有24個級別-->
        #log loghost    local0 info
        maxconn 4096          <!--最大鏈接數-->
        chroot /usr/share/haproxy   <!--該服務自設置的根目錄,通常需將此行註釋掉-->
        uid 99         <!--用戶UID-->
        gid 99        <!--用戶GID-->
        daemon        <!--守護進程模式-->

二、defaults配置項配置默認參數,通常會被應用組件繼承,若是在應用組件中沒有特別的聲明,將安裝默認配置參數:

defaults
        log     global       <!--定義日誌爲global配置中的日誌定義-->
        mode    http                 <!--模式爲http-->
        option  httplog              <!--採用http日誌格式記錄日誌-->
        option  dontlognull
        retries 3         <!--檢查節點服務器失敗次數,連續達到三次失敗,則認爲節點不可用-->
        redispatch             <!--當服務器負載很高時,自動結束當前隊列處理比較久的鏈接-->
        maxconn 2000                      <!--最大鏈接數-->
        contimeout      5000              <!--鏈接超時時間-->
        clitimeout      50000             <!--客戶端超時時間-->
        srvtimeout      50000             <!--服務器超時時間-->

三、listen配置項通常配置應用模塊參數:

listen  appli4-backup 0.0.0.0:10004   <!--定義一個名爲appli4-backup的應用-->
                option  httpchk /index.html   <!--檢查服務器的index.html文件-->
                option  persist   <!--強制將請求發送到已經down掉的服務器,通常禁用此選項-->
                balance roundrobin  <!--負載均衡調度算法使用輪詢算法-->
            server  inst1 192.168.114.56:80 check inter 2000 fall 3     <!--定義在線節點-->
         server  inst2 192.168.114.56:81 check inter 2000 fall 3 backup <!--定義備份節點-->
<!--注意:在以上定義備份節點的參數中,
「check inter 2000」表示haproxy服務器和節點之間的一個心跳率,
「fall 3」表示連續三次檢測不到心跳頻率則認爲該節點失效。
節點配置後帶有「 backup」表示該節點只是個備份節點,
只有主節點失效該節點纔會上。去除backup,表示爲主節點,
和其餘主節點共同提供服務-->

3、Haproxy的參數優化

關於Haproxy的參數優化,如下列舉了幾個關鍵的參數,並對各參數的生產環境的優化建議作了說明:
Haproxy搭建Web羣集概述app

—————— 本文至此結束,感謝閱讀 ——————負載均衡

相關文章
相關標籤/搜索