【摘要】隨着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