日期:2014-05-17 浏览次数:20825 次
一、 为什么需要对 Tomcat 服务器做负载均衡:
Tomcat 服务器作为一个 Web 服务器,其并发数在 300-500 之间,如果有超过 500 的并发数便会出现 Tomcat 不能响应新的请求的情况,严重影响网站的运行。另外,在访问量大的情况下, Tomcat 的线程数会不断增加。由于 Tomcat 自身对内存的占用有控制,当对内存的占用达到最大值时便会出现内存溢出,对网站的访问严重超时等现象,这时便需要重新启动 Tomcat 以释放占用的内存,这样做便会阻断网站运行。
所以对 Tomcat 做负载均衡便很有必要。目前可以和 Tomcat 做负载均衡的主流服务器是 Apache ,但是 Nginx 由于功能多、配置简单等优点逐渐成为很多负载均衡服务器的首选。 Nginx 的并发数可达到 50000 ,所以理论上可以和 Tomcat 以 1:100 的比例来配置,这样便可以很好的解决网站并发瓶颈问题。
二、 Nginx+Tomcat 在 Windows 下负载均衡配置方法:
Nginx+Tomcat 在 Windows 下做负载均衡相对在 Linux 下简单不少,因为不论是 Nginx 还是 Tomcat 只需要下载 Windows 下的安装包解压到某个目录下,然后就可以做配置了。
?????????????? 我选择的 Nginx 是 nginx-0.8.49 这个版本, Tomcat 选择的是 apache-tomcat-6.0.26 。
???????? 下面就是配置过程 :
???????? 1. 将 nginx-0.8.49.rar 压缩包直接解压到某个目录下 ( 如 D:/ 负载均衡 /nginx) 。
?????? 2. 将 apache-tomcat-6.0.26.rar 压缩包解压,因为是做负载均衡,所以至少要解压两个。 ( 如分别解压到 D:/ 负载均衡 /tomcat_1 和 D:/ 负载均衡 /tomcat_2 下面 ) 。
???????? 3. 将要发布的项目发布到两个 Tomcat 根目录下的 webapps 下,保证两个 Tomcat 下面的项目名称相同。
???????? 4. 修改其中一个 Tomcat 的配置文件,该配置文件位于 Tomcat 目录下的 /conf/ 下,文件名为 server.xml ,修改其中的 <Server port="8005" shutdown="SHUTDOWN"> 为 <Server port="8006" shutdown="SHUTDOWN"> ,修改其中的
<Connector port="8080" protocol="HTTP/1.1"
?????????????? connectionTimeout="20000"
?????????????? redirectPort="8443" />
为
<Connector port="8088" protocol="HTTP/1.1"
?????????????? connectionTimeout="20000"
?????????????? redirectPort="8443" />
修改后的文件如下:
<?xml version='1.0' encoding='utf-8'?>
<!--
? Licensed to the Apache Software Foundation (ASF) under one or more
? contributor license agreements.? See the NOTICE file distributed with
? this work for additional information regarding copyright ownership.
? The ASF licenses this file to You under the Apache License, Version 2.0
? (the "License"); you may not use this file except in compliance with
? the License.? You may obtain a copy of the License at
?
????? http://www.apache.org/licenses/LICENSE-2.0
?
? Unless required by applicable law or agreed to in writing, software
? distributed under the License is distributed on an "AS IS" BASIS,
? WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
? See the License for the specific language governing permissions and
? limitations under the License.
-->
<!-- Note:? A "Server" is not itself a "Container", so you may not
???? define subcomponents such as "Valves" at this level.
???? Documentation at /docs/config/server.html
?-->
<Server port="8006" shutdown="SHUTDOWN">
?
? <!--APR library loader. Documentation at /docs/apr.html -->
? <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
? <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
? <Listener className="org.apache.catalina.core.JasperListener" />
? <!-- Prevent memory leaks due to use of particular java/javax APIs-->
? <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
? <!-- JMX Support for the Tomcat server. Documentation at /docs/non-existent.html -->
? <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
? <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
?
? <!-- Global JNDI resources
?????? Documentation at /docs/jndi-resources-howto.html
? -->
? <GlobalNamingResources>
??? <!-- Editable user database that can also be used by
???????? UserDatabaseRealm to authenticate users
??? -->
??? <Resource na