您好,登錄后才能下訂單哦!
tomcat+nginx集群是怎樣的,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
內容要點:
一、原理解釋:
(1)動靜分離
(2)正向代理和反向代理
二、實驗示例
一、原理解釋:
(1)動靜分離
為了提高網站的響應速度,減輕程序服務器(Tomcat,Jboss等)的負載,對于靜態資源比如圖片,js,css等文件,我們可以在反向代理服務器中進行緩存,這樣瀏覽器在請求一個靜態資源時,代理服務器就可以直接處理,而不用將請求轉發給后端服務器。用戶請求的動態文件比如servlet,jsp則轉發給Tomcat,Jboss服務器處理,這就是動靜分離。這也是反向代理服務器的一個重要的作用。
(2)正向代理和反向代理
1、正向代理:
解釋:也就是傳說中的代理,他的工作原理就像一個跳板,簡單的說,我是一個用戶,我訪問不了某網站,但是我能訪問一個代理服務器,這個代理服務器呢,他能訪問那個我不能訪問的網站,于是我先連上代理服務器,告訴他我需要那個無法訪問網站的內容,代理服務器去取回來,然后返回給我,從網站的角度,只在代理服務器來取內容的時候有一次記錄,有時候并不知道是用戶的請求,也隱藏了用戶的資料,這取決于代理告不告訴網站。
結論:正向代理是一個位于客戶端和原始服務器(origin server)之間的服務器,為了從原始服務器取得內容,客戶端向代理發送一個請求并指定目標(原始服務器),然后代理向原始服務器轉交請求并將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設置才能使用正向代理。就像要訪問google用***代理***去訪問(用戶知道要訪問真正的服務器)
2、反向代理:
解釋:例用戶訪問 http://www.example.com/readme ,但www.example.com上并不存在readme頁面,他是偷偷從另外一臺服務器上取回來,然后作為自己的內容吐給用戶,但用戶并不知情,這里所提到的 www.example.com 這個域名對應的服務器就設置了反向代理功能。
結論:反向代理正好相反,對于客戶端而言它就像是原始服務器,并且客戶端不需要進行任何特別的設置。客戶端向反向代理 的命名空間(name-space)中的內容發送普通請求,接著反向代理將判斷向何處(原始服務器)轉交請求,并將獲得的內容返回給客戶端,就像這些內容 原本就是它自己的一樣。(用戶不知道要訪問真正的服務器)
Nginx 實現負載均衡就是通過反向代理來實現的
二、實驗示例
實驗環境:
主機 操作系統 IP地址 主要軟件
Nginx服務器 CentOS 7.4x86_64 192.168.109.185 nginx-1.12.0.tar.gz
Tomcat服務器1 CentOS 7.4x86_64 192.168.109.188 apache-tomcat-9.0.16.tar.gz
Tomcat服務器2 CentOS 7.4x86_64 192.168.109.189 apache-tomcat-9.0.16.tar.gz
----------------------------------------------------------------------------------------------------------------------------------------
實驗步驟:
-----------------------------------------------------------------安裝JDK-------------------------------------------------------------------- 將jdk 軟件包上傳到 /root目錄下 安裝jdk [root@localhost ~]# rpm -ivh jdk-8u201-linux-x64.rpm 警告:jdk-8u201-linux-x64.rpm: 頭V3 RSA/SHA256 Signature, 密鑰 ID ec551f03: NOKEY 準備中... ################################# [100%] 正在升級/安裝... 1:jdk1.8-2000:1.8.0_201-fcs ################################# [100%] Unpacking JAR files... tools.jar... plugin.jar... javaws.jar... deploy.jar... rt.jar... jsse.jar... charsets.jar... localedata.jar... ●確認jdk安裝目錄● [root@localhost ~]# cd /usr/java/jdk1.8.0_201-amd64/ [root@localhost jdk1.8.0_201-amd64]# ll 總用量 25980 drwxr-xr-x 2 root root 4096 3月 7 22:09 bin -rw-r--r-- 1 root root 3244 12月 16 03:45 COPYRIGHT drwxr-xr-x 3 root root 132 3月 7 22:09 include -rw-r--r-- 1 root root 5207434 12月 12 17:07 javafx-src.zip drwxr-xr-x 5 root root 185 3月 7 22:09 jre drwxr-xr-x 5 root root 245 3月 7 22:09 lib -rw-r--r-- 1 root root 40 12月 16 03:45 LICENSE drwxr-xr-x 4 root root 47 3月 7 22:09 man -rw-r--r-- 1 root root 159 12月 16 03:45 README.html -rw-r--r-- 1 root root 424 12月 16 03:45 release -rw-r--r-- 1 root root 21103945 12月 16 03:45 src.zip -rw-r--r-- 1 root root 108109 12月 12 17:07 THIRDPARTYLICENSEREADME-JAVAFX.txt -rw-r--r-- 1 root root 155002 12月 16 03:45 THIRDPARTYLICENSEREADME.txt ##設置JDK環境變量### [root@localhost ~]# vi /etc/profile ##末行參數新增# export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64 export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar export PATH=$JAVA_HOME/bin:$PATH [root@localhost ~]# source /etc/profile ##環境變量生效## [root@localhost ~]# java -version ###查看java版本## java version "1.8.0_201" Java(TM) SE Runtime Environment (build 1.8.0_201-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode) ##編輯java基礎腳本,測試環境 [root@localhost profile.d]# cd /opt [root@localhost opt]# ls rh [root@localhost opt]# vim abc.java public class HelloWorld{ public static void main(String[] args){ System.out.println( "Hello, World!" ); } } [root@localhost opt]# javac abc.java #編譯 [root@localhost opt]# ls abc.class abc.java rh [root@localhost opt]# java abc #運行 abc -------------------------------------安裝配置tomcat-------------------------------------------------------------- tar zxvf apache-tomcat-9.0.16.tar.gz -C /opt cd /opt/ ls mv apache-tomcat-9.0.16/ /usr/tomcat8 cd /usr/ ls cd tomcat8/ cd conf/ cd ../bin/ ##開啟tomcat服務 [root@localhost bin]# ./startup.sh Using CATALINA_BASE: /usr/local/tomcat8 Using CATALINA_HOME: /usr/local/tomcat8 Using CATALINA_TMPDIR: /usr/local/tomcat8/temp Using JRE_HOME: /usr/java Using CLASSPATH: /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar Tomcat started. [root@localhost bin]# netstat -natp | grep 8080 ##關閉防火墻 [root@localhost bin]# systemctl disable firewalld.service Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@localhost bin]# systemctl stop firewalld.service [root@localhost bin]# setenforce 0 [root@localhost bin]# ##測試 win10 網頁訪問 http://192.168.109.187:8080 #加入測試頁面 mkdir -pv /web/webapp1 vim /web/webapp1/index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>JSP test1 page</title> </head> <body> <% out.println("Welcome to test site,http://www.test1.com");%> </body> </html> cd ../conf/ vim server.xml <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" > <Context docBase="/web/webapp1" path="" reloadable="false"> </Context> //添加//后兩行 docBase:web應用的文檔基準目錄 reloadable 設置監聽”類“是否變化 path=""設置默認"類" ##啟動服務 cd ../bin/ ./shutdown.sh ./startup.sh ##測試 win10 網頁訪問 http://192.168.109.187:8080 --------------------------------------------安裝另一臺tomcat------------------------------------------ 同樣步驟 #測試網頁改為teas2 與1做區分 <% out.println("Welcome to test site,http://www.test2.com");%> ##測試 win10 網頁訪問 http://192.168.109.187:8080 --------------------------------------------編譯nginx-------------------------------------------------- yum -y install gcc gcc-c++ make pcre-devel zlib-devel openssl-devel cd /opt/nginx-1.12.0 useradd -s /bin/false www [root@localhost nginx-1.12.0]# ./configure \ --prefix=/usr/local/nginx \ --user=www \ --group=www \ --with-file-aio \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --with-http_flv_module \ --with-http_ssl_module make && make install [root@localhost nginx-1.12.0]# cd /usr/local/nginx/ [root@localhost nginx]# cd conf/ [root@localhost conf]# vim nginx.conf keepalive_timeout 65; #gzip on; upstream tomcat-server { server 192.168.109.188:8080 weight=1; #添加 server 192.168.109.189:8080 weight=1; } ... #access_log logs/host.access.log main; location / { root html; index index.html index.htm; proxy_pass http://tomcat-server; #添加此行配置網頁跳轉 } ###啟動服務,關閉防火墻 [root@localhost conf]# cd ../ [root@localhost nginx]# ls conf html logs sbin [root@localhost nginx]# cd sbin/ [root@localhost sbin]# ls nginx [root@localhost sbin]# ./nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful [root@localhost sbin]# ./nginx [root@localhost sbin]# netstat -natp | grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 53555/nginx: master [root@localhost sbin]# systemctl disable firewalld.service Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@localhost sbin]# systemctl stop firewalld.service [root@localhost sbin]# setenforce 0 [root@localhost sbin]# -------------------------------------------------測試------------------------------ win10訪問
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。