程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Apache反向代理結合Tomcat集群來實現負載均衡(四)、Apache反向代理

Apache反向代理結合Tomcat集群來實現負載均衡(四)、Apache反向代理

編輯:C++入門知識

Apache反向代理結合Tomcat集群來實現負載均衡(四)、Apache反向代理


上文中主要介紹了tomcat的集群方式,下邊再來說下apache的反向代理。反向代理可以這樣來理解,我們通常認為的代理(正向代理)是局域網內部機器本身不能上網,網關可以上網,大家在局域網內是通過網關上網的,這個網關就是個代理機器。反向代理意思就反了過來,現在網關並不是給內部局域網做代理的,而是給外部請求內部局域網做代理的,例如,當前一個應用系統在局域網內的A機器上,外部網絡不能直接訪問A機器,而是通過網關訪問到了A,這裡網關就是個反向代理了。

總結:正向代理---為在防火牆內的局域網客戶端提供Internet的途徑,反向代理---將防火牆後面的服務器提供給Internet用戶訪問。

大家常說的Apache負載均衡就是利用了Apache的反向代理,再加上負載均衡策略實現的。下邊說下apache如何做負載均衡。

打開apache的反向代理功能

在Apache2.2x版本後已經加入了mod_proxy(反向代理)模塊,只是默認沒有啟用而已,下邊打開自己機器上Apache目錄下的httpd.conf文件,去掉mod_proxy模塊前的注釋:

#加載mod_proxy
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
這樣即打開了Apache的mod_proxy模塊

增加Apache監聽端口

在httpd.conf的最後加上如下配置:


         ServerAdmin [email]****.com[/email]
         ServerName localhost
         ServerAlias localhost
         ProxyPass / balancer://cluster/ stickysession=JSESSIONID nofailover=Off
         ProxyPassReverse / balancer://cluster/
	 ErrorLog "logs/error.log"
	 CustomLog "logs/access.log" common


其中VirtualHost *:80代表筆者本機的http server端口。一般項目都監聽在HTTP服務的默認端口80上。

ProxyPass / balancer://cluster/代表所有的請求都會重定向到balancer://cluster/處理。balancer是內置負載。cluster為下邊配置中的負載名稱(名字隨意但上下要保持一致)

ProxyPassReverse / balancer://cluster/是反向代理,也就是將所有的請求反向代理到負載均衡後的應用url路徑中。

stickysession=JSESSIONID nofailover=Off是做Session復制用的。(粘性session)

增加負載均衡處理配置

繼續在httpd.conf文件尾處增加如下配置:

ProxyRequests Off

	BalancerMember ajp://127.0.0.1:18009 loadfactor=1 route=tomcat7_node1
	BalancerMember ajp://127.0.0.1:28009 loadfactor=1 route=tomcat7_node2
	# status=+H為配置熱備,當所有機器都over時,才會請求該機器
	#BalancerMember http://192.168.1.218:8009 status=+H
	#按照請求次數均衡(默認)
	#ProxySet lbmethod=byrequests
	#按照權重
	#ProxySet lbmethod=bytraffic
	#按負載量,也就是往負載少的派發新請求
	#ProxySet lbmethod=bybusyness
	ProxySet lbmethod=bybusyness

其中ProxyRequests Off為關閉正向代理,因為正向代理允許客戶端通過它訪問任意網站並且隱藏客戶端自身,因此你必須采取安全措施以確保僅為經過授權的客戶端提供服務。這裡用Apache的反向代理,所以先把正向代理給關了。

BalancerMember ajp://127.0.0.1:18009 loadfactor=1 route=tomcat7_node1
為負載的成員都有哪些(將外部請求轉發到哪些集群成員上),18009為tomcat的ajp端口,注意在同一機器上兩個tomcat的端口不要一致。

route為路由標識,為上文tomcat中的jvmRoute,注意要跟上文中的tomcat中的名字保持一致

ProxySetlbmethod即是負載均衡算法策略。此處使用的是按照負載量,吞吐量少Node的之後可要小心喽,分配到你的任務可就多了。而byrequests策略更偏重的是次數。

Apache的負載均衡配置已結束,下邊就開始測試吧,測試前需要注意一點,如果需要將tomat中的web項目作為默認項目啟動(即輸入http://localhost:8080即可訪問到該項目)時,需要也將apache的負載均衡配置中的

BalancerMember ajp://127.0.0.1:18009 loadfactor=1 route=tomcat7_node1

端口號後也不用加項目名稱。如果是非作為tomcat的默認項目,則需要改Apache的配置為ajp://127.0.0.1:18009/WebProject(即加上項目名稱),總之就是tomcat和apache的項目路徑保存一致即可,否則session信息將無法共享。

測試步驟

1、啟動Apache、2個tomcat(不分先後啟動,只有都啟來即可)

2、訪問本機的http://localhost(或者http://localhost/WebProject,根據自己的項目路徑)

3、可以看到apache將請求轉發到不同的用用服務器上

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved