文章目錄
1、Nginx 負載均衡實現原理
(1)Nginx 靜態處理優點
(2)Tomcat 主要目錄
(3)Nginx 應用
(4)動靜分離原理
2、實驗案例
第一步:搭建 Nginx
第二步:部署兩臺 Tomcat
第三步:Tomcat 中建立測試頁面
第四步:修改 Nginx 配置文件,添加服務器池
第五步:客戶端測試
1、Nginx 負載均衡實現原理:
Nginx 實現負載均衡是經過反向代理來實現的。
(1)Nginx 靜態處理優點
Nginx 處理靜態頁面的效率遠高於 Tomcat 的處理能力;
若是 Tomcat 的請求量爲 1000次,則 Nginx 的請求量爲 6000次;
Tomcat 每秒的吞吐量爲 0.6 M,Nginx 的每秒吞吐量爲 3.6M;
Nginx 處理靜態資源的能力是 Tomcat 處理的6倍,優點很大。
(2)Tomcat 主要目錄
bin:存放啓動和關閉Tomcat腳本
conf:存放Tomcat不一樣的配置文件
doc:存放Tomcat文檔
lib/japser/common:存放Tomcat運行須要的庫文件
logs:存放Tomcat執行時的LOG文件
src:存放Tomcat的源代碼
webapps:Tomcat的主要Web發佈目錄
work:存放jsp編譯後產生的class文件
(3)Nginx 應用
一、nginx是一款很是優秀的 HTTP 服務器軟件:
支持高達 50000個併發鏈接數的響應;
擁有強大的靜態資源處理能力;
運行穩定;
內存、CPU 等系統資源消耗很是低。
二、目前已有不少大型網站都應用 Nginx 服務器做爲後端網站程序的反向代理及負載均衡器,提高整個站點的負載併發能力。
(4)動靜分離原理
一、服務端接受來自客戶端的請求中,既有靜態資源也有動態資源。
二、設置 nginx 處理靜態圖片,後端 Tomcat 處理動態頁面
修改 Tomcat 端 jsp 文件,指定圖片文件;
修改 nginx 配置文件,添加正則處理圖片;
建立目錄並添加圖片(注意項目名稱須要和 Java 項目名稱相同)
重啓 nginx;
瀏覽器訪問測試查看圖片是否添加;
分別在 nginx 服務器和 Tomcat 服務器查看日誌文件
2、實驗案例:
實驗拓撲圖
(1)網絡圖總覽:
(2)具體案例實驗:
角色 IP地址
Nginx 192.168.220.131
Tomcat01 192.168.220.136
Tomcat02 192.168.220.137
實驗環境說明:
準備三臺虛擬機,一臺做爲 nginx 代理服務器,用於接收用戶的訪問請求,兩臺 Tomcat 服務器(羣集);
nginx 將客戶端的請求,轉發給後臺的多臺 Tomcat 服務器處理,Tomcat 將請求迴應,在經過代理服務器發給客戶端;
實驗驗證:客戶端只須要在瀏覽器上訪問代理服務器的地址,不須要訪問後臺的具體 Tomcat,就能訪問到網頁信息。
第一步:搭建 Nginx
搭建nginx,以前博客有詳細介紹。
第二步:部署兩臺 Tomcat
(1)配置 JAVA 環境
一、安裝 jdk
rpm -ivh jdk-8u201-linux-x64.rpm
安裝後的位置在:/usr/java/
二、配置環境變量
vim /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
使環境變量生效:
source /etc/profile
三、使用 java -version 命令檢查是否已安裝成功
(2)安裝和啓動 Tomcat
一、解壓縮包到指定路徑,/usr/local/
tar zxvf apache-tomcat-9.0.16.tar.gz -C /usr/local/
二、解壓完成後,生成 apache-tomcat-9.0.16 文件夾,更名爲 Tomcat
mv apache-tomcat-9.0.16/ tomcat
三、爲了方便控制 tomcat的開啓和關閉,咱們能夠建立一個軟鏈接
ln -s /usr/local/tomcat/bin/startup.sh /usr/bin/
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/bin/
四、用 startup.sh 腳本開啓tomcat
第三步:Tomcat 中建立測試頁面
(1)建立目錄
mkdir -p /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>
)html
(2)指定站點
目錄:/usr/local/tomcat/conf
vim server.xml
添加如下代碼:
<Context docBase="/web/webapp1" path="" reloadable="false">
</Context>
(3)回到 bin/ 目錄下,再從新啓動一下 Tomcat
./shutdown.sh
./startup.sh
(4)瀏覽器訪問一下網頁,檢查是否成功
(5)第二臺 Tomcat 部署和第一臺如出一轍,可是爲了頁面顯示區別,在 /web/webapp1/index.jsp 文件中,稍做修改,將 test1 改成 test2
注意:
在企業網中,羣集中的 Tomcat 網站內容是如出一轍的,客戶不管訪問到哪一個Tomcat,提供的網站都是一致的。可是這邊,爲了展現實驗效果,站點內容不同,是爲了區分在客戶端可以看出是哪一個Tomcat 提供了服務迴應。
第四步:修改 Nginx 配置文件,添加服務器池
(1)文件位置:/usr/local/nginx/conf/nginx.conf
一、添加服務池:
upstream tomcat-server {
server 192.168.220.136:8080 weight=1;
server 192.168.220.137:8080 weight=1;
}
二、在 location 段,添加如下代碼,意爲調用服務池(協議,端口等等)
proxy_pass http://tomcat-server;
(2)重啓 nginx 服務
killall -1 nginx
第五步:客戶端測試
這個架構中,nginx 只做爲代理服務器而存在,咱們做爲用戶訪問網頁,根本就不知道後面是哪一臺具體提供服務的服務器,只須要將請求發送給 nginx 代理服務器,由 nginx 代理服務器,調用後臺的Tomcat 給用戶提供迴應。
在客戶機瀏覽器上訪問 nginx 代理服務器:
咱們能夠看到,從代理服務器,能夠直接訪問到羣集Tomcat提供的服務。