當Tomcat當作獨立的Servlet容器來運行時,可看作是能運行Java Servlet的獨立Web服務器。html
此外 Tomcat還能夠做爲其餘Web服務器進程內或者進程外的Servlet容器,從而與其餘Web服務器集成(Apache Nginx IIS 等)前端
集成的意義在於:對於不支持運行java Servlet的其餘Web服務器,能夠經過集成Tomcat來提供運行Servlet的功能。java
——————————Tomcat與JavaWeb開發技術詳解(孫衛琴的一本書)nginx
Nginx 經過Tomcat來運行Servlet容器。也能夠 對集羣的tomcat的負載進行均衡。(在後臺多個Tomcat進行集羣時,nginx把來自客戶端的請求 隨機分發到某一臺Tomcat上)web
下面看一個簡單的demoredis
nginx.conf負載均衡的關鍵配置 數據庫
http {
include mime.types;
default_type application/octet-stream;apache
sendfile on;tomcat
keepalive_timeout 65;服務器
upstream tomcatserver{
server 119.23.50.194:9080 weight=1;
server 119.23.50.194:8080 weight=2;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://tomcatserver;
}
}
}
配置表示,nignx的斷開時80端口,也就是當咱們直接輸入ip的時候
會直接進入nginx的根路徑。location / 經過proxy_pass指向server 119.23.50.194:9080(三分之一的機率);或者 server 119.23.50.194:8080(三分之二的機率);
機率可經過權重 weight配置。
思考:前端的請求會隨機分發到不一樣的Servlet容器中。不一樣的tomcat session是不共享的。這樣 會話跟蹤會失敗。
tomcat 集羣中,能夠把session放到redis數據庫中,解決session不共享的問題
進入cd /home/tomcat/apache-tomcat-7/lib路徑下
把redis和tomcat配置的jar添加進去
jedis-2.5.2.jar
tomcat-redis-session-manage-tomcat7.jar
commons-pool2-2.2.jar
cd /home/tomcat/apache-tomcat-7/conf/
修改 context.xml文件
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="119.23.50.194"
port="6379"
database="0"
password="sunkun1210"
maxInactiveInterval="60" />
修改cd /home/tomcat/apache-tomcat-7/webapps/ROOT/ 目錄下的index.jsp(tomcat歡迎頁) 方便咱們測試
119.23.50.194:9080 tomcat主頁上加如下代碼
<%@ page session="true" %>
<h1>tomcat9080</h1>
session:<%=session.getId()%>
119.23.50.194:8080 tomcat主頁上加如下代碼
<%@ page session="true" %>
<h1>tomcat8080</h1>
session:<%=session.getId()%>
你們能夠點擊測試,觀察 tomcat的端口雖然編號 可是sessionId沒變
爲了保證在集羣系統中,會話數據能在redis進行存儲。應該保證全部存放在會話範圍內的全部屬性都實現了java.io.Serializable接口。