Apache負載均衡設定方法 mod proxy

2021-08-26 21:53:36 字數 2877 閱讀 7161

一般來說,負載均衡就是將客戶端的請求分流給後端的各個真實伺服器,達到負載均衡的目的。還有一種方式是用兩台伺服器,一台作為主伺服器(master),另一台作為熱備份(hot standby),請求全部分給主伺服器,在主伺服器當機時,立即切換到備份伺服器,以提高系統的整體。

第一次看到這個標題時我也很驚訝,apache居然還能做負載均衡?真是太強大了。經過一番調查後發現的確可以,而且功能一點都不差。這都歸功於 mod_proxy 這個模組。不愧是強大的apache啊。

廢話少說,下面就來解釋一下負載均衡的設定方法。

一般來說,負載均衡就是將客戶端的請求分流給後端的各個真實伺服器,達到負載均衡的目的。還有一種方式是用兩台伺服器,一台作為主伺服器(master),另一台作為熱備份(hot standby),請求全部分給主伺服器,在主伺服器當機時,立即切換到備份伺服器,以提高系統的整體可靠性。

負載均衡的設定

apache可以應對上面這兩種需求。先來討論一下如何做負載均衡。首先需要啟用apache的幾個模組:

程式**

mod_proxy提供**伺服器功能,mod_proxy_balancer提供負載均衡功能, mod_proxy_http讓**伺服器能支援http協議。如果把mod_proxy_http換成其他協議模組(如mod_proxy_ftp),或許能支援其他協議的負載均衡,有興趣的朋友可以自己嘗試一下。

然後要新增以下配置:

程式**

proxyrequests off 

balancermember

balancermember

proxypass / balancer://mycluster/

proxypass / balancer://mycluster協議位址可以隨便定義。然後,在 段中設定該balancer協議的內容即可。 balancermember指令可以新增負載均衡組中的真實伺服器位址。

下面那段是用來監視負載均衡的工作情況的,除錯時可以加上(生產環境中禁止使用!),然後訪問 http://localhost/balancer-manager/ 即可看到負載均衡的工作狀況。

ok,改完之後重啟伺服器,訪問你的apache所在伺服器的位址,即可看到負載均衡的效果了。開啟 balancer-manager 的介面,可以看到請求是平均分配的。

如果不想平均分配怎麼辦?給 balancermember 加上 loadfactor 引數即可,取值範圍為1-100。比如你有三颱伺服器,負載分配比例為 7:2:1,只需這樣設定:

程式**

proxyrequests off 

balancermember loadfactor=7

balancermember loadfactor=2

balancermember loadfactor=1

proxypass / balancer://mycluster/

預設情況下,負載均衡會盡量讓各個伺服器接受的請求次數滿足預設的比例。如果要改變演算法,可以使用 lbmethod 屬性。如:

程式**

proxyrequests off 

balancermember loadfactor=7

balancermember loadfactor=2

balancermember loadfactor=1

proxypass / balancer://mycluster/

proxyset lbmethod=bytraffic

lbmethod可能的取值有:

lbmethod=byrequests 按照請求次數均衡(預設)

lbmethod=bytraffic 按照流量均衡

lbmethod=bybusyness 按照繁忙程度均衡(總是分配給活躍請求數最少的伺服器)

各種演算法的原理請參見[url=的文件[/url]。

熱備份(hot standby)

熱備份的實現很簡單,只需新增 status=+h 屬性,就可以把某台伺服器指定為備份伺服器:

程式**

proxyrequests off 

balancermember

balancermember status=+h

proxypass / balancer://mycluster/

從 balancer-manager 介面中可以看到,請求總是流向 node-a ,一旦node-a掛掉, apache會檢測到錯誤並把請求分流給 node-b。apache會每隔幾分鐘檢測一下 node-a 的狀況,如果node-a恢復,就繼續使用node-a。注:

proxy: no protocol handler was valid for the url錯誤解決辦法

1.去搜尋一下,大多數人的解決辦法都是提醒新增loadmodule proxy_http_module modules/mod_proxy_http.so,但是我遇到的情況不靈,因為已經新增這個了。

proxypass / balancer://mycluster/,後面一定要加「/」,而不是proxypass / balancer://mycluster

相應修改後重啟apache,服務正常。

Apache負載均衡設定方法 mod proxy

一般來說,負載均衡就是將客戶端的請求分流給後端的各個真實伺服器,達到負載均衡的目的。還有一種方式是用兩台伺服器,一台作為主伺服器 master 另一台作為熱備份 hot standby 請求全部分給主伺服器,在主伺服器當機時,立即切換到備份伺服器,以提高系統的整體可 第一次看到這個標題時我也很驚訝,...

Apache負載均衡設定方法 mod proxy

一般來說,負載均衡就是將客戶端的請求分流給後端的各個真實伺服器,達到負載均衡的目的。還有一種方式是用兩台伺服器,一台作為主伺服器 master 另一台作為熱備份 hot standby 請求全部分給主伺服器,在主伺服器當機時,立即切換到備份伺服器,以提高系統的整體。第一次看到這個標題時我也很驚訝,a...

apache負載均衡設定

apache負載均衡設定 2010 11 08 12 47 46 apache作為loadbalance前置機分別有三種不同的部署方式,分別是 1 輪詢均衡策略的配置 進入apache的conf目錄,開啟httpd.conf檔案,在檔案的末尾加入 proxypass balancer proxy 注...