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 "%r" %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

浙公网安备 33010602011771号