【摘要】随着Apacheserver的版本更新,目前常用的集群以及负载均衡的配置有两种,一种是用mod_jk来处理的,另一种是用Apache server自己的原生模块来实现,下面就分别介绍这两种方法
阅读方法:可以只读【必读】内容
本文所使用的相关内容版本如下:( 打包下载 )
l Apache server 2.4
l Apache Tomcat 8.0.26
l mod_jk 2.0.55
1. 配置Tomcat
【必读】进入tomcat/config目录下,编辑server.xml文件,打开下面两句的注释,并注释或删除原来的<Engine>头标签
<Engine name="Catalina"defaultHost="localhost" jvmRoute="jvm1">
<ClusterclassName="org.apache.catalina.ha.tcp.SimpleTcpCluster" />
【选读】官网提供的Cluster标签内容如下,其实没必要,上面的一句就可以满足大部分需求了
【官网内容】
<ClusterclassName="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8">
<ManagerclassName="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<ChannelclassName="org.apache.catalina.tribes.group.GroupChannel">
<MembershipclassName="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<ReceiverclassName="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<TransportclassName="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<InterceptorclassName="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<InterceptorclassName="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<ValveclassName="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<DeployerclassName="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListenerclassName="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
2. mod_jk配置方法
【必读】
步骤:(apache server 根目录)
1. 将下载的mod_jk.so放到modules目录下
2. 在conf目录中创建mod_jk.conf文件
【mod_jk_conf】
LoadModulejk_module modules/mod_jk.so
JkWorkersFileconf/workers.properties
JkMount/* controller
3. 在conf目录中创建workers.properties文件
【workers.properties】
worker.list= controller,tomcat1,tomcat2
#========tomcat1========
worker.tomcat1.port=8009
worker.tomcat1.host=192.168.2.2
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
#========tomcat2========
worker.tomcat2.port=8009
worker.tomcat2.host=192.168.2.3
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2
worker.controller.sticky_session=true
【释义】
tomcat1,tomcat2—— 还记得那个server.xml中的jvmRoute的名字,就是她
worker.tomcat1.port—— server.xml中的<Connector port="8009"protocol="AJP/1.3" redirectPort="8443" />
worker.tomcat1.host—— 服务器IP
worker.tomcat1.lbfactor—— 负载均衡的权重值
worker.controller.sticky_session—— 粘性属性(解释起来相当麻烦,就是一条路跑到黑。。。)
4. 修改httpd.conf文件
在最下面增加内容 Includeconf/mod_jk.conf
5. 安装启动apache server服务
以管理员身份运行CMD,进入Apacheserver的bin目录运行:(其中apacheServerName是服务名称,可随便定义)
httpd.exe –k install –n “apacheServerName”
net start apacheServerName
如果没报错,恭喜你,差不多了,有错误回头查一下看看哪儿有笔误
3. 原生配置方法
【必读】
步骤:(apache server 根目录)
1. 修改conf/httpd.conf
打开下面几个内容的注释:
LoadModule proxy_modulemodules/mod_proxy.so
LoadModule proxy_ajp_modulemodules/mod_proxy_ajp.so
LoadModule proxy_balancer_modulemodules/mod_proxy_balancer.so
LoadModule proxy_connect_modulemodules/mod_proxy_connect.so
LoadModule proxy_ftp_modulemodules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule lbmethod_byrequests_modulemodules/mod_lbmethod_byrequests.so
LoadModule slotmem_shm_modulemodules/mod_slotmem_shm.so
在最下面添加:
<IfModule proxy_module>
Include conf/extra/httpd-vhosts.conf
</IfModule>
2. 修改conf/extra/httpd-vhosts.conf
Ctrl + A –> delete然后添加:
<VirtualHost *:80>
ServerAdmin [email][email protected][/email]
ServerName localhost
ServerAlias localhost
ProxyPass / balancer://ibscluster/stickysession=JSESSIONID nofailover=Off
ProxyPassReverse / balancer://ibscluster/
ErrorLog "logs/error.log"
CustomLog "logs/access.log" common
<Proxy balancer://ibscluster>
BalancerMemberajp://192.168.2.2:8009 loadfactor=1 route=tomcat1
BalancerMemberajp://192.168.2.3:8009 loadfactor=1 route=tomcat2
ProxySet lbmethod=byrequests
</Proxy>
</VirtualHost>
【注释】
stickysession=JSESSIONID —— 共享session(如果服务不在一个主机上,然并卵)
ajp://192.168.2.2:8009 —— 通过tomcat的ajp所在端口8009来进行连接
route=tomcat1 —— 还记得那个server.xml中的jvmRoute的名字,还是她
loadfactor —— 负载均衡权重
lbmethod —— 负载均衡策略(使用对应策略要打开对应的mod注释)
lbmethod=byrequests按照请求次数均衡(默认)
lbmethod=bytraffic 按照流量均衡
lbmethod=bybusyness 按照繁忙程度均衡(总是分配给活跃请求数最少的服务器)
3. 安装启动apacheserver服务
以管理员身份运行CMD,进入Apacheserver的bin目录运行:(其中apacheServerName是服务名称,可随便定义)
httpd.exe –k install –n “apacheServerName”
net start apacheServerName