系統環境設置
- 準備三臺redhat linux 5或 centos服務器:
- 負載均衡服務器:Apache安裝自帶的web發佈服務(httpd服務) IP地址:192.168.0.100
- Tomcat發佈服務器1:安裝有兩個發佈服務tomcat1和tomcat2 IP地址:192.168.0.101
- Tomcat發佈服務器2:安裝有兩個發佈服務tomcat3和tomcat4 IP地址:192.168.0.102
- 統一對外部發布的地址是:http://192.168.0.100 (即負載均衡地址)
- 在設定完成IP之後,最好先設置主機名和IP的對應關係:
1css 2html 3前端 4java |
cat /etc/hosts node 192.168.0.100 web.example.com web #add linux 127.0.0.1 localhost.localdomain localhost nginx ::1 localhost6.localdomain6 localhost6 git |
Tomcat發佈器的安裝
JDK安裝
- JDK軟件最新版下載:http://www.oracle.com/technetwork/java/javase/downloads/index.html
- 點擊排列的最左邊一個大圖標的「JDK」進入,
- 接下來選擇服務器的版本(如linux),在「I agree」前面方框中打勾選中,再按「continue」下一步
- 選擇下面一個版本進行下載,如jdk-6u24-linux-i586.bin
- 下載完成後上傳到web服務器上的「/tools」目錄下(本身建的目錄)
- JDK軟件的安裝
1github 2web 3 4 5 6 7 8 9 10 11 12 |
# 先查看當前JDK的版本是多少 java –version # 進入下載目錄,受權JDK文件的可執行權限 cd /tools/ chmod a+x jdk-6u24-linux-i586.bin # 執行JDK的安裝解壓縮,完成後按回車結束 . /jdk-6u24-linux-i586 .bin # 把解壓出來的目錄移動到/usr/local下面 mv jdk1.6.0_24 /usr/local/ |
- 配置JAVA的環境變量
- 新建環境變量文件java.sh
1 2 3 4 5 6 7 |
cat > /etc/profile .d /java .sh <<EOF # set java environment export JAVA_HOME= /usr/local/jdk1 .6.0_24 export CLASSPATH=.:\$JAVA_HOME /lib/dt .jar:\$JAVA_HOME /lib/tools .jar export PATH=\$JAVA_HOME /bin :\$PATH EOF chmod a+x /etc/profile .d /java .sh |
- 從新登陸終端,再次查詢java的版本號是否升級了:
java -version
- Tomcat軟件最新版下載:http://tomcat.apache.org/
(1)先選擇Download下面的tomcat版本(如tomcat 7.0) (2)再點擊「Core」下面的「tar.gz」進行下載,如apache-tomcat-7.0.12.tar.gz (3)下載完成後上傳到web服務器上的「/tools」目錄下(本身建的目錄)
Tomcat安裝
- 安裝tomcat
1 2 3 4 5 6 7 8 9 10 |
# 進入下載目錄,進行解壓縮: cd /tools tar zxvf apache-tomcat-7.0.12. tar .gz # 複製並重命名目錄到/usr/lcoal下面 ls -l cp apache-tomcat-7.0.12 /usr/local/tomcat1 #(web1服務器) cp apache-tomcat-7.0.12 /usr/local/tomcat2 #(web1服務器) cp apache-tomcat-7.0.12 /usr/local/tomcat3 #(web2服務器) cp apache-tomcat-7.0.12 /usr/local/tomcat4 #(web2服務器) |
- 配置tomcat發佈器的端口
- web1服務器tomcat1:vi tomcat1/conf/server.xml(修改以下四個地方:)
1 2 3 4 5 |
< Server port = "8005" shutdown = "SHUTDOWN" > <!--'8005'改成'8001'端口--> < Connector port = "8080" protocol = "HTTP/1.1" > <!--'8080'發佈端口改成'81'端口--> < Connector port = "8009" protocol = "AJP/1.3" redirectPort = "8443" /> <!--改成'8011'端口--> <!--Engine name="Catalina" defaultHost="localhost"--> < Engine name = "Catalina" defaultHost = "localhost" jvmRoute = "tomcat1" > |
- web1服務器tomcat2:port:8002, http:82, ajp:8012, jvmRote:tomcat2
- web1服務器tomcat3:port:8003, http:83, ajp:8013, jvmRote:tomcat3
- web1服務器tomcat4:port:8004, http:84, ajp:8014, jvmRote:tomcat4
- 在tomcat的server.xml配置參數據中增長session同步複製的設置
- vi server.xml (增長下列代碼,增長Engine後面的cluster中去)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<!-- <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> --> <!--下面的代碼是實現session複製功能--> < Cluster className = "org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions = "6" > < Manager className = "org.apache.catalina.ha.session.BackupManager" expireSessionsOnShutdown = "false" notifyListenersOnReplication = "true" mapSendOptions = "6" /> < Channel className = "org.apache.catalina.tribes.group.GroupChannel" > < Membership className = "org.apache.catalina.tribes.membership.McastService" address = "228.0.0.4" port = "45564" frequency = "500" dropTime = "3000" /> < Receiver className = "org.apache.catalina.tribes.transport.nio.NioReceiver" address = "192.168.100.63" <!—這裏填寫本機IP地址--> port="5000" selectorTimeout="100" /> < Sender className = "org.apache.catalina.tribes.transport.ReplicationTransmitter" > < Transport className = "org.apache.catalina.tribes.transport.nio.PooledParallelSender" /> </ Sender > < Interceptor className = "org.apache.catalina.tribes.group.interceptors.TcpFailureDetector" /> < Interceptor className = "org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor" /> < Interceptor className = "org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor" /> </ Channel > < Valve className = "org.apache.catalina.ha.tcp.ReplicationValve" filter = ".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;" /> < Valve className = "org.apache.catalina.ha.session.JvmRouteBinderValve" /> < Deployer className = "org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir = "/tmp/war-temp/" deployDir = "/tmp/war-deploy/" watchDir = "/tmp/war-listen/" watchEnabled = "false" /> < ClusterListener className = "org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener" /> < ClusterListener className = "org.apache.catalina.ha.session.ClusterSessionListener" /> </ Cluster > |
- 同時須要修改tomcat的web.xml配置參數才能真正實現session同步複製的設置
- web.xml
1 2 3 4 5 6 7 8 |
<!--....--!> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <distributable /> <!--在倒數第二行增長這個代碼才能實現session同步複製功能--> </ web-app > |
- 設置Tomcat發佈服務開機自啓動
- 複製tomcat啓動文件到開機目錄下:
cp tomcat1/bin/catalina.sh /etc/rc.d/init.d/tomcat1
- 修改上面的tomcat1啓動文件:vim /etc/rc.d/init.d/tomcat1(在文件的最頂上添加下列幾行)
#chkconfig:35 85 15
#description:tomcat1 server
CATALINA_HOME=/usr/local/tomcat1
JRE_HOME=/usr/local/jdk1.6.0_24
- 添加tomcat1到開機啓動服務
chkconfig --add tomcat1
chkconfig --list tomcat1
chkconfig tomcat1 on
service tomcat1 start
- 其它三個tomcat2 、tomcat3 、tomcat4 也都按上面三步來作
- 如何查看tomcat的啓動過程
- 方法一:用catalina.sh來啓動:
./catalina.sh run
- 方法二:若是用
./startup.sh
啓動的話,查看啓動日誌tail –f /usr/local/tomcat4/logs/catalina.out
Apache Proxy負載均衡
- Apache發佈器使用系統自帶的httpd服務,在安裝操做系統的時候先選擇好服務器下面的web服務器組件。
- 修改配置web發佈服務的參數文件:
- vim /etc/httpd/conf/httpd.conf (在最底下添加以下內容)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
ServerName localhost:80 #發佈的端口說明 <VirtualHost *:80> ServerAdmin admin@china1168.com ServerName localhost ServerAlias localhost <proxy balancer: //testcluster > #testcluster可本身命名,沒什麼特別的意義 BalancerMember ajp: //192 .168.0.101:8011 loadfactor=1 route=tomcat1 #要與tomcat中的ajp對應 BalancerMember ajp: //192 .168.0.101:8012 loadfactor=1 route=tomcat2 BalancerMember ajp: //192 .168.0.102:8013 loadfactor=1 route=tomcat3 BalancerMember ajp: //192 .168.0.104:8014 loadfactor=1 route=tomcat4 < /proxy > ProxyRequests Off ProxyPass /server-status ! ProxyPass /balancer-manager ! ProxyPass / balancer: //testcluster/ stickysession=JSESSIONID #注意balancer前面有空格 ProxyPassReverse / balancer: //testcluster/ #注意balancer前面有空格 < /VirtualHost > <Location /server-status > #負載均衡服務器的狀態查詢,http://192.168.0.100/server-status SetHandler server-status < /Location > <Location /balancer-manager > #負載均衡服務器的管理查看,http://192.168.0.100/balancer-manager SetHandler balancer-manager < /Location > |
- 負載均衡集羣測試實例
- 在tomcat目錄下面的webapps文件夾中新建test測試文件:
- mkdir webapps/test
- vi test/index.jsp(文件內容以下)
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
request.setCharacterEncoding("UTF-8");
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>
- 對Apache負載均衡進行測試:
- 正常狀況下,提交的測試內容會在四個tomcat之間輪循顯示,實現負載均衡。
- 設置Apache發佈服務開機自啓動:
chkconfig httpd on
Nginx負載均衡
nginx安裝
- 安裝前必需要先下載相關聯的配套軟件包:
- 相關聯軟件的安裝
- pcre套件的安裝,進入下載目錄,進行解壓縮:
1 2 3 4 5 |
cd /tools tar zxvf pcre-8.12. tar .gz cd pcre-8.12 . /configure #默認是安裝在/usr/local/目錄下面,也可指定目錄加參數 --prefix=/usr/local/ make && make install |
- openssl套件的安裝,進入下載目錄,進行解壓縮(可選)
1 2 3 4 5 |
cd /tools tar zxvf openssl-1.0.0d. tar .gz cd openssl-1.0.0d . /configure # 默認是安裝在/usr/local/目錄下面,也可指定目錄加參數 --prefix=/usr/local/ make && make install |
- Nginx軟件的安裝和配置
1 2 3 4 5 |
cd /tools tar zxvf nginx-1.0.0. tar .gz cd nginx-1.0.0 . /configure #默認是安裝在/usr/local/目錄下面,也可指定目錄加參數 --prefix=/usr/local/ make && make install |
- 測試安裝是否成功
1 2 3 4 5 |
cd /usr/local/nginx/sbin/ . /nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx .conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx .conf test is successful |
nginx負載配置
- vim /usr/local/nginx/conf/nginx.conf (修改增長下面的內容)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
pid logs /nginx .pid; upstream tomcat { # 負載均衡站點的名稱爲tomcat,能夠本身取 ip_hash; # 可選,根據來源IP方式選擇web服務器,省略的話按默認的輪循方式選擇web服務器 server 192.168.0.101:81; # web服務器的IP地址及tomcat發佈端口 server 192.168.0.101:82; server 192.168.0.102:83; server 192.168.0.102:84; } server { listen 80; # 站點偵聽端口80 server_name localhost; # 站點名稱 location / { root html; index index.html index.htm; proxy_pass http: //tomcat ; # 負載均衡指向的發佈服務tomcat } |
- 注意:
upstream
部分要放在server { listen 80
這部分的前面,不能放到下面去,否則會出錯
proxy_pass
部分要放在localtion這部分的括號裏面,且http://
後面跟的名稱要與上面upstream
中同樣
- 啓動負載均衡服務
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
cd /usr/local/nginx/sbin/ . /nginx -t # 測試配置有無錯誤 . /nginx # 啓動服務 netstat -tlnp | grep :80 #查看nginx端口的進程號 kill -9 11274 #殺死nginx的主進程,11274是上面查詢出來的主進程號,實際環境中不必定同樣 # 在線修改配置參數(在nginx啓動的狀況),並讓它從新加載,其間nginx不用中止服務。 vi nginx.conf kill -HUP ` cat /usr/local/nginx/logs/nginx .pid` # 設置Nginx開機自動啓動 vim /etc/rc .d /init .d /nginx ,增長內容 #chkconfig:35 80 10 #description:Nginx server /usr/local/nginx/sbin/nginx chmod a+x nginx chkconfig --add nginx chkconfig nginx on |
Tomcat與Apache或Nginx鏈接和集羣配置
Tomcat的鏈接方式
- 官方文檔參考:http://tomcat.apache.org/tomcat-7.0-doc/connectors.html
- Tomcat與Web服務器的鏈接方式有兩種:
- HTTP: HTTP鏈接器是Tomcat默認的方式,而且已經被使用。這種方式具備最低的延遲和最佳的總體性能。對於集羣,須要一個支持粘性會話的web服務器在Tomcat前端。Tomcat支持mod_porxy(被默認包含在Apache HTTP Server 2.2)做爲負載平衡器。值得注意的是,一般狀況下HTTP proxy的性能低於AJP的性能,因此集羣時AJP是優選。
- AJP: 單個服務器,一個本地WEB服務器和一個Tomcat實例鏈接的效率一般低於單個Tomcat使用其默認的HTTP鏈接的方式,即便web應用大部分都是靜態內容。若是爲了某種緣由,你須要整合一個本地WEB服務器,那麼AJP鏈接將提供更好的效率。對於Tomcat集羣,AJP鏈接是最有效的,其餘功能和HTTP集羣同樣。
Tomcat7所支持的本地鏈接:
- JK 1.2 .x
- mod_proxy (Apache HTTP Server 2.2默認包含)
其餘AJP鏈接器可能能夠工做,但再也不維護。
Tomcat 與 Apache HTTP Server2.4鏈接
HTTP鏈接
從上面的說明能夠看出,若是你只須要一個Tomcat,那就直接用就行了,不用和Apache HTTP Server鏈接。若是須要多個Tomcat集羣,就是AJP鏈接。因此用HTTP鏈接Apache和Tomcat這種狀況應該很少,簡單說明一下怎麼鏈接: 取消兩個module的註釋:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
在httpd.conf文件中添加如下兩行:
ProxyPass /webappname http://ip:8080/webappname
ProxyPassReverse /webappname http://ip:8080/webappname
ip、端口號和webappname根據實際狀況修改
說明:上述寫法可能有安全隱患。不要使用ProxyRequests啓用代理,除非對代理作了權限控制。不然對你的網絡和互聯網都是很大的危險。默認ProxyRequests爲off。
參考:http://httpd.apache.org/docs/2.4/mod/mod_proxy.html#access
AJP鏈接
AJP鏈接官方支持兩種方式JK 1.2.x和mod_proxy。
JK是老牌鏈接器,被普遍使用和驗證,值得信任,可是配置比較複雜。
mod_proxy是Apache2.2之後的默認設置,配置簡單,可是由於比較新,因此沒有通過大範圍的驗證。
網上JK的文檔比較多,這裏咱們介紹一下mod_proxy的寫法。其實跟HTTP的方式同樣,只是把http://
修改成ajp://
就能夠了。
取消兩個module的註釋
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
在httpd.conf文件中添加如下行:
ProxyPass /webappname ajp://ip:8009/webappname
ip、端口號和webappname根據實際狀況修改
AJP鏈接一般不須要設置ProxyPassReverse。
參考:http://httpd.apache.org/docs/2.4/mod/mod_proxy_ajp.html
Apache HTTP Server2.4集羣配置
如文章開始所述,Apache Http Server和Tomcat集羣要用AJP方式鏈接
一樣集羣能夠用JK和mod_proxy兩種方式,這裏介紹mod_proxy的方式:
取消五個module的註釋
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 slotmem_shm_module modules/mod_slotmem_shm.so
LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
根據負載均衡調度策略的不一樣,取消以下module的註釋
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
- 示例配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<Proxy balancer: //mycluster > #定義一個集羣,起個名字 #定義集羣成員。loadfactor是權重,數值越大權重越大被分配的請求約多。route和Tomcat中配置的jvmRoute一至。 #還有一些參數能夠添加,好比:max=20 ttl=120 retry=300 timeout=15,詳細參考:http://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypass BalancerMember ajp: //ip :8019 loadfactor=1 route=tomcat7_a BalancerMember ajp: //ip :8029 loadfactor=2 route=tomcat7_b #熱備服務器,只有在上面的BalancerMember都壞掉以後纔會被啓用。 BalancerMember ajp: //ip :8009 status=+H #現有3種負載均衡調度策略 #byrequests:請求計數(Request Counting) #bytraffic:流量加權計數(Weighted Traffic Counting) #bybusyness:掛起請求計數(Pending Request Counting) #默認是byrequests ProxySet lbmethod=bytraffic < /Proxy > ProxyPass /examples balancer: //mycluster/examples #設置代理鏈接 |
- 負載均衡器的粘性
當一個請求被代理到某個節點,接下來同一個用戶的請求都將被代理到相同的節點。不少均衡器經過一張記錄客戶端ip和節點的關係表來實現這個特性。這種方式對客戶端和節點都是透明的,可是存在一些問題:若是客戶端藏在某些代理以後將致使負載分佈不均,當客戶端使用動態IP地址,並在請求間變動,將失去粘性,關係表溢出將致使錯誤等問題。
mod_proxy_balancer經過兩種方式實現粘性:cookies和URL encoding。cookie能夠被Apache服務器和節點使用,URL encoding一般在節點中使用。
下面的例子使用mod_headers提供負載均衡粘性,即便節點服務器沒有設置合適的session cookie。
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://mycluster>
......
</Proxy>
ProxyPass /test balancer://mycluster
env變量有6種,參考:http://httpd.apache.org/docs/2.4/mod/mod_proxy_balancer.html#environment
如下配置同時支持cookies和URL encoding
ProxyPass /test balacer://mycluuster stickysession=JSESSIONID|jsessionid scolonpathdelim=On
<Proxy balancer://mycluster>
BlancerMember http://192.168.1.50:80 route=node1
BlancerMember http://192.168.1.51:80 route=node2
</Proxy>
將集羣的日誌寫到Apache服務器目錄下的logs/balance_log文件中。
參考:http://httpd.apache.org/docs/2.4/mod/mod_proxy_balancer.html#stickyness_troubleshooting
須要mod_status。管理頁面能夠動態更新集羣成員,修改平衡器的屬性和特定成員或使之離線。
<Location /balancer-manager>
SetHandler balancer-manager
Require ip 192.168
</Location>
你能夠經過http://your.server.name/balancer-manager
訪問管理頁面。
注意,只有balancers在<Location ...>以外定義,才能使用管理頁面。
Tomcat 與 Nginx鏈接
HTTP鏈接
1 2 3 4 5 6 7 8 |
server { #添加一個站點 listen 82; #設置端口 server_name localhost; #站點名稱/域名 location / { #設置路徑 proxy_pass http: //ip :8080; #http代理,指向tomcat http地址 } } |
在nginx.conf文件中添加一個server{},listen設置端口,server_name設置域名,location設置目錄。
proxy_pass是http代理,指向tomcat地址。
修改後conf後,nginx -s reload就能夠熱更新了,很方便。
AJP鏈接
關於AJP鏈接,有一種說法是Nginx採用鏈接池,因此HTTP方式的鏈接不比AJP方式差。
有人的測試結果是Nginx經過HTTP鏈接Tomcat 性能略強於Apache經過AJP鏈接Tomcat。
參見:http://nginx.2469901.n2.nabble.com/AJP-td7582236.html
Nginx自己並不支持AJP鏈接,但有人寫了一個nginx_ajp_module來支持ajp。因爲是第三方控件,因此請在充分測試後使用。
先到nginx安裝文件的目錄下,打ajp補丁,從新配置configure,編輯,安裝。
- 配置nginx.conf文件
1 2 3 4 5 6 7 8 9 |
server { listen 82; server_name localhost; location / { ajp_keep_conn on; #設置是否保持鏈接 ajp_pass ajp: //ip :8009; #Tomcat ajp鏈接地址和端口 } } |
其餘配置詳情參考:https://github.com/yaoweibin/nginx_ajp_module
Nginx集羣配置
HTTP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
upstream tomcat_http { #用upstream定義一組服務器 #ip_hash經過記錄客戶端ip實現粘性session。有一個第三方的module能夠用cookie實現粘性:https://code.google.com/p/nginx-sticky-module/ ip_hash; #經過server定義多個服務器 #weight是權重,默認爲1。 #max_fails和fail_timeout配合使用,在fail_timeout時間內通訊失敗達到max_fails的次數後,此服務器在fail_timeout時間內被認爲不可用。 server 192.168.50.65:8090 weight=2; server 192.168.50.65:8091 max_fails=3 fail_timeout=30s; #keepalive爲鏈接開啓緩存,並設置緩存鏈接的最大數量。 keepalive 10; } server { listen 82; server_name localhost; location / { #將proxy_pass後的服務器地址,變爲upstream的名字 proxy_pass http: //tomcat_http ; } } |
更多參數說明參考:http://nginx.org/en/docs/http/ngx_http_upstream_module.html
AJP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
upstream tomcat_ajp { # upstream定義一組服務器 #srun_id同Tomcat配置中Engine的jvmRoute。 server 192.168.50.65:8019 srun_id=tomcat7_a weight=2; server 192.168.50.65:8029 srun_id=tomcat7_b; #用cookie方式實現粘性session jvm_route $cookie_JSESSIONID reverse; keepalive 10; } server { listen 82; server_name localhost; location / { ajp_keep_conn on; ajp_pass tomcat_ajp; #指定鏈接到哪一個upstream上 } } |