0, 環境說明
?????? Apache? :apache_2.0.55???? 1 個
???????Tomcat:? apache-tomcat-5.5.17 (zip版) 2個
???????mod_jk:: mod_jk-apache-2.0.55.so? 1個
第一部分:負載均衡
??? 負載均衡,就是apache將客戶請求均衡的分給tomcat1,tomcat2....去處理
?? 1.安裝apche,tomcat
?? http://httpd.apache.org/?下載Apache 2.0.55
??? http://tomcat.apache.org/download-55.cgi?下載tomcat5.5 zip版本(解壓即可,綠色版)
?? http://apache.justdn.org/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.15/? 下載mod_jk,注意和? apache版本匹配
?? 按照jdk,我的路徑為:E:\ide\apache\Apache2
?? 解壓兩份Tomcat, 路徑分別為 E:\ide\tomcat1,E:\ide\tomcat2
下載mod_jk
2.修改Apache配置文件http.conf
?? 在apache安裝目錄下conf目錄中找到http.conf
?? 在文件最后加上下面一句話就可以了
? include "E:\ide\apache\Apache2\conf\mod_jk.conf"
2. http.conf 同目錄下新建mod_jk.conf文件,內容如下
??
#加載mod_jk Module
LoadModule jk_module modules/mod_jk-apache-2.0.55.so
#指定 workers.properties文件路徑
JkWorkersFile conf/workers.properties
#指定那些請求交給tomcat處理,"controller"為在workers.propertise里指定的負載分配控制器
JkMount /*.jsp controller
3.在http.conf同目錄下新建 workers.properties文件,內容如下
?
worker.list = controller,tomcat1,tomcat2? #server 列表
#========tomcat1========
worker.tomcat1.port=8009???????? #ajp13 端口號,在tomcat下server.xml配置,默認8009
worker.tomcat1.host=localhost? #tomcat的主機地址,如不為本機,請填寫ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1?? #server的加權比重,值越高,分得的請求越多
#========tomcat2========
worker.tomcat2.port=9009?????? #ajp13 端口號,在tomcat下server.xml配置,默認8009
worker.tomcat2.host=localhost? #tomcat的主機地址,如不為本機,請填寫ip地址
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1?? #server的加權比重,值越高,分得的請求越多
#========controller,負載均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2?? #指定分擔請求的tomcat
worker.controller.sticky_session=1
4.修改tomcat配置文件server.xml
如果你在不同電腦上安裝tomcat,tomcat的安裝數量為一個,可以不必修改tomcat配置文件
我這里是在同一臺電腦上安裝兩個tomcat,所以需要更改其中一個的設置
打開tomcat2/conf/server.xml文件
?
5.編寫一個測試jsp
建立一個目錄test.里面新建一個test.jsp,內容為
<%
?? System.out.println("===========================");
%>
把test放到tomcat1,tomcat2的webapps下
6.啟動apache,tomcat1,tomcat2,進行測試
再刷新一次,tomcat2也打印了一條,再刷新,可以看到請求會被tomcat1,tomcat2輪流處理,實現了負載均衡
?
第二部分,配置集群
?? 只配置負載均衡還不行,還要session復制,也就是說其中任何一個tomcat的添加的session,是要同步復制到其它tomcat, 集群內的tomcat都有相同的session
1. 修改tomcat1, tomcat2的server.xml,將集群部分配置的在注釋符刪掉,并將tomcat2的4001端口改為4002,以避免與tomcat沖突,當然,如果是兩臺電腦,是不用改端口的,去掉注釋符即可
??
2,修改測試項目test
修改test.jsp,內容如下
? <%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%
? out.println("<br> ID " + session.getId()+"<br>");
? // 如果有新的 Session 屬性設置
? String dataName = request.getParameter("dataName");
? if (dataName != null && dataName.length() > 0) {
???? String dataValue = request.getParameter("dataValue");
???? session.setAttribute(dataName, dataValue);
? }
? out.print("<b>Session 列表</b>");
? Enumeration e = session.getAttributeNames();
? while (e.hasMoreElements()) {
???? String name = (String)e.nextElement();
???? String value = session.getAttribute(name).toString();
???? out.println( name + " = " + value+"<br>");
???????? System.out.println( name + " = " + value);
?? }
%>
? <form action="index.jsp" method="POST">
??? 名稱:<input type=text size=20 name="dataName">
???? <br>
??? 值:<input type=text size=20 name="dataValue">
???? <br>
??? <input type=submit>
?? </form>
</body>
</html>
然后在test 新建WEB-INF目錄,WEB-INF下新建web.xml,內容如下
注意:在你的應用的web.xml加入? <distributable/>即可
ok,講test復制到tomcat1,tomcat2的webapps下,重啟apache,tomcat1,tomcat2,
新建一個 名稱為 xiaoluo? ,值為 cdut 的session,提交查詢,新開一個ie窗口,再提交查詢,如圖,可以看到,兩個tomcat 是負載均衡,并且session同步的
?
?
(
1
)點擊文件
apache_2.0.48-win32-x86-no_ssl.msi
(
2
)安裝路徑為
D:/ JIANGXI/Apache Group/Apache2
說明:
A、
需要輸入
Network Domain
、
Server Name
和
Administrator's Email Address
在
“Network Domain”
里輸入域。如果用本站的二級域名,例如
“test.dnschek.net”
,請輸入
“test.dnschek.net”
。如果用頂級域名,請輸入
“xxx.com”
。
(
1166.jx163.com
)
在
“Server Name”
里輸入服務器名。如果用本站的二級域名,請輸入您的域名
“test.dnschek.net”
。如果用頂級域名,請輸入
“www.xxx.com”
。
在
“Administrator's Email Address”
里輸入網站管理員的
Email
地址。
B、
選擇典型安裝。
C、
其他
采用默認配置。
D、
如果系統安裝了其他
Web
服務器,如
IIS
、
WPS
等,占用了
80
端口的話,可以在
Apache
安裝的時候,選擇使用其他端口,如
8080
等。或者把
IIS
的所有
Web
站點停止。
?
1.1.2
??????
Modules
下添加.so文件
(
1
)下載
apache
的一個組件
Jakarta-tomcat-connectors-jk2.0.4-win32-apache2.0.49.zip
解壓縮后將
modules
目錄里面的
mod_jk2.so
文件,
copy
到
Apache
安裝目錄下
modules
文件夾里
。
需要注意參數配置如下:
(1)
在行
"# LoadModule foo_module modules/mod_foo.so",
加入如下行
:
# Load mod_jk
LoadModule jk_module modules/mod_jk.so
#
Configure mod_jkJkWorkersFile conf/workers.propertiesJkLogFile logs/mod_jk.logJkLogLevel info
?
(
2
)在參數
DocumentRoot
下加入如下行:
???
?JkMount /* loadbalancer
(
3
)編輯
Apache\Apache Group\Apache2\conf\
目錄下的
httpd.conf
文件,找到
ServerName
這一項參數,這一行是被注釋掉的(前面有#的符號)。去掉前面的在
"#"
符號,并在后面填入你的
hostname
或
IP
地址,在這里設置為:
ServerName
1166.jx163.com:80
說明:詳細的配置信息,參見
.\4-WEB\Apache\Apache Group\Apache2\conf\httpd.conf
1.1.4?????????
配置參數
workers.properties
(
1
)
定義
Workers
列表:
# list the workers by name
worker.list=tomcat1, tomcat2, tomcat3,? loadbalancer
?
(
2
)
定義
Workers
的類型:
# First tomcat server
worker.tomcat1.port=
8009??????
(
Tomcat worker
主機的偵聽端口。
)
worker.tomcat1.host=
127.0.0.1??
(
偵聽
ajp13
請求的
Tomcat worker
主機
)
worker.tomcat1.type=
ajp13????
(說明:
其使用
ajpv13
協議與
Tomcat
進程通訊
)
?
# Specify the size of the open connection cache.
worker.tomcat1.cachesize=
1000
(
當在多線程的
web server
(例如
apache2.0
、
IIS
、
Netscape
)中使用
JK
時,此屬性是有效的。如果將
cachesize
的值設置為較高的值,這些支持多線程的
web server
將獲得很好的處理能力。如果此屬性不被設置,則連接
cache
特性將失效。
)
#
# Specifies the load balance factor when used with
# a load balancing worker.
# Note:
#? ----> lbfactor must be > 0
#? ----> Low lbfactor means less work done by the worker.
worker.tomcat1.lbfactor=
100
(
當此
Tomcat worker
被用于一個負載平衡
worker
使用時,此屬性將被使用。它定義了此
worker
的負載平衡權值。
)
(2)??????
Second
和
3th
的
tomcat server
配置跟
First tomcat server
類似,區別的地方:
Second
和
3th
的
worker.tomcat1.port
分別為:
8019
、
8029
(
5
)
定義一個名為
“loadbalancer”
的
worker
,其作為對多個
Tomcat
進程的負載平衡使用:
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=tomcat1, tomcat2, tomcat3
(
負載平衡類型的
worker
并不與
Tomcat worker
通訊,它負責管理這些
Tomcat worker
。
)
說明:為保障平臺的穩定運行,系統提供
3
個
tomcat
(命名
webserver-1
,
webserver-2
,
webserver-3
)運行。
??
(
1
)在
D:/ JIANGXI/
下創建
webserver-1
文件夾。
(
2
)將“
5-WEB/1-Tomcat
”下的文件復制到
D:/ JIANGXI/webserver-1
。要求
Tomcat5.0
版本。
l????????
打開文件“
..\ 5-WEB\1-Tomcat\conf\server.xml
”
l????????
(
1
)
3
個
Tomcat
的
server.xml
配置需要注意項目如下:
A
、
Change the control port
:
配置服務器監聽
shutdown
命令的端口
Port
:
SHUTDOWN
,
3
個
Tomcat
分別為:
<Server port="8035" shutdown="SHUTDOWN" debug="0">
<Server port="8045" shutdown="SHUTDOWN" debug="0">
<Server port="8055" shutdown="SHUTDOWN" debug="0">
?
A、
定義
Tomcat
的標準獨立服務
Service
,
3
個
Tomcat
分別為:
<Service name="tomcat1">
<Service name="tomcat2">
<Service name="tomcat3">
?
C
、定義非
SSL
的
HTTP/1.1
連接器
Connector
:
?<Connector?port="XXXX"
???????????????maxThreads="150"?minSpareThreads="25"?maxSpareThreads="75"
???????????????enableLookups="false"?redirectPort="8443"?acceptCount="100"
???????????????debug="0"?connectionTimeout="20000"?
???????????????disableUploadTimeout="true"?/>
?
XXXX
對應
3
個
Tomcat
分別設置為:
8060
、
8070
、
8080
?
D
、
Change the AJP13 port
:
定義
Coyote/JK2?AJP?1.3
連接器
Connector
:
<Connector port=" XXXX"
?????????????? enableLookups="false" redirectPort="YYYY" debug="0"
?????????????? protocol="AJP/1.3" maxThreads="1100" minSpareThreads="25" maxSpareThreads="100"? acceptCount="0"/>
YYYY
對應
3
個
Tomcat
分別設置為:
8009
、
8019
、
8029
YYYY
對應
3
個
Tomcat
分別設置為:
8443
、
8453
、
8463
?
E
、
Add a unique jvmRoute to the Catalina engine
:
設置容器體系中最高級別的容器,各個
Tomcat
跟
B
項的設置對應,
3
個
Tomcat
分別為:
將
<Engine name="Standalone" defaultHost="localhost" debug="0">
替換為:
<Engine jvmRoute="tomcat1" name="Standalone" defaultHost="localhost" debug="0">
<Engine jvmRoute="tomcat2" name="Standalone" defaultHost="localhost" debug="0">
<Engine jvmRoute="tomcat3" name="Standalone" defaultHost="localhost" debug="0">
?
F
、設置用戶圖片、用戶上傳雜志圖片存放目錄。
3
個
Tomcat
配置相同:
<Context path="/faceImage" docBase="D:\jiangxi\uploadimages\faceImage" debug="0" reloadable="false" crossContext="true">
</Context>? ? ?
<Context path="/magazineImage" docBase="D:\jiangxi\uploadimages\magazineImage" debug="0" reloadable="false" crossContext="true">
</Context>?
?
G
、此外需要的其他配置項有:
監聽器:
Listener
全局
JNDI
資源:
?GlobalNamingResources
全局日志設置,除非在更低的級別上覆蓋它的設置
?
:
Logger
配置:
Realm
定義默認的虛擬主機
:
Host
屏蔽:
A
、
屏蔽
WARP connector
?????? B
、屏蔽
standalone HTTP port
??
F
、
server.xml
配置全文:
<Server port="8035" shutdown="SHUTDOWN" debug="0">
? <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
??????????? debug="0"/>
? <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
????????? debug="0"/>
? <!-- Global JNDI resources -->
? <GlobalNamingResources>
??? <!-- Test entry for demonstration purposes -->
??? <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
??? <!-- Editable user database that can also be used by
???????? UserDatabaseRealm to authenticate users -->
??? <Resource name="UserDatabase" auth="Container"
????????????? type="org.apache.catalina.UserDatabase"
?????? description="User database that can be updated and saved">
??? </Resource>
??? <ResourceParams name="UserDatabase">
????? <parameter>
??????? <name>factory</name>
??????? <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
????? </parameter>
????? <parameter>
??????? <name>pathname</name>
??????? <value>conf/tomcat-users.xml</value>
????? </parameter>
??? </ResourceParams>
? </GlobalNamingResources>
? <!-- Define the Tomcat Stand-Alone Service -->
? <Service name="tomcat1">
??? <!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->
??? <Connector port="8080"
?????????????? maxThreads="800" minSpareThreads="25" maxSpareThreads="100"
?????????????? enableLookups="false" redirectPort="8443" acceptCount="0"
?????????????? debug="0" connectionTimeout="20000"
?????????????? disableUploadTimeout="true" />
?<!--Connector port="8443"??????????????
? maxThreads="150" minSpareThreads="25" maxSpareThreads="75"????????????? ?
? enableLookups="false" disableUploadTimeout="true"??????????????
? acceptCount="100" debug="0" scheme="https" secure="true"??????????????
? clientAuth="false" sslProtocol="TLS"???????????????
? keystoreFile="conf\.keystore"???????????????
? keystorePass="changeit" /-->
??? <!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
???? <Connector port="8009"
?????????????? enableLookups="false" redirectPort="8443" debug="0"
?????????????? protocol="AJP/1.3" maxThreads="1100" minSpareThreads="25" maxSpareThreads="100"? acceptCount="0"/>
??? <!-- You should set jvmRoute to support load-balancing via JK/JK2 ie :
??? <Engine name="Standalone" defaultHost="localhost" debug="0" jvmRoute="jvm1">????????
??? -->
??? <!-- Define the top level container in our container hierarchy -->
??? <Engine jvmRoute="tomcat1" name="Standalone" defaultHost="localhost" debug="0">
????? <!-- Global logger unless overridden at lower levels -->
????? <Logger className="org.apache.catalina.logger.FileLogger"
????????????? prefix="catalina_log." suffix=".txt"
????????????? timestamp="true"/>
????? <!-- This Realm uses the UserDatabase configured in the global JNDI
?????????? resources under the key "UserDatabase".? Any edits
?????????? that are performed against this UserDatabase are immediately
?????????? available for use by the Realm.? -->
????? <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
???????????????? debug="0" resourceName="UserDatabase"/>
????? <!-- Define the default virtual host
?????????? Note: XML Schema validation will not work with Xerces 2.2.
?????? -->
????? <Host name="localhost" debug="0" appBase="webapps"
?????? unpackWARs="true" autoDeploy="true"
?????? xmlValidation="false" xmlNamespaceAware="false">
?????? <!-- <Logger className="org.apache.catalina.logger.FileLogger"
???????????????? directory="logs"? prefix="localhost_log." suffix=".txt"
??????????? timestamp="true"/>? -->
????? <Context path="/faceImage" docBase="D:\jiangxi\uploadimages\faceImage" debug="0" reloadable="false" crossContext="true">
????? </Context>? ???? ?
??????
?? <Context path="/magazineImage" docBase="D:\jiangxi\uploadimages\magazineImage" debug="0" reloadable="false" crossContext="true">
????? </Context>?
????? </Host>
??? </Engine>
? </Service>
</Server>
apache+tomcat配置負載均衡的網站
???????????????在網上找了一些文檔,還是覺得不是很清楚,自己走了些彎路,才把這個配置好,還是寫下來吧,以備后查。
1.??
目標
使用
apache
和
tomcat
配置一個可以應用的
web
網站,要達到以下要求:
1、?
Apache
做為
HttpServer
,后面連接多個
tomcat
應用實例,并進行負載均衡。
2、?
為系統設定
Session
超時時間,包括
Apache
和
tomcat
3、?
為系統屏蔽文件列表,包括
Apache
和
tomcat
2.??
安裝
tomcat
2.1.
下載,解壓
tomcat
不要下載安裝版
,
下載地址
http://tomcat.apache.org
2.2.
配置
tomcat
2.2.1. ???
配置
server
的關閉口
我們需要在一臺機器上跑
2
個不同的
tomcat
,需要修改不同的
tomcat
的關閉口,避免出現端口被占用的情況。在
server.xml
中找到
server,
將:
改為
XXXX
" shutdown="SHUTDOWN">
XXXX
在這里表示不同的端口:我的兩個
tomcat
分別使用
8035
,
8045
?
注意:這里之所以要配置不同的
tomcat
關閉口,只是因為我們使用了多個
tomcat
,其實用一個
server
多個實例也可以。
2.2.2. ???
配置
service
我們需要對不同的
tomcat
的
service
取不同的名字,在
server.xml
中找到:
改為:
XXXX
">
兩個
service
分別為
tomcat6
和
tomcat5
2.2.3. ???
配置
Connector
這個部分主要是要改兩個
Connector
,當然前提是你的
tomcat
只有兩個
Connector
。
修改
ajp1.3
的端口:
找到:
改為:
XXXX
" protocol="AJP/1.3" redirectPort="8443" />
兩個
Service
的
ajp/1.3
的端口分別為:
8019
,
8029
修改
http
的端口:
找到:
?????????????? maxThreads="150" connectionTimeout="20000"
?????????????? redirectPort="8443" />
改為:
XXXX
" protocol="HTTP/1.1"
?????????????? maxThreads="150" connectionTimeout="20000"
?????????????? redirectPort="8443" />
兩個
Service
的
ajp/1.3
的端口分別為:
8060
,
8070
2.2.4. ???
配置
Engine
Engine
主要是配置
jvmRoute
屬性,找到:
改為:
兩個實例分別為:
tomcat6
和
tomcat5.
2.2.5. ???
配置公用性
Context
如果有
Context
是多個系統公用的,比如圖片等的存放地,可以做個配置:
在
Host
中增加:
2.2.6. ???
屏蔽文件列表
打開
tomcat
目錄下的
conf/web.xml
,
找到:
???????
default
???????
org.apache.catalina.servlets.DefaultServlet
???????
???????????
debug
???????????
0
???????
???????
???????????
listings
???????????
true
???????
???????
1
???
將
listings
參數改為
false;
2.3.
配置應用
(web.xml)
對系統應用做些控制。
配置
session
過期時間,大多數網站用戶都只是做些瀏覽性的操作,為了減輕服務器負載壓力,我們將
session
超時時間從默認的
30
分鐘變為
5
分鐘。
在
web
應用程序的
web.xml
中
servlet-mapping
之后增加如下一段:
???
5
3.??
安裝
Apache
3.1.
下載、安裝
Apache
下載地址
http://httpd.apache.org/download.cgi
下載后點擊安裝
msi
文件。
安裝的時候沒有什么特別需要注意的地方,按照默認就行了。是否安裝為
service
看具體情況而定。
3.2.
下載、安裝
Apache
、
tomcat
的
Connector
http://tomcat.apache.org/download-connectors.cgi
注意,很多網站上都介紹是
JK2
,可能是覺得
JK2
比
JK
要新吧,其實
JK2
已經停止研發了,建議使用
jk1.2
。
下載壓縮包,之后將
module
目錄中的
mod_jk-apache****.so
文件放入
/module/
目錄下。
3.3.
配置
Apache
(
httpd.conf
)
3.3.1. ???
配置端口:
找到
Listen 80
改為
Listen **
當然如果不需要改的話,就不用改了。正常情況無須更改。
3.3.2. ???
配置
DocumentRoot
找到
DocumentRoot
段,將其改為:
DocumentRoot "E:/MyWebsite"
這里的
"E:/MyWebsite"
指的是你的
web
程序的根路徑,視具體應用而定。
3.3.3. ???
配置
serverName
找到
serverName
這個段,將其配置為你的
ServerName
如果沒有配置為域名,配為
IP
也可以,此處還不是很清楚,多虛擬主機的情況的配置。
3.3.4. ???
配置虛擬主機
??? ServerAdmin flyffa@gmail.com
??? DocumentRoot?????? E:/MyWebsite
??? ServerName localhost
??? DirectoryIndex index.html index.htm index.jsp
??? ErrorLog logs/error_log
??? CustomLog logs/access_log common
??? ErrorDocument 404 /sys/logon.jsp
3.4.
配置
JK
方式的負載均衡
3.4.1. ???
配置
module
我們需要與
tomcat
做連接,所以要把
tomcat
的
connector
的模塊配置進去。
在
LoadModule
部分加入:
LoadModule jk_module modules/mod_jk-apache-2.0.55.so
-加載模塊
這個
so
是我下載的版本,個人可以根據自己下載的文件名加以配置
JkWorkersFile conf/workers.properties
-指定
connector
的配置文件名稱
JkLogFile logs/mod_jk.log
-指定
connector
的日志文件名稱
JkLogLevel info
-指定
connector
的日志等級
3.4.2. ???
配置
worker
列表
(conf/workers.properties)
定義列表
worker.list=tomcat6,tomcat5,loadbalancer
定義一個名為
“loadbalancer”
的
worker
其作為對多個
Tomcat
進程的負載平衡使用:
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=tomcat5, tomcat6
(
負載平衡類型的
worker
并不與
Tomcat worker
通訊,它負責管理這些
Tomcat worker
。
)
定義多個
worker
列表
# Set properties for tomcat6 (ajp13)
worker.tomcat6.type=ajp13
worker.tomcat6.host=localhost
worker.tomcat6.port=8019
worker.tomcat6.lbfactor=50
worker.tomcat6.cachesize=10
worker.tomcat6.cache_timeout=600
worker.tomcat6.socket_keepalive=1
worker.tomcat6.reclycle_timeout=300
?
# Set properties for tomcat5 (ajp13)
worker.tomcat5.type=ajp13
worker.tomcat5.host=localhost
worker.tomcat5.port=8029
worker.tomcat5.lbfactor=50
worker.tomcat5.cachesize=10
worker.tomcat5.cache_timeout=600
worker.tomcat5.socket_keepalive=1
worker.tomcat5.reclycle_timeout=300
注意:
lbfactor=
50
(
當此
Tomcat worker
被用于一個負載平衡
worker
使用時,此屬性將被使用。它定義了此
worker
的負載平衡權值。
)
cachesize=
10
(
當在多線程的
web server
(例如
apache2.0
、
IIS
、
Netscape
)中使用
JK
時,此屬性是有效的。如果將
cachesize
的值設置為較高的值,這些支持多線程的
web server
將獲得很好的處理能力。如果此屬性不被設置,則連接
cache
特性將失效。
)
3.4.3. ???
配置
Apache
到
tomcat
的橋接
在
DocumnetRoot
片段下加入
JkMount /*.jsp tomcat6
JkMount /*.do tomcat6
JkMount /*Servlet tomcat6
這里只是簡單的將
apache
的請求轉到其中的一個
tomcat
中,形成橋接,至于負載均衡的時候,就無須進行這步操作,直接啟動負載均衡。啟動負載均衡見下一節。
3.4.4. ???
啟動負載均衡
在
DocumnetRoot
片段下加入
JkMount /*.jsp loadbalancer
JkMount /*.do loadbalancer
JkMount /*Servlet loadbalancer
-指定對所有的請求啟動負載均衡,這里的
loadbalancer
是定義的
worker
的名字
這里我在配置的時候犯了兩個錯誤:
第一是沒有配置
JkWorkersFile conf/workers.properties
,以為
Apache
會自動認識(其實
apache
是自動產生了一個叫做
ajp13
的
worker
,指向本機的
8009
端口)。
第二是以為
JkMount
語句中出現
loadbalancer,ajp13
之類的是系統設定的東西,其實都是在
workers.properties
文件中定義的,結果出現名字不匹配的情況。后來配置了
JkLogFile logs/mod_jk.log
之后看到錯誤日志才明白。
3.5.
配置
Proxy
方式的負載均衡
使用
Apache2.1
以上的版本,就可以用
mod_proxy_ajp
來完成負載均衡的配置,不過到目前為止,沒有看到如何讓
Apache
負責靜態部分,
tomcat
負責動態部分的配置方式,只能用
path
進行區分分發請求。如:在虛擬主機的配置中增加:
ProxyPass / ajp://localhost:8019/
ProxyPassReverse / ajp://localhost:8019/
而形如:
ProxyPass /*.jsp ajp://localhost:8019/
ProxyPassReverse /*.jsp ajp://localhost:8019/
這樣的配置是不能通過的。
請高手指教。