HA 代理不會對我的 Web 請求進行負載平衡。我做錯了什麼?
我終於以我認為我想要的方式設置和執行 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),或者它只是一個測試頁面?