lnmp構架——對tomcat詳解

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始終沒有改變,即達到了交叉存儲的目的

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

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

相關文章

Linux 查找文件

find 查找目錄 -name "文件名"find / -name "php.ini"locate 文件名locate php.ini 一&#xff1a;locate命令 locate命令用于查找文件&#xff0c;它比find命令的搜索速度快&#xff0c;它需要一個數據庫&#xff0c;這個數據庫由每天的例行工作&#xff…

Java GregorianCalendar hashCode()方法與示例

GregorianCalendar類的hashCode()方法 (GregorianCalendar Class hashCode() method) hashCode() method is available in java.util package. hashCode()方法在java.util包中可用。 hashCode() method is used to returns the hash code for this GregorianCalendar. hashCode…

python元組為什么不可變_為什么python字符串和元組是不可變的?

我不知道為什么字符串和元組是不可變的&#xff1b;使它們不可變的優點和缺點是什么&#xff1f;除了Python解釋器的內部實現&#xff0c;這種設計在編寫程序上是否有很好的意義&#xff1f;(例如&#xff0c;如果元組和字符串是可變的&#xff0c;會更容易嗎&#xff1f;)如果…

InnoDB事務結構體代碼變量列表

事務結構 struct trx_t 寫在前面 InnoDB是MySQL的一個存儲引擎&#xff0c;支持事務&#xff0c;支持非堵塞的一致性讀&#xff0c;物理存儲結構是Page&#xff0c;每個事務都有回滾日志&#xff0c;重做日志&#xff0c;事務還會有死鎖檢測&#xff0c;各種各樣不同的鎖等等等…

對cookie與session的理解

cookie&#xff1a; 在網站中&#xff0c;http請求是無狀態的。也就是說即使第一次和服務器連接后并且登錄成功后&#xff0c;第二次請求服務器依然不能知道當前請求是哪個用戶。 cookie的出現就是為了解決這個問題&#xff0c; 第一次登錄后服務器返回一些數據&#xff08;…

ubutun 更換網絡源_Ubuntu 更換源

1.切換到root用戶# su root備份源文件 目錄&#xff1a;/etc/apt# cd /etc/apt/# cp sources.list sources.list.bk3.更換源 阿里源 清華源# >sources.list # 清空源# vim sources.list # 選擇一個源&#xff0c;復制進去# apt update # 更新源&#xff0c;需要等幾分鐘# ex…

php : 常用函數

常用函數&#xff1a; <?php /*** 獲取客戶端IP* return [string] [description]*/ function getClientIp() {$ip NULL;if (isset($_SERVER[HTTP_X_FORWARDED_FOR])) {$arr explode(,, $_SERVER[HTTP_X_FORWARDED_FOR]);$pos array_search(unknown,$arr);if(false ! $po…

java日歷類add方法_Java日歷setFirstDayOfWeek()方法與示例

java日歷類add方法日歷類setFirstDayOfWeek()方法 (Calendar Class setFirstDayOfWeek() method) setFirstDayOfWeek() method is available in java.util package. setFirstDayOfWeek()方法在java.util包中可用。 setFirstDayOfWeek() method is used to sets the first day o…

zabbix監控部署 與添加主機

zabbix介紹&#xff1a; zabbix&#xff08;[zbiks]&#xff09;是一個基于WEB界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案。zabbix能監視各種網絡參數&#xff0c;保證服務器系統的安全運營&#xff1b;并提供靈活的通知機制以讓系統管理員快速定位/解決…

線段樹 洛谷 p1531 I hate it(I hate it too)

這里寫鏈接內容 線段樹模板 字符串是一個很詭異的問題。。。。 #include<cstdio> #include<iostream> #include<string> #define q 200000 using namespace std; int a[q5],s[q<<25]; void bu(int o,int l,int r)//建樹 {if(lr){s[o]a[r];} else{int…

打開是什么樣子的圖片_情侶頭像 | 無論是什么樣子的你 我都好喜歡

點擊【情侶圖片大全】- 右上角找到【…】立刻設我為星標/置頂 - 不迷路哦情侶圖片大全“時光真瘋狂&#xff0c;我一路執迷與匆忙”情侶/閨蜜/動漫/閨蜜網名長按圖片保存 點擊圖片放大圖片高清&#xff0c;建議在 W i f i 下瀏覽這個世界是多么神奇我竟然遇見了你無論是什么…

Java File類File [] listFiles()方法(帶示例)

File類File [] listFiles() (File Class File[] listFiles()) This method is available in package java.io.File.listFiles(). 軟件包java.io.File.listFiles()中提供了此方法。 This method is used to return the names of all the files in the form of an array of files…

zabbix監控平臺添加服務(http,nginx,mysql)

1 . 監控httpd服務&#xff1a; 首先確保已經搭建zabbix監控平臺&#xff0c;并且將需要監控的主機已經添加。 對主機server2 上的http服務進行監控&#xff0c;首先確保server2主機安裝了http服務。 使用http在zabbix中自帶監控模版 點擊配置->主機->server2->模…

java為什么要重寫hashCode和equals方法

如果不被重寫&#xff08;原生&#xff09;的hashCode和equals是什么樣的&#xff1f;不被重寫&#xff08;原生&#xff09;的hashCode值是根據內存地址換算出來的一個值。 不被重寫&#xff08;原生&#xff09;的equals方法是嚴格判斷一個對象是否相等的方法&#xff0…

stl中map函數_map :: max_size()函數,以及C ++ STL中的Example

stl中map函數C STL映射:: max_size() (C STL map::max_size() ) It returns the maximum number of elements the container(map) is able to hold but at runtime, the size of the container may be limited to a value smaller than specified by max_size() by the amount…

arduino 藍牙示例_Arduino簡單實例之八_藍牙模塊

1) 說明&#xff1a;藍牙模塊用于和手機或其它帶藍牙的設備通訊。藍牙設備分為主從兩種模式&#xff0c;作為主設備時&#xff0c;它查找和連接其它設備&#xff1b;作為從設備時只能被只它設備連接&#xff1b;通訊模式分透明傳輸和AT命令模式。最好購買主從一體的藍牙模…

zabbix使用JMX監控tomcat

JMX 全稱是Java Management Extensions,即Java管理擴展。Java程序會開放一些端口&#xff0c;用來獲取運行狀況。 從Zabbix2.0開始&#xff0c;內置了監控JMX的功能,叫做"Zabbix Java Gateway ",在Zabbix Serve上會啟動名為"Zabbix Java Gateway "的進程&…

自定義控件添加屬性_|AutoCAD LT 2019 Mac自定義功能區的方法

AutoCAD LT是一款非常好用的CAD三維設計繪圖軟件&#xff0c;最新版本2019擁有改進的桌面、新應用實現跨設備工作流&#xff0c;以及DWG比較等新功能&#xff0c;并且AutoCAD LT 2019 Mac可以根據你的需要和工作習慣來自定義功能區&#xff0c;下面為大家帶來自定義功能區的詳細…

操作系統中的文件系統和訪問方法

文件 (File) A file is basically a sequence of bytes organized into blocks that are understandable by any machines. In other words, the collection of related information that is stored in a secondary storage device is also called a file. The file is a colle…

centos7鏡像加速_docker 鏡像加速CentOS7詳細介紹

前言在Docker Hub官網上注冊帳號&#xff0c;即可下載使用倉庫里的全部的docker鏡像。而因為網絡原因&#xff0c;國內的開發者沒辦法流暢的下載鏡像&#xff0c;經常會出現下載中斷的錯誤。解決方法就是使用國內的容器Hub加速服務&#xff0c;本質就是更改pull優先級較高的服務…