Load-Balancing

HA 代理不會對我的 Web 請求進行負載平衡。我做錯了什麼?

  • February 9, 2011

我終於以我認為我想要的方式設置和執行 HA 代理。但是,它不會對接收到的 Web 請求進行負載平衡。所有請求目前都被轉發到集群中的第一台伺服器。我將在下面粘貼我的配置 - 如果有人能看到我可能出錯的地方,我將不勝感激。

這是我第一次嘗試在 *nix 環境中配置 Web 伺服器。

首先,我在 apache 集群中的第一台伺服器所在的主機上執行 HA 代理。我們稍後會將這些伺服器遷移到虛擬伺服器,它們將擁有不同的虛擬主機,但我想現在就執行它。

兩台 Web 伺服器都在接收它們的執行狀況檢查,並正確報告。haproxy?stats 頁面正確地報告了伺服器的啟動和關閉。我已經通過更改檢查的文件的名稱對此進行了測試。我還沒有給這些伺服器增加任何負載。我剛剛在幾個選項卡(私人瀏覽)上打開了 URL,並且有幾個同事也點擊了 URL。所有流量都流向 WEB1。我平衡​​不正確嗎?

global
     maxconn 10000
     nbproc 8
     pidfile /var/run/haproxy.pid
     log 127.0.0.1 local0 debug
     daemon

defaults
     log global
     mode http
     retries 3
     option redispatch
     maxconn 5000
     contimeout 5000
     clitimeout 50000
     srvtimeout 50000

listen WEBHAEXT :80,:8443
     mode http
     cookie sessionbalance insert indirect nocache
     balance roundrobin
     option httpclose
     option forwardfor except 127.0.0.1
     option httpchk HEAD /health_check.txt
     stats enable
     stats auth rah:rah
     server WEB1 10.90.2.131:81 cookie WEB_1 check
     server WEB2 10.90.2.130:80 cookie WEB_2 check

編輯:

我使用 ab(apache 基準測試)成功地執行了測試,並且負載在兩個節點之間平均分配。我不確定我之前做錯了什麼,但上述配置有效。

您如何檢查所有請求是否都發送到單個伺服器?當您配置 HAProxy 時,您正在使用粘性會話,其中 HAProxy 在每個客戶端上設置一個 cookie,該 cookie 針對每個請求將其定向到相同的後端節點。如果您只是在單個瀏覽器中繼續重新載入,您會看到每個請求都轉到同一個後端。

我剛剛嘗試了您提供的確切配置。首先,健康檢查對我不起作用,我不得不在“health_check.txt”(haproxy-1.4.10)前面添加一個“/”。

但是負載平衡工作正常。每次我關閉並重新打開瀏覽器時,我都會被 ping 通到另一台伺服器。

您是否有正在測試的實時應用程序(使用它自己的 cookie),或者它只是一個測試頁面?

引用自:https://serverfault.com/questions/231024