Apache負載均衡的代碼分享
Apache是一個有名開源的服務(wù)器軟件,那么在這個結(jié)構(gòu)之上我們也能進行負載均衡的配置。很多朋友或者是興趣愛好者們對此可能不太了解,那么下面我們就來分享一篇關(guān)于Apache負載均衡功能配置的相關(guān)文章,希望大家能從中得到啟迪。
一般來說,負載均衡就是將客戶端的請求分流給后端的各個真實服務(wù)器,達到負載均衡的目的。還有一種方式是用兩臺服務(wù)器,一臺作為主服務(wù)器(Master),另一臺作為熱備份(Hot Standby),請求全部分給主服務(wù)器,在主服務(wù)器當(dāng)機時,立即切換到備份服務(wù)器,以提高系統(tǒng)的整體可靠性。
Apache負載均衡的設(shè)置
Apache可以應(yīng)對上面這兩種需求。先來討論一下如何做Apache負載均衡。首先需要啟用Apache的幾個模塊:
程序代碼
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so
mod_proxy提供代理服務(wù)器功能,mod_proxy_balancer提供Apache負載均衡功能,mod_proxy_http讓代理服務(wù)器能支持HTTP協(xié)議。如果把mod_proxy_http換成其他協(xié)議模塊(如mod_proxy_ftp),或許能支持其他協(xié)議的Apache負載均衡,有興趣的朋友可以自己嘗試一下。
然后要添加以下配置:
程序代碼
ProxyRequests Off
BalancerMember http://node-a.myserver.com:8080
BalancerMember http://node-b.myserver.com:8080
ProxyPass/balancer://mycluster
#警告:以下這段配置僅用于調(diào)試,絕不要添加到生產(chǎn)環(huán)境中!!!
SetHandler balancer-manager
order Deny,Allow
Deny from all
Allow from localhost
從上面Apache負載均衡設(shè)置的ProxyRequests Off這條可以看出,實際上負載均衡器就是一個反向代理,只不過它的代理轉(zhuǎn)發(fā)地址不是某臺具體的服務(wù)器,而是一個balancer://協(xié)議:
ProxyPass/balancer://mycluster協(xié)議地址可以隨便定義。然后,在段中設(shè)置該balancer協(xié)議的內(nèi)容即可。BalancerMember指令可以添加負載均衡組中的真實服務(wù)器地址。
下面那段是用來監(jiān)視Apache負載均衡的工作情況的,調(diào)試時可以加上(生產(chǎn)環(huán)境中禁止使用!),然后訪問http://localhost/balancer-manager/即可看到Apache負載均衡的工作狀況。
OK,改完之后重啟服務(wù)器,訪問你的Apache所在服務(wù)器的地址,即可看到Apache負載均衡的效果了。打開balancer-manager的界面,可以看到請求是平均分配的。
如果不想平均分配怎么辦?給BalancerMember加上loadfactor參數(shù)即可,取值范圍為1-100。比如你有三臺服務(wù)器,負載分配比例為7:2:1,只需這樣設(shè)置:
程序代碼
ProxyRequests Off
BalancerMember http://node-a.myserver.com:8080 loadfactor=7
BalancerMember http://node-b.myserver.com:8080 loadfactor=2
BalancerMember http://node-c.myserver.com:8080 loadfactor=1
ProxyPass/balancer://mycluster
默認情況下,Apache負載均衡會盡量讓各個服務(wù)器接受的請求次數(shù)滿足預(yù)設(shè)的比例。如果要改變算法,可以使用lbmethod屬性。如:
程序代碼
ProxyRequests Off
BalancerMember http://node-a.myserver.com:8080 loadfactor=7
BalancerMember http://node-b.myserver.com:8080 loadfactor=2
BalancerMember http://node-c.myserver.com:8080 loadfactor=1
ProxyPass/balancer://mycluster
ProxySet lbmethod=bytraffic
lbmethod可能的取值有:
lbmethod=byrequests按照請求次數(shù)均衡(默認)
lbmethod=bytraffic按照流量均衡
lbmethod=bybusyness按照繁忙程度均衡(總是分配給活躍請求數(shù)最少的服務(wù)器)
【責(zé)任編輯:佟媛微 TEL:(010)68476606】