tomcat +apache 配置集群

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

APACHE2.2.25+TOMCAT6.0.37配置負載均衡

目標:

使用 apache 和 tomcat 配置一個可以應用的 web 網站,要達到以下要求:

1.?? Apache 做為 HttpServer ,后面連接多個 tomcat 應用實例,并進行負載均衡。

2.?? 為系統設定 Session 超時時間,包括 Apache 和 tomcat

3.?? 為系統屏蔽文件列表,包括 Apache 和 tomcat

注:本例程以一臺機器為例子,即同一臺機器上裝一個apache和4個Tomcat。

一、前期準備工作:安裝用的程序(前提保證已安裝了JDK1.5以上的版本)

APAHCE 2.2.25下載:httpd-2.2.25-win32-x86-no_ssl.msi

TOMCAT6.0.37下載:apache-tomcat-6.0.37-windows-x64.zip直接解壓。

二、安裝過程

APAHCE安裝目錄:D:\Apache。

四個TOMCAT目錄:自行解壓到(D:\Tomcat集群服務器\)下。分別為 tomcat1,tomcat2,tomcat3,tomcat4

這幾個安裝過程就不詳細說明了。

三、配置

1、Apache配置

1.1、httpd.conf配置

修改APACHE的配置文件D:\Apache \conf\httpd.conf

將以下Module的注釋去掉,這里并沒有使用mod_jk.so進行apache和tomcat的鏈接,從2.X以后apache自身已集成了mod_jk.so的功能。只需簡單的把下面幾行去掉注釋,就相當于以前用mod_jk.so比較繁瑣的配置了。這里主要采用了代理的方法,就這么簡單。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

再找到<IfModule dir_module></IfModule>加上index.jsp修改成

<IfModule dir_module>

DirectoryIndex index.html index.jsp

</IfModule>

1.1.1、? 在最下面加入

<proxy balancer://cluster>

BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1

BalancerMember ajp://127.0.0.1:9003 loadfactor=1 route=jvm2

BalancerMember ajp://127.0.0.1:9004 loadfactor=1 route=jvm3

BalancerMember ajp://127.0.0.1:9005 loadfactor=1 route=jvm4

</proxy>

上面的四個BalancerMember成員是我們配置的tomcat集群。后面會說明的。

1.2、httpd-vhosts.conf設置

接下來進行虛擬主機的設置。APACHE的虛擬主機設置如下:

