Apache實現反向代理負載均衡

說到負載均衡LVS這套技術,有不少種實現方法。html

本文所說,主要就是利用apache服務器實現反向代理,實現負載均衡。linux


首先,傳統的正向代理以下圖所示,正如咱們用的遊戲加速代理,大多的我的PC把請求發給正向代理服務器,代理服務器一般配置高端的帶寬,替咱們請求相應的服務。web


而負載均衡中的反向代理,一般意義上,是一個請求轉發的代理。相似一個收發室的管理人員,外來的不少郵件,傳到收發室,而後由管理員分配給不一樣的辦公室。經過這樣的操做,可使每臺服務器避免過多的負載致使宕機。而轉發的這個過程,一般也有不少種不一樣的算法。下圖所示,就是一個反向代理的過程:算法


實現這樣一個架構,須要幾臺服務器,不管是linux 或者 windows均可以實現。apache

若是如圖所示,實現,則須要四臺服務器,1臺apache反向代理服務器,實現請求的轉發分配。3臺後臺的主服務器。windows

在apache代理服務器上面,若是安裝的centos系統,那麼自帶的httpd服務,就不用再安裝apache服務器了。它的apache服務器的配置文件在/etc/httpd/conf/httpd.conf文件中,能夠經過vi命令打開。centos

1 確保須要的mod_proxy模塊均加載,主要的模塊以下:服務器

mod_proxy.so
mod_proxy_ajp.so
mod_proxy_balancer.so
mod_proxy_connect.so
mod_proxy_ftp.so
mod_proxy_http.so

 

2 配置相關的代理設置,在httpd.conf文件末尾添加:cookie

ProxyRequest off
<Proxy balancer://testcluster>
  BalancerMember http://192.168.0.1 route=jvm1
  BalancerMember http://192.168.0.2 route=jvm2
  BalancerMember http://192.168.0.3 route=jvm3
</Proxy>
Proxy /tt balancer://test/tt stickysession=JSESSIONID | jsessionid nofailover=On
ProxyPass Reverse /tt balancer://test/tt


3 在後面的主服務器1(例如JBOSS服務器)的/jboss/server/default/deploy/jboss-web.service/servers.xmlsession

<Engine name="jboss.web" defaultHost="localhost" jvmRoute="jvm1">

....

這樣一個負載均衡就大體 造成了。


其中可能有人考慮到,若是一個請求時登錄請求,而第二個請求時操做,結果第二個請求轉發到第二個服務器上面。那麼如何操做。這個不用擔憂,apache反向代理有 session粘連這樣一個概念,它會把全部關於cookie的文件保存在apache服務器上面,其餘的操做均會讀取這樣一個文件。


不一樣的負載分配方案

1 若是按照上面的配置方案:

ProxyRequest off
<Proxy balancer://testcluster>
  BalancerMember http://192.168.0.1:8080 route=jvm1
  BalancerMember http://192.168.0.2:8080 route=jvm2
  BalancerMember http://192.168.0.3:8080 route=jvm3
</Proxy>
Proxy /tt balancer://test/tt stickysession=JSESSIONID | jsessionid nofailover=On
ProxyPass Reverse /tt balancer://test/tt


apache服務器會按照請求,挨個轉發,第一個轉發給jvm1服務器。第二個請求轉發給jvm2服務器。第4個請求轉發給jvm1服務器等等


2 若是某臺服務器的性能要優於其餘幾臺,那麼能夠經過loadfactor參數實現負載的分配

ProxyRequest off
<Proxy balancer://testcluster>
  BalancerMember http://192.168.0.1:8080 route=jvm1 loadfactor=1
  BalancerMember http://192.168.0.2:8080 route=jvm2 loadfactor=2
  BalancerMember http://192.168.0.3:8080 route=jvm3 loadfactor=3
</Proxy>
Proxy /tt balancer://test/tt stickysession=JSESSIONID | jsessionid nofailover=On
ProxyPass Reverse /tt balancer://test/tt

這樣第一個請求發給jvm1,第二個和第三個發給jvm2,第四個到第六個發給jvm3

相關文章
相關標籤/搜索