Apache2.4.17+JDK1.8.0_65+Tomcat9.0集群,负载均衡,代理配置

  目的:

     网上有很多apache部署配置的相关文章。那,首先网上那些文章都不是使用最新版本的apache,tomcat,jdk。有的配置已经过时了;另外网上文章众多。杂乱,不系统。

 

    各安装文件下载地址:

    Apache:http://httpd.apache.org/

    JDK:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html

    Tomcat:http://tomcat.apache.org/download-90.cgi

    mo_jk.so:http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/

 

     这里主要有以下几个知识点:

     1、tomcat集群

     2、tomcat负载均衡

     3、tomcat间的session复制

     4、apache正向代理和反向代理

 

Apache安装:

         dos下进入到Apache目录的bin文件下:httpd.exe -k install 

         安装过程中需要安装vc2005,网上找一个vc_redist.2015.x64.exe,安装了

         安装出现问题,请执行:httpd.exe -k uninstall ,再重装

JDK安装:

         不详细描述,只是需要配置几个环境变量

             JAVA_HOME:C:\Program Files\Java\jdk1.8.0_65

              Path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

             CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

     配置完成后在dos下输入:JAVA -version 查看是否安装成功

TOMCAT安装:

          不描述(任性)。

TOMCAT集群和负载均衡配置:

        首先准备3个tomcat:C:\tomcat9,C:\tomcat91,C:\tomcat92

        然后去分别修改3个tomcat下C:\tomcat9\conf\server.xml

<?xml version='1.0' encoding='utf-8'?>

<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8049" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute='jvm1'>
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<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="auto"
port="4001"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
<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=""/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
</Engine>
</Service>
</Server>

上述,几处加粗的地方都改成不同的数字即可。红色标注的地方是做负载均衡使用,tomcat3不用加。

 

Apache配置:

    首先进入到Apache配置目录下:C:\Apache24\conf\httpd.conf

   1、最后面加入:

# module mod_jk config file

Include conf/mod_jk.conf

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.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

   2、放开文件vhosts,去掉前面的#

    Include conf/extra/httpd-vhosts.conf

   3、在conf下新建文件mod_jk.conf

     文件内容:

LoadModule jk_module modules/mod_jk.so

JkWorkersFile conf/workers.properties
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器名
JkMount /* controller

  4、新建文件workers.properties

#server
worker.list = controller
#========tomcat1========
worker.tomcat1.port=8009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1
#========tomcat2========
worker.tomcat2.port=8010
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=jvm1,jvm2
worker.controller.sticky_session=false
worker.controller.sticky_session_force=1
#worker.controller.sticky_session=1

 

 5、进入C:\Apache24\conf\extra\httpd-vhosts.conf配置:

#负载均衡配置tomcat1,tomcat2

<VirtualHost *:80>

ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "c:/www/test"
ServerName www.test.com
ServerAlias www.test.com
ErrorLog "logs/www.test.com-error.log"
CustomLog "logs/www.test.com-access.log" common
ProxyRequests Off
ProxyPass /test balancer://proxy
ProxyPassReverse /test balancer://proxy
<Proxy balancer://proxy>
BalancerMember http://127.0.0.1:8049/test loadfactor=1
BalancerMember http://127.0.0.1:8050/test loadfactor=1
</Proxy>
</VirtualHost>

#代理配置tomcat3
<VirtualHost *:80>
ServerAdmin webmaster2@dummy-host.example.com
DocumentRoot "c:/www/test1"
ServerName www.test1.com
ServerAlias www.test1.com
ErrorLog "logs/www.test1.com-error.log"
CustomLog "logs/www.test1.com-access.log" common
ProxyRequests Off
ProxyPass /test http://127.0.0.1:8051/test
ProxyPassReverse /test http://127.0.0.1:8051/test
</VirtualHost>

 

最后注意几点:

    1、因为是单机垂直集群,域名ServerName www.test1.com需要在hosts文件下注册

    2、workers.properties中的port为tomcat中的ajp13 端口。

    3、workers.properties中的worker.controller.balanced_workers=jvm1,jvm2为tomcat中的Engine name中的jvmRoute

 

 

 

 

 

 

        

    

posted @ 2015-12-07 17:20  墨声  阅读(194)  评论(0)    收藏  举报