首先要修改 conf/httpd.conf找到(#Include conf/extra/httpd-vhosts.conf)

把注釋去掉。

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

在文件(extra/httpd-vhosts.conf)最下面加入

<VirtualHost *:80>

???????? ServerAdmin 360293650@qq.com

???????? ServerName localhost

???????? ServerAlias localhost

???????? ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On

???????? ProxyPassReverse / balancer://cluster/

</VirtualHost>

其中的域名和路徑根據你自己情況設置

然后再設置TOMCAT虛擬主機

2 配置 tomcat

參數參考表

可先看后面的步驟在回頭查看參考表,或者根據自己的端口使用情況自己定義端口的分配。

Tomcat

Service.

port

Engine.

jvmRoute

Connector.

port

Connector.

redirectPort

Receiver.

port

tomcat1

8005

jvm1

8009

8443

4000

tomcat2

8006

jvm2

9003

8444

4001

tomcat3

8007

jvm3

9004

8445

4002

tomcat4

8008

jvm4

9005

8446

4003

2.1.配置 server 的關閉

我們需要在一臺機器上跑 4 個不同的 tomcat ,需要修改不同的 tomcat 的關閉口,避免出現端口被占用的情況。其中tomcat1用默認值,不修改。其他三個修改。在conf下的 server.xml 中找到 server, 將:

<Server port="8005" shutdown="SHUTDOWN">

改為

<Server port="XXXX" shutdown="SHUTDOWN">

XXXX 在這里表示不同的端口:我的其它三個 tomcat 分別使用的端口可查看參數參考表

2.2.配置 Engine

?把原來的配置注釋掉,把下面一句去掉注釋。并標明jvmRoute="jvm2".

<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm2">????????

以下是原來的配置。

<!-- <Engine name="Catalina" defaultHost="localhost">? -->

其他(tomcat3和tomcat4)也要同樣配置。注意:jvmRoute配置不要一樣。

<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm3">?

<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm4">?

2.3.配置 Connector

原來的默認配置。

<!-- Define an AJP 1.3 Connector on port 8009 -->

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

這里是apache和tomcat鏈接的關鍵,前臺apache就是通過AJP協議與tomcat進行通信的,以完成負載均衡的作用。也可以用HTTP協議。大家注意它們是如何連接通信的,上面的紅色部分(port="8009")就是連接的接口了。

把其他三個tomcat的<Connector port="XXX" />port分別改成與上面

<proxy balancer://cluster>

#與tomcat1對應,route與<Engine jvmRoute="jvm1">對應。

BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1

#與tomcat2對應,route與<Engine jvmRoute="jvm2">對應。

BalancerMember ajp://127.0.0.1:9003 loadfactor=1 route=jvm2

#與tomcat3對應,route與<Engine jvmRoute="jvm3">對應。

BalancerMember ajp://127.0.0.1:9004 loadfactor=1 route=jvm3

#與tomcat4對應,route與<Engine jvmRoute="jvm4">對應。

BalancerMember ajp://127.0.0.1:9005 loadfactor=1 route=jvm4

</proxy>

中的端口對應,tomcat1 的ajp端口port:9003. Tomcat2 的ajp端口port:9004。Tomcat3 的ajp端口port:9005.一定要與上面的一致。同時也要把redirectPort的值改成唯一的,確保四個tomcat的都不一樣。可查看參數參考表

2.5.配置Cluster(每個tomcat中都要修改)

原來的配置。

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

修改為以下的代碼:<Receiver port=”XX”/>port也要保證唯一性。

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6">

???? <Manager className="org.apache.catalina.ha.session.BackupManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true" mapSendOptions="6"/>

???? <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="4000" 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"/>

???????? <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>

???? </Channel>

???? <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>

???? <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.ClusterSessionListener"/>

</Cluster>

這個設置是主要用以tomcat的集群。

轉載于:https://my.oschina.net/u/1867229/blog/825844

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/541914.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/541914.shtml
英文地址,請注明出處:http://en.pswp.cn/news/541914.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java雙緩存機制_詳解JVM類加載機制及類緩存問題的處理方法

前言大家應該都知道&#xff0c;當一個Java項目啟動的時候&#xff0c;JVM會找到main方法&#xff0c;根據對象之間的調用來對class文件和所引用的jar包中的class文件進行加載(其步驟分為加載、驗證、準備、解析、初始化、使用和卸載)&#xff0c;方法區中開辟內存來存儲類的運…

oracle中dbms_并發和由于DBMS中的并發導致的問題

oracle中dbms并發 (Concurrency) The ability of a database system which handles simultaneously or a number of transactions by interleaving parts of the actions or the overlapping this is called concurrency of the system. 數據庫系統通過交織部分操作或重疊操作來…

什么是mvc?

什么是MVCMVC 是一種設計模式&#xff0c;它將應用劃分為3 個部分&#xff1a;數據&#xff08;模型&#xff09;、展現層&#xff08;視圖&#xff09;和用戶交互層&#xff08;控制器&#xff09;。換句話說&#xff0c;一個事件的發生是這樣的過程&#xff1a;1&#xff0e;…

mysql的安裝和基本命令_MySQL安裝以及簡單命令用法

MYSQL:關系型數據庫存儲引擎:負責將邏輯層的概念轉化為物理層機制&#xff0c;在物理層完成物理機制。支持事務&#xff1a;transaction必須滿足的條件&#xff1a;ACID(一致性,持久性,原子性,隔離性)鎖&#xff1a;并發訪問隨機訪問&#xff1a;數據在磁盤上是隨機存儲的安裝&…

將數組轉換為JavaScript中的對象

Lets say you have the following array, 假設您有以下數組&#xff0c; const nums [1, 2, 3, 4, 5];console.log(nums);Output 輸出量 (5) [1, 2, 3, 4, 5]We know that nums is an array and we can see in the output that we get an array. Lets convert it into an ob…

docker集群運行在calico網絡上

2019獨角獸企業重金招聘Python工程師標準>>> ##網絡及版本信息 docker1 centos7 192.168.75.200 docker2 centos7 192.168.75.201 物理網絡 192.168.75.1/24 Docker version 1.10.3, build 3999ccb-unsupported &#xff0c;安裝過程略 # calicoctl version Version…

python批量雷達圖_python批量制作雷達圖

老板要畫雷達圖&#xff0c;但是數據好多組怎么辦&#xff1f;不能一個一個點excel去畫吧&#xff0c;那么可以利用python進行批量制作&#xff0c;得到樣式如下&#xff1a;首先制作一個演示的excel&#xff0c;評分為excel隨機數生成&#xff1a;1 INT((RAND()4)*10)/10加入標…

JavaScript中帶有示例的Math.log()方法

JavaScript | Math.log()方法 (JavaScript | Math.log() Method) Math.log() is a function in math library of JavaScript that is used to return the value of natural Log i.e. (base e) of the given number. It is also known as ln(x) in mathematical terms. Math.log…

SUI踩坑記錄

SUI踩坑記錄 最近做了個項目選型了SUI和vue做單頁應用。下面記錄一下踩坑經歷SUI 介紹 sui文檔&#xff1a;http://m.sui.taobao.org/SUI Mobile 是一套基于 Framework7 開發的UI庫。它非常輕量、精美&#xff0c;只需要引入我們的CDN文件就可以使用&#xff0c;并且能兼容到 i…

java 寫入xml文件_java讀寫xml文件

要讀的xml文件李華姓名>14年齡>學生>張三姓名>16年齡>學生>學生花名冊>package xml;import java.io.FileOutputStream;import java.io.OutputStreamWriter;import java.io.Writer;import java.util.Iterator;import java.util.Vector;import javax.xml.pa…

JavaScript中帶有示例的Math.max()方法

JavaScript | Math.max()方法 (JavaScript | Math.max() Method) Math.max() is a function in math library of JavaScript that is used to return the greatest value of all the passed values to the method. Math.max()是JavaScript數學庫中的函數&#xff0c;用于將所有…

java 修飾符默認_Java和C#默認訪問修飾符

C#中&#xff1a;針對下面幾種類型內部成員的訪問修飾符&#xff1a;enum的默認訪問修飾符&#xff1a;public。class的默認為private。interface默認為public。struct默認為private。其中&#xff1a;public可以被任意存取&#xff1b;protected只可以被本類和其繼承子類存取&…

JavaScript中帶有示例的Math.abs()方法

JavaScript | Math.abs()方法 (JavaScript | Math.abs() Method) Math operations in JavaScript are handled using functions of math library in JavaScript. In this tutorial on Math.abs() method, we will learn about the abs() method and its working with examples.…

人臉識別python face_recognize_python2.7使用face_recognition做人臉識別

偶然看到一篇文章&#xff0c;說是可以實時人臉識別&#xff0c;很有興趣就自己按照文章開始動手人臉識別&#xff0c;但是實現過程中遇到了幾個問題這里做個總結&#xff0c;希望可以幫助到大家安裝face_recognition這個之前需要先安裝編譯dlib&#xff0c;如果沒有安裝dlib&a…

c# reverse_清單 .Reverse()方法,以C#為例

c# reverseC&#xff03;List <T> .Reverse()方法 (C# List<T>.Reverse() Method) List<T>.Reverse() method is used to reverse the all list elements. List <T> .Reverse()方法用于反轉所有列表元素。 Syntax: 句法&#xff1a; void List<T&…

cpuinfo詳解

cat /proc/cpuinfo processor: 23&#xff1a;超線程技術的虛擬邏輯核第24個 ###一般看最后一個0...23 表示24線程 vendor_id: GenuineIntel&#xff1a;CPU制造商cpu family: 6&#xff1a;CPU產品系列代號model: 44&#xff1a;CPU屬于其系列中的哪一代號model name: Intel…

jvm延遲偏向_用于偏向硬幣翻轉模擬的Python程序

jvm延遲偏向Here, we will be simulating the occurrence coin face i.e. H - HEAD, T - TAIL. Simply we are going to use an inbuilt library called as random to call a random value from given set and thereby we can stimulate the occurrence value by storing the o…

java項目沒有bin_WebAPI項目似乎沒有將轉換后的web.config發布到bin文件夾?

我很擅長.NET配置轉換 . 我現在將它們放在用于數據使用的類庫和WPF應用程序上 .但是&#xff0c;當我嘗試使用ASP.NET WebAPI項目進行設置時&#xff0c;似乎發生了一些奇怪的事情 .配置文件永遠不會顯示在我的bin目錄中&#xff0c;因此web.config始終顯示為預先形成的配置文件…

opengl es的射線拾取

2019獨角獸企業重金招聘Python工程師標準>>> 在opengl中關于拾取有封裝好的選擇模式&#xff0c;名字棧&#xff0c;命中記錄&#xff0c;實現拾取的功能&#xff0c;相對容易一些。但是到了opengl es里面就比較倒霉了&#xff0c;因為opengl es是opengl的簡化版&am…