tomcat的安裝部署
安裝jdk和tomcat
tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/
做好軟連接便于訪問
cd /usr/local
ln -s jdk1.7.0_79/ java
ln -s apache-tomcat-7.0.37/ tomcat
配置環境變量
vim /etc/profile
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/binsource /etc/profile # 使文件生效
編寫測試網頁并測試
vim test.java
public class test
{public static void main(String[] args){System.out.println("Hello World1");}
}
javac test.java
java test
開啟tommcat
cd /usr/local/tomcat
bin/startup.sh
打開瀏覽器測試
打開瀏覽器測試
cd /usr/local/tomcat/webapps/ROOT/
vim test.jsp
server1-The time is: <%=new java.util.Date() %>
測試
設置nginx對tomcat的負載均衡
cd /usr/local/lnmp/nginx
vim nginx.conf需要注釋掉之前的php設定,并刪除index.phpupstream tomcat {server 172.25.11.4:8080;server 172.25.11.5:8080;}location / {root /usr/local/tomcat/webapps/ROOT;index index.html index.htm;}location ~ \.jsp$ {proxy_pass http://tomcat;}nginx -t
nginx -s reload # 重新加載一下nginx
打開瀏覽器刷新測試:
再次刷新會發現時間在變
sticky(粘滯)模塊
重新編寫兩臺tomcat服務器的網頁
vim /usr/local/tomcat/webapps/ROOT/test.jsp
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%
out.println("<br> ID " + session.getId()+"<br>");
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.print("<b>Session list</b>");
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + " = " + value+"<br>");
System.out.println( name + " = " + value);
}
%>
<form action="test.jsp" method="POST">
name:<input type=text size=20 name="dataName">
<br>
key:<input type=text size=20 name="dataValue">
<br>
<input type=submit>
</form>
</body>
</html>
進行測試
在nginx配置文件中增加tomcat模塊,為了實現session共享,需要支持sticky(粘滯)模塊,nginx-1.14不支持sticky,所以使用nginx-1.10版本,重新編譯nginx
備份之前版本nginx的配置文件到/mnt
并刪除nginx目錄
cd /usr/local/lnmp/nginx/conf
cp nginx.conf /mnt/
nginx -s stop
cd /usr/local/lnmp/
rm -fr nginx/*
解壓編譯安裝
tar zxf nginx-1.10.1.tar.gz
tar zxf nginx-sticky-module-ng.tar.gz
cd nginx-1.10.1/
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --add-module=/lnmp安裝包/nginx-sticky-module-ng
make && make install
切換到新編譯安裝好的nginx
從/mnt恢復原nginx.conf
cd /usr/local/lnmp/nginx/
cd conf/
cp /mnt/nginx.conf .
vim nginx.conf
upstream tomcat {sticky;server 172.25.0.1:8080;server 172.25.0.2:8080;}
gzip on; #開啟gzip
location / {root /usr/local/tomcat/webapps/ROOT;index index.html index.htm;}location ~ \.jsp$ {proxy_pass http://tomcat;}nginx -t # 檢測文件語法有問題沒
nginx
測試:
再次刷新頁面,訪問的ID號不會變,實現了sticky
session共享(交叉存儲)
在設置之前
關閉一個服務器的tomca查看網頁
cd /usr/localtomcat
bin/shutdown.sh
刷新網頁發現立即切換到了另外一臺服務器,并且id發生變化
這樣極為的不安全,且服務器發生故障時,會丟失數據,所以要設置交叉存儲的方式
設置步驟:(兩臺服務器相同設置)
進入/usr/local/tomcat/lib目錄(兩臺服務器都做)
將以下jar包拷貝到該目錄:
asm-3.2.jar
kryo-1.04.jar
kryo-serializers-0.10.jar
memcached-session-manager-1.6.3.jar
memcached-session-manager-tc7-1.6.3.jar(最重要)
minlog-1.2.jar
msm-kryo-serializer-1.6.3.jar
reflectasm-1.01.jar
spymemcached-2.7.3.jar
cd /lnmp安裝包/jar
cp * /usr/local/tomcat/lib
cd /usr/local/tomcat/lib/
rm -fr memcached-session-manager-tc6-1.6.3.jar
編輯/usr/local/tomcat/conf/context.xml文件,加入session共享配置
vim /usr/local/tomcat/conf/context.xml<Manager
className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.11.4:11211,n2:172.25.11.4:11211"
failoverNodes="n1" (在172.25.11.5上"n1"改為"n2")
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
</Context>
在兩臺服務器安裝memcached并開啟
yum install memcached -y
systemctl start memcached
設置完畢測試:
關閉server4的tomcat
cd /usr/local/tomcat
bin/shutdown.sh
刷新頁面:發現ID沒有變
開啟server4的tomcat同時關閉server5的tomcat
再次刷新頁面
關閉server5的memcached
刷新頁面
開啟server5的memcached同時關閉server4的memcached
刷新頁面
發現ID始終沒有改變,即達到了交叉存儲的目的