文章目錄
-
- 一、Nginx 負載均衡實作原理:
-
- (1)Nginx 靜态處理優勢
- (2)Tomcat 主要目錄
- (3)Nginx 應用
- (4)動靜分離原理
- 二、實驗案例:
-
- 第一步:搭建 Nginx
- 第二步:部署兩台 Tomcat
- 第三步:Tomcat 中建立測試頁面
- 第四步:修改 Nginx 配置檔案,添加伺服器池
- 第五步:用戶端測試
一、Nginx 負載均衡實作原理:
Nginx 實作負載均衡是通過反向代理來實作的。
(1)Nginx 靜态處理優勢
- Nginx 處理靜态頁面的效率遠高于 Tomcat 的處理能力;
- 如果 Tomcat 的請求量為 1000次,則 Nginx 的請求量為 6000次;
- Tomcat 每秒的吞吐量為 0.6 M,Nginx 的每秒吞吐量為 3.6M;
- Nginx 處理靜态資源的能力是 Tomcat 處理的6倍,優勢很大。
(2)Tomcat 主要目錄
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPR10MNR1T3FFVOBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLyATO2EDM0gTMyAjMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
(3)Nginx 應用
1、nginx是一款非常優秀的 HTTP 伺服器軟體:
- 支援高達 50000個并發連接配接數的響應;
- 擁有強大的靜态資源處理能力;
- 運作穩定;
- 記憶體、CPU 等系統資源消耗非常低。
2、目前已有很多大型網站都應用 Nginx 伺服器作為後端網站程式的反向代理及負載均衡器,提升整個站點的負載并發能力。
(4)動靜分離原理
1、服務端接受來自用戶端的請求中,既有靜态資源也有動态資源。
2、設定 nginx 處理靜态圖檔,後端 Tomcat 處理動态頁面
- 修改 Tomcat 端 jsp 檔案,指定圖檔檔案;
- 修改 nginx 配置檔案,添加正則處理圖檔;
- 建立目錄并添加圖檔(注意項目名稱需要和 Java 項目名稱相同)
- 重新開機 nginx;
- 浏覽器通路測試檢視圖檔是否添加;
- 分别在 nginx 伺服器和 Tomcat 伺服器檢視日志檔案
二、實驗案例:
###實驗拓撲圖###
(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 環境
1、安裝 jdk
rpm -ivh jdk-8u201-linux-x64.rpm
安裝後的位置在:/usr/java/
2、配置環境變量
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
3、使用 java -version 指令檢查是否已安裝成功
(2)安裝和啟動 Tomcat
1、解壓縮包到指定路徑,/usr/local/
tar zxvf apache-tomcat-9.0.16.tar.gz -C /usr/local/
2、解壓完成後,生成 apache-tomcat-9.0.16 檔案夾,改名為 Tomcat
mv apache-tomcat-9.0.16/ tomcat
3、為了友善控制 tomcat的開啟和關閉,我們可以建立一個軟連接配接
ln -s /usr/local/tomcat/bin/startup.sh /usr/bin/
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/bin/
4、用 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>
(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
1、添加服務池:
upstream tomcat-server {
server 192.168.220.136:8080 weight=1;
server 192.168.220.137:8080 weight=1;
}
2、在 location 段,添加以下代碼,意為調用服務池(協定,端口等等)
(2)重新開機 nginx 服務
killall -1 nginx
第五步:用戶端測試
這個架構中,nginx 隻作為代理伺服器而存在,我們作為使用者通路網頁,根本就不知道後面是哪一台具體提供服務的伺服器,隻需要将請求發送給 nginx 代理伺服器,由 nginx 代理伺服器,調用背景的Tomcat 給使用者提供回應。
在客戶機浏覽器上通路 nginx 代理伺服器:
我們可以看到,從代理伺服器,可以直接通路到群集Tomcat提供的服務。