Linux下Apache+Tomcat搭建負載均衡伺服器叢集
這篇文章主要講解關於如何在Linux下搭建Apache+tomcat負載均衡伺服器叢集的過程。
負載均衡叢集配置(1):Tomcat的配置
修改“ tomcat/conf/server.xml ”檔案
編輯server.xml檔案,找到“<Connector>
”元素節點,在server.xml檔案裡面未註釋掉的有兩個<Connector>
元素節點。找到第二個也就是上面一行註釋為
<!-- Definean AJP 1.3 Connector on port 8009 -->
的節點。將其修改為
<!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8009" protocolhandlerclassname="org.apache.jk.server.jkcoyotehandler" protocol="AJP/1.3" redirectPort="8443" />
注意:如果是在一臺PC上同時執行多個tomcat,須將每個tomcat對的server.xml檔案裡面的“<Connector>
”元素節點裡面的port(埠號)設定為不同的值。這裡不同上面只改第二個,而是兩個“<Connector>
”元素節點都須要修改。
負載均衡叢集配置(2):
接下來繼續修改這個檔案,找到“<Connector>
”元素節點下面的註釋如下
!-- An Engine represents the entry point (within Catalina) that processes every request. The Engine implementation for Tomcat stand alone analyzes the HTTP headers included with the request, and passes them on to the appropriate Host (virtual host). Documentation at /docs/config/engine.html --> <!-- You should set jvmRoute to support load-balancing via AJP ie : <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1"> -->
裡面有
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
將其註釋開啟。這裡進行tomcat的命名,即修改jvmRoute的值為tomcat例項名,不同的tomcat設定不同的值(這裡不管是否是同一PC都須不同)。比如我的修改為tomcat1和tomcat2
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1" >
負載均衡叢集配置(3):
接下來還是操作tomcat的server.xml檔案,在<Engine>
或<Host>
元素節點下新增以下內容
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"> <Manager className="org.apache.catalina.ha.session.BackupManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true" mapSendOptions="6"/> <!-- <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.1.99" port="45564" frequency="500" dropTime="3000"/> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="192.168.11.128" port="4002" autoBind="100" selectorTimeout="100" 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"/> </Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/> <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/> <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster>
上述新增的程式碼的用處請繼續看第4步。
負載均衡叢集配置(4):
這裡還是繼續操作tomcat的server.xml檔案
找到剛剛新增的一長串程式碼中的<Cluster>
元素節點,下面開始修改,程式碼意義見其中的註釋解釋
<Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.1.99" port="45564" frequency="500" dropTime="3000"/> <!-- 解釋上一句程式碼. 如果主機有vpn-虛擬專用網路,需要要bind下,即新增 bind="127.0.0.1" 在Membership元素節點裡面作為屬性。如果沒有的話可以不用加bind,否則會導致session無法複製. address的值表示廣播地址,同一組tomcat搭建的叢集配置須一樣。 port埠號,同一組tomcat搭建的叢集配置須一樣。 --> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="192.168.11.128" port="4002" autoBind="100" selectorTimeout="100" maxThreads="6"/> <!-- 解釋上一句程式碼. address的值表示本機IP地址,須設定為本機IP地址。 port埠號(tomcat預設可以檢測到4000~4100之間的埠)。如果是在同一臺PC上配置負載均衡則需要修改,使用不同的埠號,否則會因為埠衝突而失效。 -->
負載均衡叢集配置(5):專案部署檔案的配置
修改待發布專案的web.xml
找到專案的web.xml檔案,開啟修改,在<web-app>
元素節點結束標籤上面一行新增
<distributable/>
從而確保session能夠複製。
負載均衡叢集配置(6):Apache的配置
接下來進行Apache配置檔案的修改,找到Apache安裝資料夾下面的conf資料夾裡面的httpd.conf檔案開啟並進行修改,在最後面加上一下內容
#載入mod_jk Module LoadModule jk_module modules/mod_jk.so <Ifmodule mod_jk.c> #指定workers.properties檔案路徑 JkWorkersFile /usr/local/apache2/conf/workers.properties #指定jk logs檔案存放位置 JkLogFile /usr/local/apache2/logs/mod_jk.log #Set the jk log level [debug/error/info] JkLogLevel info #Select the log format JkLogStampFormat "[%a %b %d%H:%M:%S %Y]" #JkOptions indicate to send SSL KEYSIZE, JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories #JkRequestLogFormat set the requestformat JkRequestLogFormat "%w %V %T %q %U%R" #JkShmFile to put logs JkShmFile /usr/local/apache2/logs/mod_jk.shm </IfModule> #指定哪些請求交給tomcat處理,哪些請求交給apache處理 #注意:" loadbalancer "為在workers.propertise裡指定的負載分配控制器 JkMount /*.jsp loadbalancer #所有的jsp都交給tomcat處理
負載均衡叢集配置(7):
在上一步中新增的httpd.conf檔案的最後新增的配置中的workers.properties檔案是不存在的,需要我們在指定的位置建立一個,檢視上一步可以發現檔案在 /usr/local/apache2/conf/路徑下面建立。
workers.properties檔案用於對負載均衡的負載器worker(即tomcat)進行具體的登記,此處的2個tomcat就作為2個worker被登記在這個檔案中。
workers.properties具體配置如下:
#workers.properties # # in unix, weuse forward slashes: ps=/ # workers 列表 worker.list=tomcat1,tomcat2,tomcat3,loadbalancer,status #-------------------------------------------------------------------- # 第一個tomcat #-------------------------------------------------------------------- worker.tomcat1.port=8009 #對應tomcat的server.xml中配置的ajp13埠號 worker.tomcat1.host=127.0.0.1 #tomcat1的主機地址,如不為本機,請填寫IP地址 worker.tomcat1.type=ajp13 #定向包協議 worker.tomcat1.lbfactor=1 #server的負載分配權重,值越高,分得的請求越多 #以下為非必要配置,這部分配置tomcat2的配置同tomcat1 #worker.tomcat1.cachesize=1000 #配置tomcat的jk連線快取大小 (非必要) #worker.tomcat1.cachesize_timeout=600 # (非必要) #worker.tomcat1.reclycle_timeout=300 # (非必要) #worker.tomcat1.socket_keepalive=1 #防止防火牆切斷未啟用的網路連線(非必要) #worker.tomcat1.socket_timeout=300 #(非必要) #worker.tomcat1.local_worker=1 # (非必要) #worker.tomcat1.retries=3 # (非必要) #---------------------------------------------------------------------- # 第二個tomcat #---------------------------------------------------------------------- worker.tomcat2.port=8809 worker.tomcat2.host=127.0.0.1 #tomcat2的主機IP地址 worker.tomcat2.type=ajp13 worker.tomcat2.lbfactor=1 #--------------------------------------------------------------------- #第三個tomcat,使用其他ip對應的tomcat #--------------------------------------------------------------------- worker.tomcat3.port=8009 worker.tomcat3.host=192.168.11.128 worker.tomcat3.type=ajp13 worker.tomcat3.lbfactor=1 #---------------------------------------------------------------------- # load balancerworker -負載均衡控制器 # -------------------------------------------------------------------- worker.loadbalancer.type=lb worker.loadbalancer.balanced_workers=tomcat1,tomcat2,tomcat3 #指定分擔請求的tomcat worker.loadbalancer.sticky_session=1 #設定為粘性session worker.loadbalancer.sticky_session_force=0 #設定當多次請求未響應,請求將轉發 worker.status.type=status # # end workers.properties
負載均衡叢集配置(8):
修改Apache安裝陌路下的conf資料夾裡的httpd.conf檔案。
開啟httpd.conf檔案並修改。找到DocumentRoot和Directory並修改,將檔案訪問路徑定位到tomcat的webapps資料夾,即待發布專案的存放位置
# # DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. # DocumentRoot "/usr/local/tomcat1/webapps" <Directory "/usr/local/tomcat1/webapps"> Require all granted Orderallow,deny Allow from all </Directory>
到此配置基本完成。
下面就是測試的環節了。在此就不多說了。
相關文章
- Linux平臺上搭建apache+tomcat負載均衡叢集LinuxApacheTomcat負載
- 【Linux】叢集和負載均衡Linux負載
- 負載均衡的mariadb叢集搭建負載
- 伺服器叢集和負載均衡伺服器負載
- 負載均衡叢集負載
- apache+tomcat負載均衡ApacheTomcat負載
- Linux環境搭建Nginx+Tomcat負載均衡叢集LinuxNginxTomcat負載
- nginx與IIS伺服器搭建叢集實現負載均衡(一)Nginx伺服器負載
- dubbo叢集和負載均衡負載
- 用 LVS 搭建一個負載均衡叢集負載
- Tomcat叢集與負載均衡Tomcat負載
- orleans叢集及負載均衡實現負載
- haproxy(單機)+mysql叢集負載均衡MySql負載
- centos7下配置nginx反向代理負載均衡叢集CentOSNginx負載
- 負載均衡 - MQTT Broker 叢集詳解(一)負載MQQT
- apache tomcat叢集配置和負載均衡ApacheTomcat負載
- 3.RabbitMQ高階叢集搭建(Haproxy負載均衡、Keepalived高可用)MQ負載
- Haproxy+Keepalived高可用負載均衡叢集負載
- rabbitmq單機多例項叢集與負載均衡MQ負載
- Apache +Tomcat的負載均衡與叢集配置ApacheTomcat負載
- Linux系統(四)LVS叢集負載均衡NAT模式Linux負載模式
- nginx 負載均衡搭建Nginx負載
- LNMP 分散式叢集(一):Nginx+PHP平臺搭建與負載均衡配置LNMP分散式NginxPHP負載
- Linux系統(五)負載均衡LVS叢集之DR模式Linux負載模式
- linux下搭建ZooKeeper叢集(偽叢集)Linux
- docker初體驗:docker部署nginx負載均衡叢集DockerNginx負載
- kubernetes叢集內排程與負載均衡負載
- Nginx+tomcat實現叢集跟負載均衡NginxTomcat負載
- lvs負載均衡叢集詳細總結負載
- Nginx實現tomcat叢集進行負載均衡NginxTomcat負載
- 圖片叢集分散式儲存和負載均衡分散式負載
- Nginx+tomcat實現叢集和負載均衡NginxTomcat負載
- mysql負載均衡搭建(haproxy)MySql負載
- Linux CentOs叢集LVS+Keepalived負載均衡的實現LinuxCentOS負載
- 伺服器負載均衡伺服器負載
- 叢集,lvs負載均衡的四種工作模式負載模式
- 粘性會話負載均衡 - MQTT Broker 叢集詳解(二)會話負載MQQT
- 叢集、負載均衡、分散式的區別與聯絡負載分散式